forked from Kieran/void.cat
S3 optional checksum
This commit is contained in:
parent
ab917b0413
commit
81f9516f68
@ -121,6 +121,7 @@ namespace VoidCat.Model
|
|||||||
public string? Region { get; init; }
|
public string? Region { get; init; }
|
||||||
public string? BucketName { get; init; } = "void-cat";
|
public string? BucketName { get; init; } = "void-cat";
|
||||||
public bool Direct { get; init; }
|
public bool Direct { get; init; }
|
||||||
|
public bool SendChecksum { get; init; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class VirusScannerSettings
|
public sealed class VirusScannerSettings
|
||||||
|
@ -40,8 +40,9 @@ public class S3FileStore : StreamFileStore, IFileStore
|
|||||||
ContentType = "application/octet-stream",
|
ContentType = "application/octet-stream",
|
||||||
AutoResetStreamPosition = false,
|
AutoResetStreamPosition = false,
|
||||||
AutoCloseStream = false,
|
AutoCloseStream = false,
|
||||||
ChecksumAlgorithm = ChecksumAlgorithm.SHA256,
|
ChecksumAlgorithm = _config.SendChecksum ? ChecksumAlgorithm.SHA256 : null,
|
||||||
ChecksumSHA256 = payload.Meta.Digest != default ? Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
|
ChecksumSHA256 = payload.Meta.Digest != default && _config.SendChecksum ?
|
||||||
|
Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
|
||||||
Headers =
|
Headers =
|
||||||
{
|
{
|
||||||
ContentLength = (long)payload.Meta.Size
|
ContentLength = (long)payload.Meta.Size
|
||||||
@ -174,7 +175,7 @@ public class S3FileStore : StreamFileStore, IFileStore
|
|||||||
BucketName = _config.BucketName,
|
BucketName = _config.BucketName,
|
||||||
Key = payload.Id.ToString(),
|
Key = payload.Id.ToString(),
|
||||||
ContentType = "application/octet-stream",
|
ContentType = "application/octet-stream",
|
||||||
ChecksumAlgorithm = ChecksumAlgorithm.SHA256
|
ChecksumAlgorithm = _config.SendChecksum ? ChecksumAlgorithm.SHA256 : null
|
||||||
};
|
};
|
||||||
|
|
||||||
var mStartResult = await _client.InitiateMultipartUploadAsync(mStart, cts);
|
var mStartResult = await _client.InitiateMultipartUploadAsync(mStart, cts);
|
||||||
@ -193,7 +194,7 @@ public class S3FileStore : StreamFileStore, IFileStore
|
|||||||
fsTmp.Seek(0, SeekOrigin.Begin);
|
fsTmp.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
var segmentLength = (ulong)fsTmp.Length;
|
var segmentLength = (ulong)fsTmp.Length;
|
||||||
var mbody = new UploadPartRequest()
|
var mBody = new UploadPartRequest()
|
||||||
{
|
{
|
||||||
UploadId = uploadId,
|
UploadId = uploadId,
|
||||||
BucketName = _config.BucketName,
|
BucketName = _config.BucketName,
|
||||||
@ -202,7 +203,7 @@ public class S3FileStore : StreamFileStore, IFileStore
|
|||||||
InputStream = fsTmp
|
InputStream = fsTmp
|
||||||
};
|
};
|
||||||
|
|
||||||
var bodyResponse = await _client.UploadPartAsync(mbody, cts);
|
var bodyResponse = await _client.UploadPartAsync(mBody, cts);
|
||||||
if (bodyResponse.HttpStatusCode != HttpStatusCode.OK)
|
if (bodyResponse.HttpStatusCode != HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
await _client.AbortMultipartUploadAsync(new()
|
await _client.AbortMultipartUploadAsync(new()
|
||||||
@ -224,6 +225,8 @@ public class S3FileStore : StreamFileStore, IFileStore
|
|||||||
BucketName = _config.BucketName,
|
BucketName = _config.BucketName,
|
||||||
Key = payload.Id.ToString(),
|
Key = payload.Id.ToString(),
|
||||||
UploadId = uploadId,
|
UploadId = uploadId,
|
||||||
|
ChecksumSHA256 = payload.Meta.Digest != default && _config.SendChecksum ?
|
||||||
|
Convert.ToBase64String(payload.Meta.Digest!.FromHex()) : null,
|
||||||
PartETags = parts.Select(a =>
|
PartETags = parts.Select(a =>
|
||||||
{
|
{
|
||||||
var pSplit = a.Split('|');
|
var pSplit = a.Split('|');
|
||||||
|
Loading…
Reference in New Issue
Block a user