diff --git a/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/ExceptionRecorder.cs b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/ExceptionRecorder.cs index db38e8d7..dbd49257 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/ExceptionRecorder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/ExceptionRecorder.cs @@ -34,7 +34,7 @@ internal sealed partial class ExceptionRecorder #if RELEASE #pragma warning disable VSTHRD002 serviceProvider - .GetRequiredService() + .GetRequiredService() .UploadLogAsync(serviceProvider, e.Exception) .GetAwaiter() .GetResult(); diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaGachaLogClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/GachaLog/HomaGachaLogClient.cs similarity index 99% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaGachaLogClient.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/GachaLog/HomaGachaLogClient.cs index 34eb1601..b7c97272 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaGachaLogClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/GachaLog/HomaGachaLogClient.cs @@ -7,7 +7,7 @@ using Snap.Hutao.Web.Hutao.GachaLog; using Snap.Hutao.Web.Response; using System.Net.Http; -namespace Snap.Hutao.Web.Hutao; +namespace Snap.Hutao.Web.Hutao.GachaLog; /// /// 胡桃祈愿记录API客户端 diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestData.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestData.cs new file mode 100644 index 00000000..7b76147d --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestData.cs @@ -0,0 +1,19 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hutao.Geetest; + +internal sealed class GeetestData +{ + [JsonPropertyName("gt")] + public string Gt { get; set; } = default!; + + [JsonPropertyName("challenge")] + public string Challenge { get; set; } = default!; + + [JsonPropertyName("validate")] + public string Validate { get; set; } = default!; + + [JsonPropertyName("type")] + public string Type { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestResponse.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestResponse.cs new file mode 100644 index 00000000..9881e435 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/GeetestResponse.cs @@ -0,0 +1,19 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hutao.Geetest; + +internal sealed class GeetestResponse +{ + [JsonPropertyName("code")] + public int Code { get; set; } + + [JsonPropertyName("info")] + public string Info { get; set; } = default!; + + [JsonPropertyName("data")] + public GeetestData Data { get; set; } = default!; + + [JsonPropertyName("times")] + public int Times { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/HomaGeetestClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/HomaGeetestClient.cs new file mode 100644 index 00000000..ad585add --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Geetest/HomaGeetestClient.cs @@ -0,0 +1,32 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient; +using Snap.Hutao.Service.Hutao; +using Snap.Hutao.Web.Hutao.GachaLog; +using Snap.Hutao.Web.Response; +using System.Net.Http; + +namespace Snap.Hutao.Web.Hutao.Geetest; + +[ConstructorGenerated(ResolveHttpClient = true)] +[HttpClient(HttpClientConfiguration.Default)] +internal sealed partial class HomaGeetestClient +{ + private readonly HttpClient httpClient; + private readonly JsonSerializerOptions options; + private readonly ILogger logger; + private readonly HutaoUserOptions hutaoUserOptions; + + public async ValueTask VerifyAsync(string gt, string challenge, CancellationToken token) + { + httpClient.DefaultRequestHeaders.Authorization = new("Bearer", hutaoUserOptions.Token); + + GeetestResponse? resp = await httpClient + .TryCatchGetFromJsonAsync(HutaoEndpoints.GeetestVerify(gt,challenge), options, logger, token) + .ConfigureAwait(false); + + ArgumentNullException.ThrowIfNull(resp); + return resp; + } +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaLogUploadClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Log/HomaLogUploadClient.cs similarity index 97% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaLogUploadClient.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Log/HomaLogUploadClient.cs index 50d79f6c..c362905c 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HomaLogUploadClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Log/HomaLogUploadClient.cs @@ -7,7 +7,7 @@ using Snap.Hutao.Web.Hutao.Log; using Snap.Hutao.Web.Response; using System.Net.Http; -namespace Snap.Hutao.Web.Hutao; +namespace Snap.Hutao.Web.Hutao.Log; /// /// 胡桃日志客户端 diff --git a/src/Snap.Hutao/Snap.Hutao/Web/HutaoEndpoints.cs b/src/Snap.Hutao/Snap.Hutao/Web/HutaoEndpoints.cs index a02cefae..5f88e515 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/HutaoEndpoints.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/HutaoEndpoints.cs @@ -18,6 +18,13 @@ internal static class HutaoEndpoints /// public const string StaticHutao = "static.hut.ao"; + #region + public static string GeetestVerify(string gt, string challenge) + { + return $"{HomaSnapGenshinApi}/Geetest/Verify?gt={gt}&challenge={challenge}"; + } + #endregion + #region GachaLog ///