From 8af4760712ac4740a302fbc824351a1e4f4bab74 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Wed, 27 Mar 2019 20:07:25 +0100 Subject: [PATCH] Define file url for restore operation. --- .../Backup/Helpers/Downloader.cs | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Squidex.Domain.Apps.Entities/Backup/Helpers/Downloader.cs b/src/Squidex.Domain.Apps.Entities/Backup/Helpers/Downloader.cs index a567eb717..9529c4bf5 100644 --- a/src/Squidex.Domain.Apps.Entities/Backup/Helpers/Downloader.cs +++ b/src/Squidex.Domain.Apps.Entities/Backup/Helpers/Downloader.cs @@ -17,26 +17,46 @@ namespace Squidex.Domain.Apps.Entities.Backup.Helpers { public static async Task DownloadAsync(this IBackupArchiveLocation backupArchiveLocation, Uri url, Guid id) { - HttpResponseMessage response = null; - try + if (string.Equals(url.Scheme, "file")) { - using (var client = new HttpClient()) + try { - response = await client.GetAsync(url); - response.EnsureSuccessStatusCode(); - - using (var sourceStream = await response.Content.ReadAsStreamAsync()) + using (var targetStream = await backupArchiveLocation.OpenStreamAsync(id)) { - using (var targetStream = await backupArchiveLocation.OpenStreamAsync(id)) + using (var sourceStream = new FileStream(url.LocalPath, FileMode.Open, FileAccess.Read)) { await sourceStream.CopyToAsync(targetStream); } } } + catch (IOException ex) + { + throw new BackupRestoreException($"Cannot download the archive: {ex.Message}.", ex); + } } - catch (HttpRequestException ex) + else { - throw new BackupRestoreException($"Cannot download the archive. Got status code: {response?.StatusCode}.", ex); + HttpResponseMessage response = null; + try + { + using (var client = new HttpClient()) + { + response = await client.GetAsync(url); + response.EnsureSuccessStatusCode(); + + using (var sourceStream = await response.Content.ReadAsStreamAsync()) + { + using (var targetStream = await backupArchiveLocation.OpenStreamAsync(id)) + { + await sourceStream.CopyToAsync(targetStream); + } + } + } + } + catch (HttpRequestException ex) + { + throw new BackupRestoreException($"Cannot download the archive. Got status code: {response?.StatusCode}.", ex); + } } }