putBucketWebsite.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
  2. const { obj2xml } = require('../utils/obj2xml');
  3. const { isArray } = require('../utils/isArray');
  4. const proto = exports;
  5. proto.putBucketWebsite = async function putBucketWebsite(name, config = {}, options) {
  6. _checkBucketName(name);
  7. const params = this._bucketRequestParams('PUT', name, 'website', options);
  8. const IndexDocument = {
  9. Suffix: config.index || 'index.html'
  10. };
  11. const WebsiteConfiguration = {
  12. IndexDocument
  13. };
  14. let website = {
  15. WebsiteConfiguration
  16. };
  17. if (config.supportSubDir) {
  18. IndexDocument.SupportSubDir = config.supportSubDir;
  19. }
  20. if (config.type) {
  21. IndexDocument.Type = config.type;
  22. }
  23. if (config.error) {
  24. WebsiteConfiguration.ErrorDocument = {
  25. Key: config.error
  26. };
  27. }
  28. if (config.routingRules !== undefined) {
  29. if (!isArray(config.routingRules)) {
  30. throw new Error('RoutingRules must be Array');
  31. }
  32. WebsiteConfiguration.RoutingRules = {
  33. RoutingRule: config.routingRules
  34. };
  35. }
  36. website = obj2xml(website);
  37. params.content = website;
  38. params.mime = 'xml';
  39. params.successStatuses = [200];
  40. const result = await this.request(params);
  41. return {
  42. res: result.res
  43. };
  44. };