From fc18b19a4b1acfa51a41af9a2d1ee1933cf96837 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Thu, 28 Jul 2022 18:06:45 +0200 Subject: [PATCH] use static files to download from service --- MareSynchronos/MareSynchronos.csproj | 2 +- MareSynchronos/UI/CompactUI.cs | 2 +- .../WebAPI/ApIController.Functions.Files.cs | 22 +++++++++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index ba7d61c..61027d3 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.2.9.0 + 0.2.10.0 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/UI/CompactUI.cs b/MareSynchronos/UI/CompactUI.cs index 2b4b13d..9408d22 100644 --- a/MareSynchronos/UI/CompactUI.cs +++ b/MareSynchronos/UI/CompactUI.cs @@ -33,7 +33,7 @@ namespace MareSynchronos.UI private float _windowContentWidth = 0; public CompactUi(WindowSystem windowSystem, - UiShared uiShared, Configuration configuration, ApiController apiController) : base("Mare Synchronos " + Assembly.GetExecutingAssembly().GetName().Version) + UiShared uiShared, Configuration configuration, ApiController apiController) : base("Mare Synchronos " + Assembly.GetExecutingAssembly().GetName().Version + "###MareSynchronosMainUI") { Logger.Verbose("Creating " + nameof(CompactUi)); diff --git a/MareSynchronos/WebAPI/ApIController.Functions.Files.cs b/MareSynchronos/WebAPI/ApIController.Functions.Files.cs index 1d173f4..01283f5 100644 --- a/MareSynchronos/WebAPI/ApIController.Functions.Files.cs +++ b/MareSynchronos/WebAPI/ApIController.Functions.Files.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; @@ -35,14 +36,21 @@ namespace MareSynchronos.WebAPI private async Task DownloadFile(int downloadId, string hash, CancellationToken ct) { - var reader = _mareHub!.StreamAsync(Api.StreamFileDownloadFileAsync, hash, ct); - string fileName = Path.GetTempFileName(); - await using var fs = File.OpenWrite(fileName); - await foreach (var data in reader.WithCancellation(ct)) + using WebClient wc = new(); + wc.DownloadProgressChanged += (s, e) => { - CurrentDownloads[downloadId].Single(f => f.Hash == hash).Transferred += data.Length; - await fs.WriteAsync(data, ct); - } + CurrentDownloads[downloadId].Single(f => f.Hash == hash).Transferred = e.BytesReceived; + }; + + string fileName = Path.GetTempFileName(); + var baseUri = new Uri(ApiUri.Replace("wss", "https"), UriKind.Absolute); + var relativeUri = new Uri("cache/" + hash, UriKind.Relative); + var fileUri = new Uri(baseUri, relativeUri); + + await wc.DownloadFileTaskAsync(fileUri, fileName); + + CurrentDownloads[downloadId].Single(f => f.Hash == hash).Transferred = CurrentDownloads[downloadId].Single(f => f.Hash == hash).Total; + return fileName; }