mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 02:55:38 +08:00
chore: 添加 Tencent EdgeOne 备用 CDN
This commit is contained in:
@@ -45,11 +45,7 @@ namespace MaaWpfGui.Constants
|
||||
public const string MapPrts = "https://map.ark-nights.com/areas?coord_override=maa";
|
||||
|
||||
public const string MaaApi = "https://api.maa.plus/MaaAssistantArknights/api/";
|
||||
|
||||
public const string MaaResourceApi = "https://api.maa.plus/MaaAssistantArknights/MaaAssistantArknights/";
|
||||
public const string AnnMirrorResourceApi = "https://maa-ota.annangela.cn/MaaAssistantArknights/MaaAssistantArknights/";
|
||||
public const string S3ResourceApi = "https://s3.maa-org.net:25240/maaassistantarknights/MaaAssistantArknights/MaaAssistantArknights/";
|
||||
public const string R2ResourceApi = "https://maa.r2.imgg.dev/MaaAssistantArknights/MaaAssistantArknights/";
|
||||
public const string MaaApi2 = "https://api2.maa.plus/MaaAssistantArknights/api/";
|
||||
|
||||
public const string QqGroups = "https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html";
|
||||
|
||||
@@ -57,6 +53,7 @@ namespace MaaWpfGui.Constants
|
||||
|
||||
public const string GoogleAdbDownloadUrl = "https://dl.google.com/android/repository/platform-tools-latest-windows.zip";
|
||||
public const string AdbMaaMirrorDownloadUrl = "https://api.maa.plus/MaaAssistantArknights/api/binaries/adb-windows.zip";
|
||||
public const string AdbMaaMirror2DownloadUrl = "https://api2.maa.plus/MaaAssistantArknights/api/binaries/adb-windows.zip";
|
||||
public const string GoogleAdbFilename = "adb-windows.zip";
|
||||
|
||||
private static string Language => ConfigurationHelper.GetGlobalValue(ConfigurationKeys.Localization, LocalizationHelper.DefaultLanguage);
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace MaaWpfGui.Helper
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error("Failed to save response to file: " + e.Message);
|
||||
_logger.Error(e, "Failed to save response to file: ");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace MaaWpfGui.Helper
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error("Failed to get response as stream: " + e.Message);
|
||||
_logger.Error(e, "Failed to get response as stream: ");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,7 @@ namespace MaaWpfGui.Helper
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error("Failed to get response as string: " + e.Message);
|
||||
_logger.Error(e, "Failed to get response as string: ");
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,15 +352,15 @@ namespace MaaWpfGui.Main
|
||||
if (clientType is "" or "Official" or "Bilibili")
|
||||
{
|
||||
// Read resources first, then read cache
|
||||
MoveTasksJson(mainCache);
|
||||
CopyTasksJson(mainCache);
|
||||
loaded = LoadResIfExists(mainRes);
|
||||
loaded &= LoadResIfExists(mainCache);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Read resources first, then read cache
|
||||
MoveTasksJson(mainCache);
|
||||
MoveTasksJson(globalCache);
|
||||
CopyTasksJson(mainCache);
|
||||
CopyTasksJson(globalCache);
|
||||
loaded = LoadResIfExists(mainRes) && LoadResIfExists(mainCache);
|
||||
loaded &= LoadResIfExists(globalResource) && LoadResIfExists(globalCache);
|
||||
}
|
||||
@@ -381,7 +381,7 @@ namespace MaaWpfGui.Main
|
||||
}
|
||||
|
||||
// 新的目录结构为 tasks/tasks.json,api 为了兼容,仍然存在 resource/tasks.json
|
||||
static void MoveTasksJson(string oldPath)
|
||||
static void CopyTasksJson(string oldPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
// but WITHOUT ANY WARRANTY
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
#nullable enable
|
||||
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using MaaWpfGui.Constants;
|
||||
@@ -25,11 +26,26 @@ namespace MaaWpfGui.Services.Web
|
||||
{
|
||||
private const string CacheDir = "cache/";
|
||||
|
||||
public async Task<JObject> RequestMaaApiWithCache(string api)
|
||||
public async Task<JObject?> RequestMaaApiWithCache(string api)
|
||||
{
|
||||
var url = MaaUrls.MaaApi + api;
|
||||
return await RequestWithFallback(api, MaaUrls.MaaApi, MaaUrls.MaaApi2);
|
||||
}
|
||||
|
||||
private async Task<JObject?> RequestWithFallback(string api, string primaryBaseUrl, string? fallbackBaseUrl = null)
|
||||
{
|
||||
var json = await TryRequest(api, primaryBaseUrl);
|
||||
if (json != null || string.IsNullOrEmpty(fallbackBaseUrl))
|
||||
{
|
||||
return json;
|
||||
}
|
||||
|
||||
return await TryRequest(api, fallbackBaseUrl);
|
||||
}
|
||||
|
||||
private async Task<JObject?> TryRequest(string api, string baseUrl)
|
||||
{
|
||||
var url = baseUrl + api;
|
||||
|
||||
// await Instances.HttpService.GetStringAsync(new Uri(url));
|
||||
var response = await ETagCache.FetchResponseWithEtag(url);
|
||||
if (response == null ||
|
||||
response.StatusCode == System.Net.HttpStatusCode.NotModified ||
|
||||
@@ -46,9 +62,9 @@ namespace MaaWpfGui.Services.Web
|
||||
|
||||
try
|
||||
{
|
||||
var json = (JObject)JsonConvert.DeserializeObject(body);
|
||||
var json = (JObject?)JsonConvert.DeserializeObject(body);
|
||||
var cache = CacheDir + api;
|
||||
string directoryPath = Path.GetDirectoryName(cache);
|
||||
string? directoryPath = Path.GetDirectoryName(cache);
|
||||
|
||||
if (!Directory.Exists(directoryPath))
|
||||
{
|
||||
@@ -56,7 +72,6 @@ namespace MaaWpfGui.Services.Web
|
||||
}
|
||||
|
||||
await File.WriteAllTextAsync(cache, body);
|
||||
|
||||
ETagCache.Set(response, url);
|
||||
|
||||
return json;
|
||||
@@ -67,7 +82,7 @@ namespace MaaWpfGui.Services.Web
|
||||
}
|
||||
}
|
||||
|
||||
public JObject LoadApiCache(string api)
|
||||
public JObject? LoadApiCache(string api)
|
||||
{
|
||||
var cache = CacheDir + api;
|
||||
if (!File.Exists(cache))
|
||||
@@ -77,7 +92,7 @@ namespace MaaWpfGui.Services.Web
|
||||
|
||||
try
|
||||
{
|
||||
return (JObject)JsonConvert.DeserializeObject(File.ReadAllText(cache));
|
||||
return (JObject?)JsonConvert.DeserializeObject(File.ReadAllText(cache));
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
@@ -175,7 +175,7 @@ public class VersionUpdateViewModel : Screen
|
||||
private const string InfoRequestUrl = "repos/MaaAssistantArknights/MaaAssistantArknights/releases/tags/";
|
||||
*/
|
||||
|
||||
private const string MaaUpdateApi = "https://api.maa.plus/MaaAssistantArknights/api/version/summary.json";
|
||||
private const string MaaUpdateApi = "version/summary.json";
|
||||
|
||||
private JObject? _latestJson;
|
||||
private JObject? _assetsObject;
|
||||
@@ -868,19 +868,14 @@ public class VersionUpdateViewModel : Screen
|
||||
|
||||
private async Task<CheckUpdateRetT> CheckUpdateByMaaApi()
|
||||
{
|
||||
string? response = await Instances.HttpService.GetStringAsync(new Uri(MaaUpdateApi)).ConfigureAwait(false);
|
||||
JObject json = await Instances.MaaApiService.RequestMaaApiWithCache(MaaUpdateApi);
|
||||
|
||||
if (string.IsNullOrEmpty(response))
|
||||
if (json is null)
|
||||
{
|
||||
_logger.Error("Failed to get update info from Maa API.");
|
||||
return CheckUpdateRetT.FailedToGetInfo;
|
||||
}
|
||||
|
||||
if (JsonConvert.DeserializeObject(response) is not JObject json)
|
||||
{
|
||||
return CheckUpdateRetT.FailedToGetInfo;
|
||||
}
|
||||
|
||||
string versionType = SettingsViewModel.VersionUpdateSettings.VersionType switch
|
||||
{
|
||||
VersionUpdateSettingsUserControlModel.UpdateVersionType.Beta => "beta",
|
||||
|
||||
@@ -1058,11 +1058,21 @@ public class ConnectSettingsUserControlModel : PropertyChangedBase
|
||||
|
||||
if (!File.Exists(MaaUrls.GoogleAdbFilename))
|
||||
{
|
||||
var downloadResult = await Instances.HttpService.DownloadFileAsync(new Uri(MaaUrls.GoogleAdbDownloadUrl), MaaUrls.GoogleAdbFilename);
|
||||
string[] downloadUrls =
|
||||
[
|
||||
MaaUrls.GoogleAdbDownloadUrl,
|
||||
MaaUrls.AdbMaaMirrorDownloadUrl,
|
||||
MaaUrls.AdbMaaMirror2DownloadUrl
|
||||
];
|
||||
|
||||
if (!downloadResult)
|
||||
bool downloadResult = false;
|
||||
foreach (var url in downloadUrls)
|
||||
{
|
||||
downloadResult = await Instances.HttpService.DownloadFileAsync(new Uri(MaaUrls.AdbMaaMirrorDownloadUrl), MaaUrls.GoogleAdbFilename);
|
||||
downloadResult = await Instances.HttpService.DownloadFileAsync(new(url), MaaUrls.GoogleAdbFilename);
|
||||
if (downloadResult)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!downloadResult)
|
||||
|
||||
Reference in New Issue
Block a user