putBucket.js 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. const proto = exports;
  2. const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
  3. const { obj2xml } = require('../utils/obj2xml');
  4. proto.putBucket = async function putBucket(name, options = {}) {
  5. _checkBucketName(name, true);
  6. const params = this._bucketRequestParams('PUT', name, '', options);
  7. const CreateBucketConfiguration = {};
  8. const paramlXMLObJ = {
  9. CreateBucketConfiguration
  10. };
  11. const storageClass = options.StorageClass || options.storageClass;
  12. const dataRedundancyType = options.DataRedundancyType || options.dataRedundancyType;
  13. if (storageClass || dataRedundancyType) {
  14. storageClass && (CreateBucketConfiguration.StorageClass = storageClass);
  15. dataRedundancyType && (CreateBucketConfiguration.DataRedundancyType = dataRedundancyType);
  16. params.mime = 'xml';
  17. params.content = obj2xml(paramlXMLObJ, { headers: true });
  18. }
  19. const { acl, headers = {} } = options;
  20. acl && (headers['x-oss-acl'] = acl);
  21. params.headers = headers;
  22. params.successStatuses = [200];
  23. const result = await this.request(params);
  24. return {
  25. bucket: (result.headers.location && result.headers.location.substring(1)) || null,
  26. res: result.res
  27. };
  28. };