70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
|
|
using FileService.Domain.ValueObjects;
|
|
|
|
namespace FileService.Application.StorageContracts
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ProviderCode">储存提供商编号</param>
|
|
/// <param name="Bucket">储存桶名称</param>
|
|
/// <param name="ObjectKey">鉴权key</param>
|
|
/// <param name="ContentType"></param>
|
|
/// <param name="ContentLength"></param>
|
|
/// <param name="Metadata"></param>
|
|
public sealed record InitiateUploadCommand(
|
|
string ProviderCode,
|
|
string Bucket,
|
|
string ObjectKey,
|
|
string ContentType,
|
|
long ContentLength,
|
|
IReadOnlyDictionary<string, string>? Metadata = null);
|
|
|
|
public sealed record InitiateUploadResult(
|
|
string UploadSessionId,
|
|
StorageLocation Location);
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="ProviderCode"></param>
|
|
/// <param name="Bucket"></param>
|
|
/// <param name="ObjectKey"></param>
|
|
/// <param name="UploadSessionId"></param>
|
|
/// <param name="PartNumber"></param>
|
|
/// <param name="ExpiresIn"></param>
|
|
public sealed record GenerateUploadUrlCommand(
|
|
string ProviderCode,
|
|
string Bucket,
|
|
string ObjectKey,
|
|
string UploadSessionId,
|
|
int? PartNumber,
|
|
TimeSpan ExpiresIn);
|
|
|
|
public sealed record PresignedUrl(
|
|
string Url,
|
|
IReadOnlyDictionary<string, string> Headers,
|
|
DateTimeOffset ExpiresAt);
|
|
|
|
public sealed record CompleteUploadCommand(
|
|
string ProviderCode,
|
|
string Bucket,
|
|
string Region,
|
|
string ObjectKey,
|
|
string UploadSessionId,
|
|
IReadOnlyList<UploadPart> Parts);
|
|
|
|
public sealed record UploadPart(
|
|
int PartNumber,
|
|
string ETag,
|
|
long? Size = null,
|
|
string? Checksum = null);
|
|
|
|
public sealed record CompleteUploadResult(
|
|
StorageLocation Location,
|
|
string? ETag,
|
|
long Size,
|
|
string? Checksum = null,
|
|
string? VersionId = null);
|
|
}
|