コード例 #1
0
ファイル: Updater.cs プロジェクト: Coppertine/tsutsuji
        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();
            }
        }
コード例 #2
0
ファイル: Updater.cs プロジェクト: hyperflux-labs/tsutsuji
        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();
            }
        }