|
|
- /* 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 || []
- };
- };
|