private void Http_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
try
{
string response = e.Result;
JArray result = JArray.Parse(response);
List<Asset> asserts = new List<Asset>();
bool hasBeta = false;
bool hasStable = false;
if (result != null)
{
foreach (JObject release in result)
{
if ((bool)release["prerelease"])
{
if (!hasBeta)
{
Asset ass = new Asset();
ass.Parase(release);
if (ass.IsNewVersion(Version))
{
asserts.Add(ass);
hasBeta = true;
}
}
}
else
{
Asset ass = new Asset();
ass.Parase(release);
if (ass.IsNewVersion(Version))
{
asserts.Add(ass);
hasStable = true;
}
break;
}
}
}
if (asserts.Count != 0)
{
foreach (Asset ass in asserts)
{
Log.Info($"发现新版本{ass.name}" + (ass.prerelease ? "beta" : ""));
}
int stable = asserts.Count - 1;
string changelog = "更新日志获取失败惹 T T";
try
{
changelog = BiliInterface.GetHtml("https://raw.githubusercontent.com/SkiTiSu/BiliRanking/master/BiliRanking/changelog.txt");
changelog = changelog.Substring(0, changelog.IndexOf("\n\n"));
}
catch
{
Log.Warn("更新日志获取失败");
}
if (!checkBeta && hasStable)
{
DialogResult res = MessageBox.Show($"发现新版本{asserts[stable].name}啦\r\n最近{changelog}\r\n\r\n马上更新嘛?", @"\(^o^)/更新啦", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
StartDownload(asserts[stable]);
}
else
{
Log.Info("更新被取消");
}
}
else if(checkBeta && (hasBeta || hasStable))
{
DialogResult res = MessageBox.Show($"发现新版本{asserts[0].name}beta啦\r\n最近{changelog}\r\n\r\n马上更新嘛?", @"\(^o^)/更新啦", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
StartDownload(asserts[0]);
}
else
{
Log.Info("更新被取消");
}
}
else
{
Log.Info("没有符合要求的更新");
}
}
else
{
Log.Info("没有发现新版本");
}
}
catch (Exception ex)
{
Log.Error("检查更新失败 - 解析json失败");
Log.Debug(ex.Message);
}
}