putBucketRequestPayment.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
  2. const { obj2xml } = require('../utils/obj2xml');
  3. const proto = exports;
  4. /**
  5. * putBucketRequestPayment
  6. * @param {String} bucketName
  7. * @param {String} payer
  8. * @param {Object} options
  9. */
  10. const payerAll = ['BucketOwner', 'Requester'];
  11. proto.putBucketRequestPayment = async function putBucketRequestPayment(bucketName, payer, options) {
  12. options = options || {};
  13. if (!payer || payerAll.indexOf(payer) < 0) {
  14. throw new Error('payer must be BucketOwner or Requester');
  15. }
  16. _checkBucketName(bucketName);
  17. const params = this._bucketRequestParams('PUT', bucketName, 'requestPayment', options);
  18. params.successStatuses = [200];
  19. const paramXMLObj = {
  20. RequestPaymentConfiguration: {
  21. Payer: payer
  22. }
  23. };
  24. const paramXML = obj2xml(paramXMLObj, {
  25. headers: true
  26. });
  27. params.mime = 'xml';
  28. params.content = paramXML;
  29. const result = await this.request(params);
  30. return {
  31. status: result.status,
  32. res: result.res
  33. };
  34. };