Terraria.ModLoader.UI.UIModDownloadItem.DownloadMod C# (CSharp) Method

DownloadMod() private method

private DownloadMod ( UIMouseEvent evt, UIElement listeningElement ) : void
evt Terraria.UI.UIMouseEvent
listeningElement Terraria.UI.UIElement
return void
        internal void DownloadMod(UIMouseEvent evt, UIElement listeningElement)
        {
            Main.PlaySound(12, -1, -1, 1);
            try
            {
                using (WebClient client = new WebClient())
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
                    Interface.modBrowser.selectedItem = this;
                    Interface.downloadMod.SetDownloading(displayname);
                    Interface.downloadMod.SetCancel(client.CancelAsync);
                    client.DownloadProgressChanged += (s, e) =>
                    {
                        Interface.downloadMod.SetProgress(e);
                    };
                    client.DownloadFileCompleted += (s, e) =>
                    {
                        Main.menuMode = Interface.modBrowserID;
                        if (e.Error != null)
                        {
                            if (e.Cancelled)
                            {
                            }
                            else
                            {
                                HttpStatusCode httpStatusCode = GetHttpStatusCode(e.Error);
                                if (httpStatusCode == HttpStatusCode.ServiceUnavailable)
                                {
                                    Interface.errorMessage.SetMessage("The Mod Browser server is under heavy load. Try again later.");
                                    Interface.errorMessage.SetGotoMenu(0);
                                    Interface.errorMessage.SetFile(ErrorLogger.LogPath);
                                    Main.gameMenu = true;
                                    Main.menuMode = Interface.errorMessageID;
                                }
                                else
                                {
                                    Interface.errorMessage.SetMessage("Unknown Mod Browser Error. Try again later.");
                                    Interface.errorMessage.SetGotoMenu(0);
                                    Interface.errorMessage.SetFile(ErrorLogger.LogPath);
                                    Main.gameMenu = true;
                                    Main.menuMode = Interface.errorMessageID;
                                }
                            }
                        }
                        else if (!e.Cancelled)
                        {
                            // Downloaded OK
                            File.Copy(ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod", ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".tmod", true);
                            if (!update)
                            {
                                Interface.modBrowser.aNewModDownloaded = true;
                                string path = ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".enabled";
                                using (StreamWriter writer = File.CreateText(path))
                                {
                                    writer.Write("false");
                                }
                            }
                            else
                            {
                                Interface.modBrowser.aModUpdated = true;
                            }
                            RemoveChild(button2);
                        }
                        // Clean up: Delete temp
                        File.Delete(ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod");
                    };
                    client.DownloadFileAsync(new Uri(download), ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod");
                    //client.DownloadFileAsync(new Uri(download), ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".tmod");
                }
                Main.menuMode = Interface.downloadModID;
            }
            catch (WebException e)
            {
                ErrorLogger.LogModBrowserException(e);
            }
        }