Files
IM_NEW/FileService.Application/Ports/IObjectStoragePort.cs
T

31 lines
1.4 KiB
C#

using FileService.Application.StorageContracts;
using FileService.Domain.ValueObjects;
namespace FileService.Application.Ports
{
public interface IObjectStoragePort
{
string ProviderCode { get; }
Task<UploadPart> WritePartAsync(UploadRuntimeCache task, int partNumber, Stream content, long size, CancellationToken ct) => throw new NotSupportedException();
public Task<InitiateUploadResult> InitUploadAsync(InitiateUploadCommand command,CancellationToken token);
public Task<PresignedUrl> GenerateUploadUrlAsync(GenerateUploadUrlCommand command, CancellationToken token);
public Task<CompleteUploadResult> CompleteUploadAsync(CompleteUploadCommand command, CancellationToken token);
/// <summary>
/// 单次直传:把整个文件一次性写入存储(小文件,不分片)。
/// </summary>
public Task<StorageLocation> PutObjectAsync(PutObjectCommand command, CancellationToken token);
/// <summary>
/// 生成可直接访问的公开直链。
/// 文件位于公开桶/目录返回直链;私有文件返回 null(需走鉴权下载接口)。
/// </summary>
public string? GetPublicUrl(StorageLocation location);
/// <summary>
/// 打开文件读取流(用于私有文件鉴权下载)。
/// </summary>
public Task<Stream> OpenReadAsync(StorageLocation location, CancellationToken token);
}
}