private void RunUpdate() { int current = 0; var request = WebRequest.Create(@"http://api.hyperflux.moe/rel/checksum"); request.ContentType = "application/json; charset=utf-8"; using (var response = request.GetResponse()) { using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { JObject obj = JObject.Parse(sr.ReadToEnd()); Checksum[] checksums = { new Checksum(obj["checksums"]["HyperfluxGMD.exe"].ToString()), new Checksum(obj["checksums"]["steam_api.dll"].ToString()) }; foreach (Checksum checksum in checksums) { string fileName = hyperfluxGmd[current]; if (File.Exists(Path.Combine(hyperfluxPath, fileName))) { Checksum newChecksum = checksum; Checksum oldChecksum = Checksum.Get(Path.Combine(hyperfluxPath, fileName)); if (newChecksum.Compare(oldChecksum) == true) { UpdateContents(fileName); } else { UpdateContents(fileName); _items.Enqueue(fileName); } } else { UpdateContents(fileName); _items.Enqueue(fileName); } current++; } DownloadFile(); } } void DownloadFile() { if (_items.Any()) { WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChange); var file = _items.Dequeue(); UpdateContents(file); webClient.DownloadFileAsync(new Uri(@"http://api.hyperflux.moe/rel/file?f=" + file), Path.Combine(hyperfluxPath, file)); return; } this.Dispose(); this.Close(); } void ProgressChange(object sender, DownloadProgressChangedEventArgs e) { ProgressBar.Value = e.ProgressPercentage; } void Complete(object sender, AsyncCompletedEventArgs e) { ProgressBar.Value = 0; current++; DownloadFile(); } void UpdateContents(string fileName) { FileName.Text = @"Downloading: " + fileName; SizeText.Text = current - 1 + " of " + hyperfluxGmd.Length + " files"; SizeText.Update(); FileName.Update(); } }
private void RunUpdate() { int current = 0; var request = WebRequest.Create(@"https://api.hyperflux.moe/rel/checksum"); request.ContentType = "application/json; charset=utf-8"; request.Headers.Add("hyperflux-auth", "Hyperflux Launcher" + Program.version); using (var response = request.GetResponse()) { using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { JObject obj = JObject.Parse(sr.ReadToEnd()); Debug.WriteLine(obj["code"].ToString()); if (obj["code"].ToString() == "-1") { DialogResult dialog = MessageBox.Show("This version of the launcher is out of date! Head to GitHub to get a newer version.", "Tsutsuji Launcher", MessageBoxButtons.OK, MessageBoxIcon.Error); if (dialog == DialogResult.OK) { Application.Exit(); return; } } Checksum[] checksums = { new Checksum(obj["checksums"]["HyperfluxGMD.exe"].ToString()), new Checksum(obj["checksums"]["steam_api.dll"].ToString()), new Checksum(obj["checksums"]["Resources/GJ_GameSheet-uhd.png"].ToString()) }; foreach (Checksum checksum in checksums) { string fileName = hyperfluxGmd[current]; if (File.Exists(Path.Combine(hyperfluxPath, fileName))) { Checksum newChecksum = checksum; Checksum oldChecksum = Checksum.Get(Path.Combine(hyperfluxPath, fileName)); if (newChecksum.Compare(oldChecksum) == true) { UpdateContents(fileName); } else { UpdateContents(fileName); _items.Enqueue(fileName); } } else { UpdateContents(fileName); _items.Enqueue(fileName); } current++; } DownloadFile(); } } void DownloadFile() { if (_items.Any()) { WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChange); var file = _items.Dequeue(); UpdateContents(file); webClient.DownloadFileAsync(new Uri(@"https://api.hyperflux.moe/rel/file?f=" + file), Path.Combine(hyperfluxPath, file)); return; } this.Dispose(); this.Close(); } void ProgressChange(object sender, DownloadProgressChangedEventArgs e) { ProgressBar.Value = e.ProgressPercentage; } void Complete(object sender, AsyncCompletedEventArgs e) { ProgressBar.Value = 0; current++; DownloadFile(); } void UpdateContents(string fileName) { FileName.Text = @"Downloading: " + fileName; SizeText.Text = current - 1 + " of " + hyperfluxGmd.Length + " files"; SizeText.Update(); FileName.Update(); } }