From 1a300e8b9ccecf7b1b26816c2153b28d7d9f839b Mon Sep 17 00:00:00 2001 From: Lightczx <1686188646@qq.com> Date: Mon, 11 Mar 2024 11:47:43 +0800 Subject: [PATCH] fix predownload latest path and name --- .../Resource/LatestPackageExtension.cs | 21 +++++++++++++++++++ .../SdkStatic/Hk4e/Launcher/ResourceClient.cs | 16 +++++++------- 2 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs new file mode 100644 index 00000000..b470b1b1 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs @@ -0,0 +1,21 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using System.Text; + +namespace Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher.Resource; + +internal static class LatestPackageExtension +{ + public static void Patch(this LatestPackage latest) + { + StringBuilder pathBuilder = new(); + foreach (PackageSegment segment in latest.Segments) + { + pathBuilder.AppendLine(segment.Path); + } + + latest.Path = pathBuilder.ToStringTrimEndReturn(); + latest.Name = latest.Segments[0].Path[..^4]; // .00X + } +} \ 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 94c7c03d..ca3cc16f 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 @@ -46,18 +46,16 @@ internal sealed partial class ResourceClient .TryCatchSendAsync>(httpClient, logger, token) .ConfigureAwait(false); - // 补全缺失的信息 + // 最新版完整包 if (resp is { Data.Game.Latest: LatestPackage latest }) { - StringBuilder pathBuilder = new(); - foreach (PackageSegment segment in latest.Segments) - { - pathBuilder.AppendLine(segment.Path); - } + latest.Patch(); + } - latest.Path = pathBuilder.ToStringTrimEndReturn(); - string path = latest.Segments[0].Path[..^4]; // .00X - latest.Name = Path.GetFileName(path); + // 预下载完整包 + if (resp is { Data.PreDownloadGame.Latest: LatestPackage preDownloadLatest }) + { + preDownloadLatest.Patch(); } return Response.Response.DefaultIfNull(resp);