Exemple #1
0
        internal void DownloadModData()
        {
            if (ModIds.Count == 0)
                return;

            Mods = WorkshopItemInfo.GetWorkshopItemInfo(ModIds);
        }
Exemple #2
0
        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;
            }
        }