putBucketACL method

Future<Response> putBucketACL({
  1. String? bucketName,
  2. String? region,
  3. COSACLHeader? aclHeader,
  4. COSAccessControlPolicy? accessControlPolicy,
})

PUT Bucket acl 接口用来写入存储桶的访问控制列表(ACL), 您可以通过请求头 x-cos-acl 和 x-cos-grant-* 传入 ACL 信息,或者通过请求体以 XML 格式传入 ACL 信息。 bucketName region aclHeader accessControlPolicy

Implementation

Future<Response> putBucketACL({
  String? bucketName,
  String? region,
  COSACLHeader? aclHeader,
  COSAccessControlPolicy? accessControlPolicy,
}) async {
  Map<String, String>? headers;
  if (aclHeader != null) {
    headers ??= aclHeader.toMap();
  }
  String? xmlString;
  if (accessControlPolicy != null) {
    headers ??= <String, String>{};
    xmlString = accessControlPolicy.toXmlString();
    // http 框架设置body时,会自动给 Content-Type 指定字符集为 charset=utf-8
    // 设置 application/xml; charset=utf-8 保持一致
    headers['Content-Type'] = 'application/xml; charset=utf-8';
    headers['Content-Length'] = xmlString.length.toString();
    final String md5String = Base64Encoder()
        .convert(md5.convert(xmlString.codeUnits).bytes)
        .toString();
    headers['Content-MD5'] = md5String;
  }

  final Response response = await client.put(
    '${getBaseApiUrl(bucketName, region)}/?acl',
    headers: headers,
    body: xmlString,
  );
  return toValidation(response);
}