Use pre-signed url

This commit is contained in:
Kieran 2022-07-25 20:37:19 +01:00
parent 2162f5f964
commit 007e11571b
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
2 changed files with 21 additions and 11 deletions

View File

@ -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<PagedResult<PublicVoidFile>> ListFiles(PagedRequest request)

View File

@ -27,15 +27,23 @@ public class FixSize : IMigration
var files = await _fileMetadata.ListFiles<SecretVoidFileMeta>(new(0, int.MaxValue));
await foreach (var file in files.Results)
{
var fs = await _fileStore.Open(new(file.Id, Enumerable.Empty<RangeRequest>()), 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<RangeRequest>()), 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);
}
}