feat: add asset access signing endpoints

This commit is contained in:
xiong
2026-07-26 14:54:50 +08:00
parent 0ff97e86cd
commit 06471151cd
9 changed files with 957 additions and 1 deletions

View 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;
}

View 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);
}