internal void DownloadModData() { if (ModIds.Count == 0) return; Mods = WorkshopItemInfo.GetWorkshopItemInfo(ModIds); }
public static WorkshopItemInfo GetWorkshopItemInfo(List<long> itemIds) { try { var request = (HttpWebRequest)HttpWebRequest.Create(GET_PUBLISHED_FILE_DETAILS_URL); request.Method = "POST"; request.Timeout = 10000; request.Accept = "application/xml"; request.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US"); request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip"); var data = new StringBuilder(); data.AppendFormat("key={0}&format=xml&itemcount={1}", API_KEY, itemIds.Count); for (int i = 0; i < itemIds.Count; ++i) data.AppendFormat("&publishedfileids[{0}]={1}", i, itemIds[i]); var encoding = new UTF8Encoding(false); var raw = encoding.GetBytes(data.ToString()); request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.ContentLength = raw.Length; using (var stream = request.GetRequestStream()) { stream.Write(raw, 0, raw.Length); stream.Flush(); } var settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse; XmlDocument resp; using (var response = request.GetResponse()) using (var stream = response.GetResponseStream()) { if (response.Headers[HttpResponseHeader.ContentEncoding] == "gzip") { using (var gzip = new GZipStream(stream, CompressionMode.Decompress)) using (var reader = XmlReader.Create(gzip, settings)) { resp = new XmlDocument(); resp.Load(reader); } } else { using (var reader = XmlReader.Create(stream, settings)) { resp = new XmlDocument(); resp.Load(reader); } } } var result = new WorkshopItemInfo(); if (result.ReadResponse(resp)) return result; return null; } catch (Exception) { return null; } }