From 373876c0743b4cde16e7a6aef75ad79115321ffa Mon Sep 17 00:00:00 2001 From: Jeddunk Date: Wed, 7 Apr 2021 14:43:39 +0200 Subject: [PATCH] Downloaded Goldberg archive will now be validated by checking its file size. --- GoldbergGUI.Core/Services/GoldbergService.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/GoldbergGUI.Core/Services/GoldbergService.cs b/GoldbergGUI.Core/Services/GoldbergService.cs index a6f5617..6beb4bf 100644 --- a/GoldbergGUI.Core/Services/GoldbergService.cs +++ b/GoldbergGUI.Core/Services/GoldbergService.cs @@ -407,11 +407,24 @@ namespace GoldbergGUI.Core.Services _log.Debug(downloadUrl); await using var fileStream = File.OpenWrite(_goldbergZipPath); //client.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead) + var httpRequestMessage = new HttpRequestMessage(HttpMethod.Head, downloadUrl); + var headResponse = await client.SendAsync(httpRequestMessage).ConfigureAwait(false); + var contentLength = headResponse.Content.Headers.ContentLength; var task = client.GetFileAsync(downloadUrl, fileStream).ConfigureAwait(false); await task; if (task.GetAwaiter().IsCompleted) { - _log.Info("Download finished!"); + await fileStream.DisposeAsync().ConfigureAwait(false); + var fileLength = new FileInfo(_goldbergZipPath).Length; + // Environment.Exit(128); + if (contentLength == fileLength) + { + _log.Info("Download finished!"); + } + else + { + throw new Exception("File size does not match!"); + } } } catch (Exception e) @@ -463,7 +476,7 @@ namespace GoldbergGUI.Core.Services ShowErrorMessage(); _log.Warn("Error occured while extraction! Please setup Goldberg manually"); } - _log.Info("Archive extracted successfully!"); + _log.Info("Extraction was successful!"); } private void ShowErrorMessage()