putObjectAcl method

Future<PutObjectAclOutput> putObjectAcl({
  1. required String bucket,
  2. required String key,
  3. ObjectCannedACL? acl,
  4. AccessControlPolicy? accessControlPolicy,
  5. ChecksumAlgorithm? checksumAlgorithm,
  6. String? contentMD5,
  7. String? expectedBucketOwner,
  8. String? grantFullControl,
  9. String? grantRead,
  10. String? grantReadACP,
  11. String? grantWrite,
  12. String? grantWriteACP,
  13. RequestPayer? requestPayer,
  14. String? versionId,
})

Implementation

Future<PutObjectAclOutput> putObjectAcl({
  required String bucket,
  required String key,
  ObjectCannedACL? acl,
  AccessControlPolicy? accessControlPolicy,
  ChecksumAlgorithm? checksumAlgorithm,
  String? contentMD5,
  String? expectedBucketOwner,
  String? grantFullControl,
  String? grantRead,
  String? grantReadACP,
  String? grantWrite,
  String? grantWriteACP,
  RequestPayer? requestPayer,
  String? versionId,
}) async {
  final headers = <String, String>{
    if (acl != null) 'x-amz-acl': acl.value,
    if (checksumAlgorithm != null)
      'x-amz-sdk-checksum-algorithm': checksumAlgorithm.value,
    if (contentMD5 != null) 'Content-MD5': contentMD5.toString(),
    if (expectedBucketOwner != null)
      'x-amz-expected-bucket-owner': expectedBucketOwner.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 (grantWrite != null) 'x-amz-grant-write': grantWrite.toString(),
    if (grantWriteACP != null)
      'x-amz-grant-write-acp': grantWriteACP.toString(),
    if (requestPayer != null) 'x-amz-request-payer': requestPayer.value,
  };
  final $query = <String, List<String>>{
    if (versionId != null) 'versionId': [versionId],
  };
  final $result = await _protocol.sendRaw(
    method: 'PUT',
    requestUri:
        '/${Uri.encodeComponent(bucket)}/${key.split('/').map(Uri.encodeComponent).join('/')}?acl',
    queryParams: $query,
    headers: headers,
    payload: accessControlPolicy?.toXml('AccessControlPolicy'),
    exceptionFnMap: _exceptionFns,
  );
  final $elem = await _s.xmlFromResponse($result);
  return PutObjectAclOutput(
    requestCharged: _s
        .extractHeaderStringValue($result.headers, 'x-amz-request-charged')
        ?.let(RequestCharged.fromString),
  );
}