feat: Add a mirror for resource OTA

Thanks for annangela
This commit is contained in:
MistEO
2023-10-09 22:41:39 +08:00
parent 50d527fde1
commit 2eb30e2e63
2 changed files with 21 additions and 12 deletions

View File

@@ -43,6 +43,7 @@ namespace MaaWpfGui.Constants
public const string MaaApi = "https://ota.maa.plus/MaaAssistantArknights/api/";
public const string MaaResourceApi = "https://ota.maa.plus/MaaAssistantArknights/MaaAssistantArknights/";
public const string AnnMirrorResourceApi = "https://maa-ota.annangela.cn/MaaAssistantArknights/MaaAssistantArknights/";
public const string QqGroups = "https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html";

View File

@@ -11,7 +11,7 @@ namespace MaaWpfGui.Models
{
public static class ResourceUpdater
{
private static readonly List<string> _maaSingleFiles = new List<string>
private static readonly List<string> _MaaSingleFiles = new List<string>
{
"resource/Arknights-Tile-Pos/overview.json",
"resource/battle_data.json",
@@ -34,7 +34,7 @@ namespace MaaWpfGui.Models
"resource/global/YoStarKR/resource/version.json",
};
private const string MaaDynamicFilesIndex = "resource/dynamic_list.txt";
private static readonly string _MaaDynamicFilesIndex = "resource/dynamic_list.txt";
public enum UpdateResult
{
@@ -63,8 +63,9 @@ namespace MaaWpfGui.Models
{
_updating = false;
var ret2 = await UpdateFilesWithIndex();
var ret1 = await UpdateSingleFiles();
var baseUrl = new Random().Next(5) == 0 ? MaaUrls.MaaResourceApi : MaaUrls.AnnMirrorResourceApi;
var ret2 = await UpdateFilesWithIndex(baseUrl);
var ret1 = await UpdateSingleFiles(baseUrl);
ETagCache.Save();
if (ret1 == UpdateResult.Failed || ret2 == UpdateResult.Failed)
@@ -80,24 +81,27 @@ namespace MaaWpfGui.Models
return UpdateResult.NotModified;
}
private static async Task<UpdateResult> UpdateSingleFiles()
private static async Task<UpdateResult> UpdateSingleFiles(string baseUrl)
{
UpdateResult ret = UpdateResult.NotModified;
foreach (var file in _maaSingleFiles)
foreach (var file in _MaaSingleFiles)
{
var sRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, file, file);
var sRet = await UpdateFileWithETag(baseUrl, file, file);
switch (sRet)
{
case UpdateResult.Failed:
ret = UpdateResult.Failed;
break;
case UpdateResult.Success:
ETagCache.Save();
break;
case UpdateResult.NotModified:
break;
default:
throw new ArgumentOutOfRangeException();
}
@@ -113,24 +117,28 @@ namespace MaaWpfGui.Models
// 地图文件、掉落材料的图片、基建技能图片
// 这些文件数量不固定,需要先获取索引文件,再根据索引文件下载
private static async Task<UpdateResult> UpdateFilesWithIndex()
private static async Task<UpdateResult> UpdateFilesWithIndex(string baseUrl)
{
var indexSRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, MaaDynamicFilesIndex, MaaDynamicFilesIndex);
var indexSRet = await UpdateFileWithETag(baseUrl, _MaaDynamicFilesIndex, _MaaDynamicFilesIndex);
switch (indexSRet)
{
case UpdateResult.Failed:
return UpdateResult.Failed;
case UpdateResult.Success:
ETagCache.Save();
break;
case UpdateResult.NotModified:
break;
default:
throw new ArgumentOutOfRangeException();
}
var indexPath = Path.Combine(Environment.CurrentDirectory, MaaDynamicFilesIndex);
if (!File.Exists(indexPath)) {
var indexPath = Path.Combine(Environment.CurrentDirectory, _MaaDynamicFilesIndex);
if (!File.Exists(indexPath))
{
return UpdateResult.Failed;
}
@@ -154,7 +162,7 @@ namespace MaaWpfGui.Models
return;
}
var sRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, file, file);
var sRet = await UpdateFileWithETag(baseUrl, file, file);
if (sRet == UpdateResult.Failed)
{
ret = UpdateResult.Failed;