namespace TakeoutSaaS.Module.Storage.Models;

/// <summary>
/// 直传（预签名上传）请求参数。
/// </summary>
/// <remarks>
/// 初始化请求。
/// </remarks>
/// <param name="objectKey">对象键。</param>
/// <param name="contentType">内容类型。</param>
/// <param name="contentLength">内容长度。</param>
/// <param name="expires">签名有效期。</param>
public sealed class StorageDirectUploadRequest(string objectKey, string contentType, long contentLength, TimeSpan expires)
{
    /// <summary>
    /// 目标对象键。
    /// </summary>
    public string ObjectKey { get; } = objectKey;

    /// <summary>
    /// 内容类型。
    /// </summary>
    public string ContentType { get; } = contentType;

    /// <summary>
    /// 内容长度。
    /// </summary>
    public long ContentLength { get; } = contentLength;

    /// <summary>
    /// 签名有效期。
    /// </summary>
    public TimeSpan Expires { get; } = expires;
}
