From a15a6e6fe75e3c4b02f68a0a1e26ed42de711bda Mon Sep 17 00:00:00 2001 From: Kamushek Date: Sun, 23 Aug 2020 14:07:22 +0300 Subject: [PATCH] IProgress (#1945) --- ArchiSteamFarm/ASF.cs | 9 ++++++++- ArchiSteamFarm/WebBrowser.cs | 9 ++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ArchiSteamFarm/ASF.cs b/ArchiSteamFarm/ASF.cs index 2ea857632..23d6ea802 100644 --- a/ArchiSteamFarm/ASF.cs +++ b/ArchiSteamFarm/ASF.cs @@ -298,7 +298,12 @@ namespace ArchiSteamFarm { ArchiLogger.LogGenericInfo(string.Format(Strings.UpdateDownloadingNewVersion, newVersion, binaryAsset.Size / 1024 / 1024)); - WebBrowser.BinaryResponse? response = await WebBrowser.UrlGetToBinaryWithProgress(binaryAsset.DownloadURL!).ConfigureAwait(false); + Progress progressReporter = new Progress(); + progressReporter.ProgressChanged += ReportHandler; + + WebBrowser.BinaryResponse? response = await WebBrowser.UrlGetToBinary(binaryAsset.DownloadURL!, progressReporter: progressReporter).ConfigureAwait(false); + + progressReporter.ProgressChanged -= ReportHandler; if (response?.Content == null) { return null; @@ -344,6 +349,8 @@ namespace ArchiSteamFarm { } finally { UpdateSemaphore.Release(); } + + static void ReportHandler(object? sender, int progressPercentage) => ArchiLogger.LogGenericDebug($"{progressPercentage}%..."); } private static async Task CanHandleWriteEvent(string filePath) { diff --git a/ArchiSteamFarm/WebBrowser.cs b/ArchiSteamFarm/WebBrowser.cs index 6ab13b8c1..d8c4ede55 100644 --- a/ArchiSteamFarm/WebBrowser.cs +++ b/ArchiSteamFarm/WebBrowser.cs @@ -426,7 +426,7 @@ namespace ArchiSteamFarm { } } - internal async Task UrlGetToBinaryWithProgress(string request, string? referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries) { + internal async Task UrlGetToBinary(string request, string? referer = null, ERequestOptions requestOptions = ERequestOptions.None, byte maxTries = MaxTries, IProgress? progressReporter = null) { if (string.IsNullOrEmpty(request) || (maxTries == 0)) { throw new ArgumentNullException(nameof(request) + " || " + nameof(maxTries)); } @@ -451,8 +451,7 @@ namespace ArchiSteamFarm { continue; } - ArchiLogger.LogGenericDebug("0%..."); - + progressReporter?.Report(0); #if NETFRAMEWORK using MemoryStream ms = new MemoryStream((int) response.Length); #else @@ -484,7 +483,7 @@ namespace ArchiSteamFarm { } readThisBatch -= response.Length / printPercentage; - ArchiLogger.LogGenericDebug((++batch * printPercentage) + "%..."); + progressReporter?.Report(++batch * printPercentage); } } catch (Exception e) { ArchiLogger.LogGenericDebuggingException(e); @@ -492,7 +491,7 @@ namespace ArchiSteamFarm { return null; } - ArchiLogger.LogGenericDebug("100%"); + progressReporter?.Report(100); return new BinaryResponse(response, ms.ToArray()); }