createMultipartUpload method

Future<CreateMultipartUploadOutput> createMultipartUpload({
  1. required String bucket,
  2. required String key,
  3. ObjectCannedACL? acl,
  4. bool? bucketKeyEnabled,
  5. String? cacheControl,
  6. ChecksumAlgorithm? checksumAlgorithm,
  7. ChecksumType? checksumType,
  8. String? contentDisposition,
  9. String? contentEncoding,
  10. String? contentLanguage,
  11. String? contentType,
  12. String? expectedBucketOwner,
  13. String? expires,
  14. String? grantFullControl,
  15. String? grantRead,
  16. String? grantReadACP,
  17. String? grantWriteACP,
  18. Map<String, String>? metadata,
  19. ObjectLockLegalHoldStatus? objectLockLegalHoldStatus,
  20. ObjectLockMode? objectLockMode,
  21. DateTime? objectLockRetainUntilDate,
  22. RequestPayer? requestPayer,
  23. String? sSECustomerAlgorithm,
  24. String? sSECustomerKey,
  25. String? sSECustomerKeyMD5,
  26. String? sSEKMSEncryptionContext,
  27. String? sSEKMSKeyId,
  28. ServerSideEncryption? serverSideEncryption,
  29. StorageClass? storageClass,
  30. String? tagging,
  31. String? websiteRedirectLocation,
})

Implementation

