S3 optional checksum

This commit is contained in:
Kieran 2022-07-26 14:01:14 +01:00
parent ab917b0413
commit 81f9516f68
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
2 changed files with 9 additions and 5 deletions

View File

@ -121,6 +121,7 @@ namespace VoidCat.Model
public string? Region { get; init; }
public string? BucketName { get; init; } = "void-cat";
public bool Direct { get; init; }
public bool SendChecksum { get; init; } = true;
}
public sealed class VirusScannerSettings

View File

@ -40,8 +40,9 @@ public class S3FileStore : StreamFileStore, IFileStore
ContentType = "application/octet-stream",
AutoResetStreamPosition = false,
AutoCloseStream = false,
ChecksumAlgorithm = ChecksumAlgorithm.SHA256,
ChecksumSHA256 = payload.Meta.Digest != default ? Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
ChecksumAlgorithm = _config.SendChecksum ? ChecksumAlgorithm.SHA256 : null,
ChecksumSHA256 = payload.Meta.Digest != default && _config.SendChecksum ?
Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
Headers =
{
ContentLength = (long)payload.Meta.Size
@ -174,7 +175,7 @@ public class S3FileStore : StreamFileStore, IFileStore
BucketName = _config.BucketName,
Key = payload.Id.ToString(),
ContentType = "application/octet-stream",
ChecksumAlgorithm = ChecksumAlgorithm.SHA256
ChecksumAlgorithm = _config.SendChecksum ? ChecksumAlgorithm.SHA256 : null
};
var mStartResult = await _client.InitiateMultipartUploadAsync(mStart, cts);
@ -193,7 +194,7 @@ public class S3FileStore : StreamFileStore, IFileStore
fsTmp.Seek(0, SeekOrigin.Begin);
var segmentLength = (ulong)fsTmp.Length;
var mbody = new UploadPartRequest()
var mBody = new UploadPartRequest()
{
UploadId = uploadId,
BucketName = _config.BucketName,
@ -202,7 +203,7 @@ public class S3FileStore : StreamFileStore, IFileStore
InputStream = fsTmp
};
var bodyResponse = await _client.UploadPartAsync(mbody, cts);
var bodyResponse = await _client.UploadPartAsync(mBody, cts);
if (bodyResponse.HttpStatusCode != HttpStatusCode.OK)
{
await _client.AbortMultipartUploadAsync(new()
@ -224,6 +225,8 @@ public class S3FileStore : StreamFileStore, IFileStore
BucketName = _config.BucketName,
Key = payload.Id.ToString(),
UploadId = uploadId,
ChecksumSHA256 = payload.Meta.Digest != default && _config.SendChecksum ?
Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
PartETags = parts.Select(a =>
{
var pSplit = a.Split('|');