Esempio n. 1
0
    public async Task <ObjectStorageFrontendUploadArguments> GetUploadArgumentsAsync(
        string path,
        bool everyone        = false,
        int?contentLength    = null,
        string?contentType   = null,
        CancellationToken ct = default)
    {
        var now       = DateTimeOffset.UtcNow;
        var date      = $"{now:yyyyMMdd}";
        var timestamp = $"{now:yyyyMMddTHHmmssZ}";

        var uri = await GetUrlAsync(string.Empty, true, ct);

        var arguments = new ObjectStorageFrontendUploadArguments
        {
            Action = uri,
            Data   =
            {
                ["key"]              = path,
                ["acl"]              = everyone ? "public-read" : "private",
                ["x-amz-algorithm"]  = "AWS4-HMAC-SHA256",
                ["x-amz-credential"] = $"{Options.AccessKey}/{date}/{Options.Region}/s3/aws4_request",
                ["x-amz-date"]       = timestamp
            }
        };

        arguments.Data["policy"] = @$ "{{
  " "expiration" ": " "{
      now.AddMinutes(30)
      :yyyy-MM-ddTHH:mm:ss.fffZ}" ",
  " "conditions" ": [
Esempio n. 2
0
    public async Task <ObjectStorageFrontendUploadArguments> GetUploadArgumentsAsync(
        string path,
        bool everyone        = false,
        int?contentLength    = null,
        string?contentType   = null,
        CancellationToken ct = default)
    {
        var now        = DateTimeOffset.UtcNow;
        var expiration = now.AddSeconds(1800);
        var keyTime    = $"{now.ToUnixTimeSeconds()};{expiration.ToUnixTimeSeconds()}";

        var uri = await GetUrlAsync(string.Empty, true, ct);

        var arguments = new ObjectStorageFrontendUploadArguments
        {
            Action = uri,
            Data   =
            {
                ["key"] = path,
                ["acl"] = everyone ? "public-read" : "private",
                ["q-sign-algorithm"] = "sha1",
                ["q-ak"]             = Options.SecretId,
                ["q-key-time"]       = keyTime
            }
        };

        arguments.Data["policy"] = @$ "{{
  " "expiration" ": " "{
      expiration
      :yyyy-MM-ddTHH:mm:ss.fffZ}" ",
  " "conditions" ": [