58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* eslint-disable object-curly-newline */
 | 
						|
const utility = require('utility');
 | 
						|
const { obj2xml } = require('../utils/obj2xml');
 | 
						|
 | 
						|
const proto = exports;
 | 
						|
 | 
						|
proto.deleteMulti = async function deleteMulti(names, options = {}) {
 | 
						|
  const objects = [];
 | 
						|
  if (!names || !names.length) {
 | 
						|
    throw new Error('names is required');
 | 
						|
  }
 | 
						|
  for (let i = 0; i < names.length; i++) {
 | 
						|
    const object = {};
 | 
						|
    if (typeof names[i] === 'string') {
 | 
						|
      object.Key = utility.escape(this._objectName(names[i]));
 | 
						|
    } else {
 | 
						|
      const { key, versionId } = names[i];
 | 
						|
      object.Key = utility.escape(this._objectName(key));
 | 
						|
      object.VersionId = versionId;
 | 
						|
    }
 | 
						|
    objects.push(object);
 | 
						|
  }
 | 
						|
 | 
						|
  const paramXMLObj = {
 | 
						|
    Delete: {
 | 
						|
      Quiet: !!options.quiet,
 | 
						|
      Object: objects
 | 
						|
    }
 | 
						|
  };
 | 
						|
 | 
						|
  const paramXML = obj2xml(paramXMLObj, {
 | 
						|
    headers: true
 | 
						|
  });
 | 
						|
 | 
						|
  options.subres = Object.assign({ delete: '' }, options.subres);
 | 
						|
  if (options.versionId) {
 | 
						|
    options.subres.versionId = options.versionId;
 | 
						|
  }
 | 
						|
  const params = this._objectRequestParams('POST', '', options);
 | 
						|
  params.mime = 'xml';
 | 
						|
  params.content = paramXML;
 | 
						|
  params.xmlResponse = true;
 | 
						|
  params.successStatuses = [200];
 | 
						|
  const result = await this.request(params);
 | 
						|
 | 
						|
  const r = result.data;
 | 
						|
  let deleted = (r && r.Deleted) || null;
 | 
						|
  if (deleted) {
 | 
						|
    if (!Array.isArray(deleted)) {
 | 
						|
      deleted = [deleted];
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return {
 | 
						|
    res: result.res,
 | 
						|
    deleted: deleted || []
 | 
						|
  };
 | 
						|
};
 |