51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
 | 
						|
const { obj2xml } = require('../utils/obj2xml');
 | 
						|
const { isArray } = require('../utils/isArray');
 | 
						|
 | 
						|
const proto = exports;
 | 
						|
proto.putBucketWebsite = async function putBucketWebsite(name, config = {}, options) {
 | 
						|
  _checkBucketName(name);
 | 
						|
  const params = this._bucketRequestParams('PUT', name, 'website', options);
 | 
						|
  const IndexDocument = {
 | 
						|
    Suffix: config.index || 'index.html'
 | 
						|
  };
 | 
						|
  const WebsiteConfiguration = {
 | 
						|
    IndexDocument
 | 
						|
  };
 | 
						|
  let website = {
 | 
						|
    WebsiteConfiguration
 | 
						|
  };
 | 
						|
 | 
						|
  if (config.supportSubDir) {
 | 
						|
    IndexDocument.SupportSubDir = config.supportSubDir;
 | 
						|
  }
 | 
						|
 | 
						|
  if (config.type) {
 | 
						|
    IndexDocument.Type = config.type;
 | 
						|
  }
 | 
						|
 | 
						|
  if (config.error) {
 | 
						|
    WebsiteConfiguration.ErrorDocument = {
 | 
						|
      Key: config.error
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  if (config.routingRules !== undefined) {
 | 
						|
    if (!isArray(config.routingRules)) {
 | 
						|
      throw new Error('RoutingRules must be Array');
 | 
						|
    }
 | 
						|
    WebsiteConfiguration.RoutingRules = {
 | 
						|
      RoutingRule: config.routingRules
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  website = obj2xml(website);
 | 
						|
  params.content = website;
 | 
						|
  params.mime = 'xml';
 | 
						|
  params.successStatuses = [200];
 | 
						|
  const result = await this.request(params);
 | 
						|
  return {
 | 
						|
    res: result.res
 | 
						|
  };
 | 
						|
};
 |