PreventOverwrite
This commit is contained in:
@@ -4,12 +4,11 @@ namespace Musify.Application.Contracts
|
|||||||
{
|
{
|
||||||
Task<Stream> GetFileAsync(string bucket, string key, CancellationToken cancellationToken);
|
Task<Stream> GetFileAsync(string bucket, string key, CancellationToken cancellationToken);
|
||||||
|
|
||||||
// Returns null if the object does not exist
|
|
||||||
Task<ObjectMetaData?> HeadObjectAsync(string bucket, string key, CancellationToken cancellationToken);
|
Task<ObjectMetaData?> HeadObjectAsync(string bucket, string key, CancellationToken cancellationToken);
|
||||||
|
|
||||||
Task<string> GetUrlAsync(string bucket, string key, TimeSpan ExpirationTime, CancellationToken cancellationToken);
|
Task<string> GetUrlAsync(string bucket, string key, TimeSpan ExpirationTime, CancellationToken cancellationToken);
|
||||||
|
|
||||||
Task<string> GetUploadUrlAsync(string bucket, string key, string contentType, TimeSpan expirationTime, CancellationToken cancellationToken);
|
Task<string> GetUploadUrlAsync(string bucket, string key, string contentType, TimeSpan expirationTime, CancellationToken cancellationToken, bool preventOverwrite = true);
|
||||||
|
|
||||||
Task UploadFileAsync(string filePath, string bucket, string key, CancellationToken cancellationToken);
|
Task UploadFileAsync(string filePath, string bucket, string key, CancellationToken cancellationToken);
|
||||||
|
|
||||||
@@ -23,8 +22,7 @@ namespace Musify.Application.Contracts
|
|||||||
CancellationToken cancellationToken);
|
CancellationToken cancellationToken);
|
||||||
|
|
||||||
Task RemoveFolderAsync(string bucket, string folderKey, CancellationToken cancellationToken);
|
Task RemoveFolderAsync(string bucket, string folderKey, CancellationToken cancellationToken);
|
||||||
|
|
||||||
// Returns (key, lastModifiedUtc) for all objects under the given prefix
|
|
||||||
IAsyncEnumerable<(string Key, DateTime LastModifiedUtc)> ListObjectsAsync(string bucket, string prefix, CancellationToken cancellationToken);
|
IAsyncEnumerable<(string Key, DateTime LastModifiedUtc)> ListObjectsAsync(string bucket, string prefix, CancellationToken cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,8 @@ namespace Musify.Infrastructure.Services
|
|||||||
string key,
|
string key,
|
||||||
string contentType,
|
string contentType,
|
||||||
TimeSpan expirationTime,
|
TimeSpan expirationTime,
|
||||||
CancellationToken cancellationToken)
|
CancellationToken cancellationToken,
|
||||||
|
bool preventOverwrite = true)
|
||||||
{
|
{
|
||||||
var request = new GetPreSignedUrlRequest
|
var request = new GetPreSignedUrlRequest
|
||||||
{
|
{
|
||||||
@@ -67,6 +68,9 @@ namespace Musify.Infrastructure.Services
|
|||||||
ContentType = contentType
|
ContentType = contentType
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (preventOverwrite)
|
||||||
|
request.Headers["If-None-Match"] = "*";
|
||||||
|
|
||||||
logger.LogDebug("Generating pre-signed upload URL for {Bucket}/{Key}", bucket, key);
|
logger.LogDebug("Generating pre-signed upload URL for {Bucket}/{Key}", bucket, key);
|
||||||
return await amazonS3.GetPreSignedURLAsync(request);
|
return await amazonS3.GetPreSignedURLAsync(request);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user