diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Game.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Game.cs index bbd56619..0fe77bbe 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Game.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Game.cs @@ -13,7 +13,7 @@ internal sealed class Game /// 最新客户端 /// [JsonPropertyName("latest")] - public Package Latest { get; set; } = default!; + public LatestPackage Latest { get; set; } = default!; /// /// 相对于当前版本的之前版本的差异文件(非预下载) diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/LatestPackage.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/LatestPackage.cs new file mode 100644 index 00000000..b737ac49 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/LatestPackage.cs @@ -0,0 +1,10 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher; + +internal sealed class LatestPackage : Package +{ + [JsonPropertyName("segments")] + public List Segments { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Package.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Package.cs index 821e67f5..200522f5 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Package.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Package.cs @@ -45,8 +45,6 @@ internal class Package : PathMd5 [JsonPropertyName("decompressed_path")] public string DecompressedPath { get; set; } = default!; - // We don't want to support `segments` downloading - /// /// 包大小 bytes /// diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/PackageSegment.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/PackageSegment.cs new file mode 100644 index 00000000..77acd3a4 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/PackageSegment.cs @@ -0,0 +1,11 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher; + +internal sealed class PackageSegment : PathMd5 +{ + [JsonPropertyName("package_size")] + [JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)] + public long PackageSize { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs index 9fe44584..03e2d4fb 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs @@ -4,6 +4,7 @@ using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient; using Snap.Hutao.Service.Game; using Snap.Hutao.Web.Response; +using System.IO; using System.Net.Http; namespace Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher; @@ -36,6 +37,13 @@ internal sealed partial class ResourceClient .TryCatchGetFromJsonAsync>(url, options, logger, token) .ConfigureAwait(false); + // 补全缺失的信息 + if (response is { Data.Game.Latest: LatestPackage latest }) + { + latest.Path = latest.Segments[0].Path[..^4]; + latest.Name = Path.GetFileName(latest.Path); + } + return Response.Response.DefaultIfNull(response); } } \ No newline at end of file