private void button1_Click(object sender, EventArgs e) { LabelSearchingInProgress.Text = "Scanning..." + Environment.NewLine + Environment.NewLine + "(Window may appear unresponsive)"; LabelSearchingInProgress.Visible = true; LabelSearchingInProgress.Update(); ImportFormListView.BeginUpdate(); System.Threading.Thread.Sleep(500); ImportFormListView.Clear(); ImportProgressbar.Value = 0; ImportProgressbar.Visible = true; GetAddonList(); System.Threading.Thread.Sleep(500); labelImportSelected.Visible = true; LabelSearchingInProgress.Visible = false; ImportFormListView.EndUpdate(); }
async Task APISearchAsync(string url) { try { var baseAddress = new Uri("https://addons-ecs.forgesvc.net"); using (var httpClient = new HttpClient { BaseAddress = baseAddress }) { { using (var response = await httpClient.GetAsync(url)) { string responseHeaders = response.Headers.ToString(); string responseData = await response.Content.ReadAsStringAsync(); dynamic addonResponse = JsonConvert.DeserializeObject(responseData); dynamic item = addonResponse[0]; dynamic correctRelease = null; foreach (dynamic subItem in item.latestFiles) { if (subItem.gameVersionFlavor == Globals.gameFlavor && subItem.releaseType == "1") { correctRelease = subItem; break; } } // XML XDocument importXML = XDocument.Load(@".\Data\import.xml"); importXML.Descendants("config").Last().Add(new XElement("Addon")); importXML.Descendants("Addon").Last().Add(new XElement("ID", (string)item.id)); importXML.Descendants("Addon").Last().Add(new XElement("Name", (string)item.name)); importXML.Descendants("Addon").Last().Add(new XElement("DownloadLink", (string)correctRelease.downloadUrl)); importXML.Descendants("Addon").Last().Add(new XElement("Description", (string)item.summary)); importXML.Descendants("Addon").Last().Add(new XElement("CurrentVersion", "???")); importXML.Descendants("Addon").Last().Add(new XElement("LatestVersion", (string)correctRelease.displayName)); string moduleString = ""; foreach (dynamic module in correctRelease.modules) { moduleString += (module.foldername + ","); } importXML.Descendants("Addon").Last().Add(new XElement("Modules", moduleString.Trim(new Char[] { ',' }))); importXML.Descendants("Addon").Last().Add(new XElement("Website", (string)item.websiteUrl)); importXML.Save(@".\Data\import.xml"); // End XML ListViewItem ResultItem = new ListViewItem(); ResultItem.Text = item.name; ResultItem.SubItems.Add((string)item.summary); if (correctRelease != null) { ResultItem.SubItems.Add((string)correctRelease.displayName); } else { ResultItem.SubItems.Add("***** This addon has no version marked as 'Realease' for " + Globals.gameFlavor + " *****"); } ResultItem.SubItems.Add((string)item.id); if (ImportFormListView.FindItemWithText((string)correctRelease.displayName) == null) { ImportFormListView.Items.Add(ResultItem); } ImportFormListView.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent); ImportFormListView.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent); ImportFormListView.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent); ImportFormListView.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.ColumnContent); } } } } catch (WebException ex) { throw ex; } }