Future<CreateMultipartUploadOutput> createMultipartUpload({
  required String bucket,
  required String key,
  ObjectCannedACL? acl,
  bool? bucketKeyEnabled,
  String? cacheControl,
  ChecksumAlgorithm? checksumAlgorithm,
  ChecksumType? checksumType,
  String? contentDisposition,
  String? contentEncoding,
  String? contentLanguage,
  String? contentType,
  String? expectedBucketOwner,
  String? expires,
  String? grantFullControl,
  String? grantRead,
  String? grantReadACP,
  String? grantWriteACP,
  Map<String, String>? metadata,
  ObjectLockLegalHoldStatus? objectLockLegalHoldStatus,
  ObjectLockMode? objectLockMode,
  DateTime? objectLockRetainUntilDate,
  RequestPayer? requestPayer,
  String? sSECustomerAlgorithm,
  String? sSECustomerKey,
  String? sSECustomerKeyMD5,
  String? sSEKMSEncryptionContext,
  String? sSEKMSKeyId,
  ServerSideEncryption? serverSideEncryption,
  StorageClass? storageClass,
  String? tagging,
  String? websiteRedirectLocation,
}) async {
  final headers = <String, String>{
    if (acl != null) 'x-amz-acl': acl.value,
    if (bucketKeyEnabled != null)
      'x-amz-server-side-encryption-bucket-key-enabled':
          bucketKeyEnabled.toString(),
    if (cacheControl != null) 'Cache-Control': cacheControl.toString(),
    if (checksumAlgorithm != null)
      'x-amz-checksum-algorithm': checksumAlgorithm.value,
    if (checksumType != null) 'x-amz-checksum-type': checksumType.value,
    if (contentDisposition != null)
      'Content-Disposition': contentDisposition.toString(),
    if (contentEncoding != null)
      'Content-Encoding': contentEncoding.toString(),
    if (contentLanguage != null)
      'Content-Language': contentLanguage.toString(),
    if (contentType != null) 'Content-Type': contentType.toString(),
    if (expectedBucketOwner != null)
      'x-amz-expected-bucket-owner': expectedBucketOwner.toString(),
    if (expires != null) 'Expires': expires.toString(),
    if (grantFullControl != null)
      'x-amz-grant-full-control': grantFullControl.toString(),
    if (grantRead != null) 'x-amz-grant-read': grantRead.toString(),
    if (grantReadACP != null) 'x-amz-grant-read-acp': grantReadACP.toString(),
    if (grantWriteACP != null)
      'x-amz-grant-write-acp': grantWriteACP.toString(),
    if (metadata != null)
      ...metadata.map((key, value) => MapEntry('x-amz-meta-$key', value)),
    if (objectLockLegalHoldStatus != null)
      'x-amz-object-lock-legal-hold': objectLockLegalHoldStatus.value,
    if (objectLockMode != null)
      'x-amz-object-lock-mode': objectLockMode.value,
    if (objectLockRetainUntilDate != null)
      'x-amz-object-lock-retain-until-date':
          _s.iso8601ToJson(objectLockRetainUntilDate),
    if (requestPayer != null) 'x-amz-request-payer': requestPayer.value,
    if (sSECustomerAlgorithm != null)
      'x-amz-server-side-encryption-customer-algorithm':
          sSECustomerAlgorithm.toString(),
    if (sSECustomerKey != null)
      'x-amz-server-side-encryption-customer-key': sSECustomerKey.toString(),
    if (sSECustomerKeyMD5 != null)
      'x-amz-server-side-encryption-customer-key-MD5':
          sSECustomerKeyMD5.toString(),
    if (sSEKMSEncryptionContext != null)
      'x-amz-server-side-encryption-context':
          sSEKMSEncryptionContext.toString(),
    if (sSEKMSKeyId != null)
      'x-amz-server-side-encryption-aws-kms-key-id': sSEKMSKeyId.toString(),
    if (serverSideEncryption != null)
      'x-amz-server-side-encryption': serverSideEncryption.value,
    if (storageClass != null) 'x-amz-storage-class': storageClass.value,
    if (tagging != null) 'x-amz-tagging': tagging.toString(),
    if (websiteRedirectLocation != null)
      'x-amz-website-redirect-location': websiteRedirectLocation.toString(),
  };
  final $result = await _protocol.sendRaw(
    method: 'POST',
    requestUri:
        '/${Uri.encodeComponent(bucket)}/${key.split('/').map(Uri.encodeComponent).join('/')}?uploads',
    headers: headers,
    exceptionFnMap: _exceptionFns,
  );
  final $elem = await _s.xmlFromResponse($result);
  return CreateMultipartUploadOutput(
    bucket: _s.extractXmlStringValue($elem, 'Bucket'),
    key: _s.extractXmlStringValue($elem, 'Key'),
    uploadId: _s.extractXmlStringValue($elem, 'UploadId'),
    abortDate:
        _s.extractHeaderDateTimeValue($result.headers, 'x-amz-abort-date'),
    abortRuleId:
        _s.extractHeaderStringValue($result.headers, 'x-amz-abort-rule-id'),
    bucketKeyEnabled: _s.extractHeaderBoolValue(
        $result.headers, 'x-amz-server-side-encryption-bucket-key-enabled'),
    checksumAlgorithm: _s
        .extractHeaderStringValue($result.headers, 'x-amz-checksum-algorithm')
        ?.let(ChecksumAlgorithm.fromString),
    checksumType: _s
        .extractHeaderStringValue($result.headers, 'x-amz-checksum-type')
        ?.let(ChecksumType.fromString),
    requestCharged: _s
        .extractHeaderStringValue($result.headers, 'x-amz-request-charged')
        ?.let(RequestCharged.fromString),
    sSECustomerAlgorithm: _s.extractHeaderStringValue(
        $result.headers, 'x-amz-server-side-encryption-customer-algorithm'),
    sSECustomerKeyMD5: _s.extractHeaderStringValue(
        $result.headers, 'x-amz-server-side-encryption-customer-key-MD5'),
    sSEKMSEncryptionContext: _s.extractHeaderStringValue(
        $result.headers, 'x-amz-server-side-encryption-context'),
    sSEKMSKeyId: _s.extractHeaderStringValue(
        $result.headers, 'x-amz-server-side-encryption-aws-kms-key-id'),
    serverSideEncryption: _s
        .extractHeaderStringValue(
            $result.headers, 'x-amz-server-side-encryption')
        ?.let(ServerSideEncryption.fromString),
  );
}