namespace TakeoutSaaS.Application.Storage.Contracts;

/// <summary>
/// 直传凭证响应模型。
/// </summary>
public sealed class DirectUploadResponse
{
    /// <summary>
    /// 预签名上传地址。
    /// </summary>
    public string UploadUrl { get; set; } = string.Empty;

    /// <summary>
    /// 表单直传所需字段（PUT 直传为空）。
    /// </summary>
    public IReadOnlyDictionary<string, string> FormFields { get; set; } = new Dictionary<string, string>();

    /// <summary>
    /// 预签名过期时间。
    /// </summary>
    public DateTimeOffset ExpiresAt { get; set; }

    /// <summary>
    /// 对象键。
    /// </summary>
    public string ObjectKey { get; set; } = string.Empty;

    /// <summary>
    /// 直传完成后的访问链接（包含签名）。
    /// </summary>
    public string? DownloadUrl { get; set; }
}
