forked from gongxuegit/tiku-backend.net
feat: add asset access signing endpoints
This commit is contained in:
40
Tiku.Application/Assets/AssetAccessModels.cs
Normal file
40
Tiku.Application/Assets/AssetAccessModels.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System.Text.Json;
|
||||
using Tiku.Application.Storage;
|
||||
using Tiku.Domain.Content;
|
||||
|
||||
namespace Tiku.Application.Assets;
|
||||
|
||||
public sealed record AssetAccessRequest(
|
||||
Guid TenantId,
|
||||
Guid AssetId,
|
||||
Guid? UserId,
|
||||
string? IpAddress,
|
||||
string? UserAgent,
|
||||
TimeSpan? RequestedExpiresIn = null);
|
||||
|
||||
public sealed record AssetAccessResultModel(
|
||||
ContentAssetAccessSummary Item,
|
||||
AssetAccessPrincipal Access,
|
||||
ObjectStorageSignedUrl Url,
|
||||
JsonElement Watermark);
|
||||
|
||||
public sealed record ContentAssetAccessSummary(
|
||||
Guid Id,
|
||||
ContentAssetType AssetType,
|
||||
string? Title,
|
||||
string? FileName,
|
||||
string? PreviewUrl,
|
||||
AssetUploadStatus UploadStatus,
|
||||
AssetSecurityScanStatus SecurityScanStatus,
|
||||
AssetPreviewStatus PreviewStatus,
|
||||
ContentVisibility Visibility);
|
||||
|
||||
public sealed record AssetAccessPrincipal(
|
||||
Guid? UserId,
|
||||
bool IsMember,
|
||||
bool HasSvip);
|
||||
|
||||
public sealed class AssetAccessException(string message, string code) : InvalidOperationException(message)
|
||||
{
|
||||
public string Code { get; } = code;
|
||||
}
|
||||
12
Tiku.Application/Assets/IAssetAccessService.cs
Normal file
12
Tiku.Application/Assets/IAssetAccessService.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace Tiku.Application.Assets;
|
||||
|
||||
public interface IAssetAccessService
|
||||
{
|
||||
Task<AssetAccessResultModel> DownloadAsync(
|
||||
AssetAccessRequest request,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<AssetAccessResultModel> PreviewAsync(
|
||||
AssetAccessRequest request,
|
||||
CancellationToken cancellationToken = default);
|
||||
}
|
||||
Reference in New Issue
Block a user