From 007e11571b30e80b9bb5114696fc02cfec284625 Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 25 Jul 2022 20:37:19 +0100 Subject: [PATCH] Use pre-signed url --- VoidCat/Services/Files/S3FileStore.cs | 10 ++++++---- VoidCat/Services/Migrations/FixSize.cs | 22 +++++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/VoidCat/Services/Files/S3FileStore.cs b/VoidCat/Services/Files/S3FileStore.cs index 4242dd1..5a1e849 100644 --- a/VoidCat/Services/Files/S3FileStore.cs +++ b/VoidCat/Services/Files/S3FileStore.cs @@ -66,12 +66,14 @@ public class S3FileStore : StreamFileStore, IFileStore { if (!_config.Direct) return ValueTask.FromResult(new EgressResult()); - var ub = new UriBuilder(_config.ServiceUrl!) + var url = _client.GetPreSignedURL(new() { - Path = $"/{_config.BucketName}/{request.Id}" - }; + BucketName = _config.BucketName, + Expires = DateTime.UtcNow.AddHours(1), + Key = request.Id.ToString() + }); - return ValueTask.FromResult(new EgressResult(ub.Uri)); + return ValueTask.FromResult(new EgressResult(new Uri(url))); } public async ValueTask> ListFiles(PagedRequest request) diff --git a/VoidCat/Services/Migrations/FixSize.cs b/VoidCat/Services/Migrations/FixSize.cs index 2234d90..9f4e432 100644 --- a/VoidCat/Services/Migrations/FixSize.cs +++ b/VoidCat/Services/Migrations/FixSize.cs @@ -27,15 +27,23 @@ public class FixSize : IMigration var files = await _fileMetadata.ListFiles(new(0, int.MaxValue)); await foreach (var file in files.Results) { - var fs = await _fileStore.Open(new(file.Id, Enumerable.Empty()), CancellationToken.None); - if (file.Size != (ulong) fs.Length) + try { - _logger.LogInformation("Updating file size {Id} to {Size}", file.Id, fs.Length); - var newFile = file with + var fs = await _fileStore.Open(new(file.Id, Enumerable.Empty()), CancellationToken.None); + if (file.Size != (ulong)fs.Length) { - Size = (ulong) fs.Length - }; - await _fileMetadata.Set(newFile.Id, newFile); + _logger.LogInformation("Updating file size {Id} to {Size}", file.Id, fs.Length); + var newFile = file with + { + Size = (ulong)fs.Length + }; + + await _fileMetadata.Set(newFile.Id, newFile); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to fix file {id}", file.Id); } }