using System.IO; using System.Net; using System.Net.Http; using Zerolauncher.Defender; namespace Zerolauncher.Manager { class UpDateManager { public static async Task TakeQMessage() { var client = new HttpClient(); client.DefaultRequestVersion = HttpVersion.Version20; client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower; client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2)"); HttpResponseMessage response; try { client.Timeout = TimeSpan.FromMinutes(3); response = await client.GetAsync($"https://sharechain.qq.com/13111bbd6ffbffa3057878431bef103e"); }catch (Exception _ex) { EngineCacheSha.errorCode = 1; return; } var responseString = await response.Content.ReadAsStringAsync(); responseString = responseString.Split("
")[1].Split("")[0].Replace("
", "").Replace("\n", "").Replace("\t", "").Replace("\r", "").Replace("'", ""); var arr = responseString.Split("
").Last(); if (arr.Length < 90) { EngineCacheSha.errorCode = 2; return; } int count; var sha = SpaceEncoder.Decode(arr[..86], out count); if (sha == null) { //Console.WriteLine($"faile: {count}"); EngineCacheSha.errorCode = 2; return; } EngineCacheSha.Put(sha); } public async Task GetTask() { var client = new HttpClient(); client.DefaultRequestVersion = HttpVersion.Version20; client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower; client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2)"); var response = await client.GetAsync("https://sharechain.qq.com/13111bbd6ffbffa3057878431bef103e"); var responseString = await response.Content.ReadAsStringAsync(); if (responseString.Contains("
")) { responseString = responseString.Split("
")[1].Split("")[0].Replace("
", "").Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", "").Replace("'", ""); Console.WriteLine(responseString.Replace("
", "\n")); var arr = responseString.Split("
"); int main_version, engine_version, sa_version; if (int.TryParse(arr[0], out main_version) && int.TryParse(arr[1], out engine_version)) { } } // todo open faile update dialog } public static void DownLoad(string Url, string FileName) { bool Value = false; WebResponse response = null; Stream stream = null; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); response = request.GetResponse(); stream = response.GetResponseStream(); if (!response.ContentType.ToLower().StartsWith("text/")) { Value = SaveBinaryFile(response, FileName); } } catch (Exception err) { string aa = err.ToString(); } } private static bool SaveBinaryFile(WebResponse response, string FileName) { bool Value = true; byte[] buffer = new byte[1024]; try { if (File.Exists(FileName)) File.Delete(FileName); Stream outStream = File.Create(FileName); Stream inStream = response.GetResponseStream(); int l; do { l = inStream.Read(buffer, 0, buffer.Length); if (l > 0) outStream.Write(buffer, 0, l); } while (l > 0); outStream.Close(); inStream.Close(); } catch { Value = false; } return Value; } } }