ZeroLauncher/Manager/CloundMananger.cs
2024-03-09 18:29:16 +08:00

83 lines
2.8 KiB
C#

using System.Net.Http;
using System.Net;
using Zerolauncher.Defender;
using Zerolauncher.util;
namespace Zerolauncher.Manager
{
class StaticUrl
{
public const string QMessageMain = "https://sharechain.qq.com/";
public const string MasterMessage = "54aeb77c47b967d22c2c1396d00d91f0";
public const string SummerMessage = "037846c482eddc948612b0d0f8ed98d5";
public const string LoveMessage = "";
}
class UpDateData
{
public static bool state = false;
public static string version = "";
public static string tis = "";
public static string mini_packet_url = "";
public static string full_packet_url = "";
}
class CloundMananger
{
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($"{StaticUrl.QMessageMain}{StaticUrl.MasterMessage}");
}
catch (Exception _ex)
{
CacheSha.errorCode = 1;
return;
}
var responseString = await response.Content.ReadAsStringAsync();
if(!FormatMessage(responseString))
{
CacheSha.errorCode = 2;
}
}
static bool FormatMessage(string message)
{
message = message.Split("<div class=\"note-content\">")[1].Split("</article>")[0].Replace("</div>", "").Replace("\n", "").Replace("\t", "").Replace("\r", "").Replace("'", "");
var arr = message.Split("<div>");
if (arr.Length >= 7 && FormatSha(arr[6], false) && FormatSha(arr[5], true))
{
UpDateData.version = arr[1];
UpDateData.tis = arr[2];
UpDateData.mini_packet_url = arr[3];
UpDateData.full_packet_url = arr[4];
UpDateData.state = true;
return true;
}
return false;
}
static bool FormatSha(string sha0, bool e)
{
if (sha0.Length < 90) return false;
int count;
var sha = SpaceEncoder.Decode(sha0[..86], out count);
if (sha == null)
{
//Console.WriteLine($"faile: {count}");
return false;
}
if (e) CacheSha.PutE(sha);
else CacheSha.PutM(sha);
return true;
}
}
}