putBucketEncryption.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. const proto = exports;
  2. // const jstoxml = require('jstoxml');
  3. const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
  4. const { obj2xml } = require('../utils/obj2xml');
  5. /**
  6. * putBucketEncryption
  7. * @param {String} bucketName - bucket name
  8. * @param {Object} options
  9. */
  10. proto.putBucketEncryption = async function putBucketEncryption(bucketName, options) {
  11. options = options || {};
  12. _checkBucketName(bucketName);
  13. const params = this._bucketRequestParams('PUT', bucketName, 'encryption', options);
  14. params.successStatuses = [200];
  15. const paramXMLObj = {
  16. ServerSideEncryptionRule: {
  17. ApplyServerSideEncryptionByDefault: {
  18. SSEAlgorithm: options.SSEAlgorithm
  19. }
  20. }
  21. };
  22. if (options.KMSMasterKeyID !== undefined) {
  23. paramXMLObj.ServerSideEncryptionRule.ApplyServerSideEncryptionByDefault.KMSMasterKeyID = options.KMSMasterKeyID;
  24. }
  25. const paramXML = obj2xml(paramXMLObj, {
  26. headers: true
  27. });
  28. params.mime = 'xml';
  29. params.content = paramXML;
  30. const result = await this.request(params);
  31. return {
  32. status: result.status,
  33. res: result.res
  34. };
  35. };