MCPcopy Index your code
hub / github.com/scality/cloudserver / _formatXML

Function _formatXML

lib/api/multiObjectDelete.js:80–145  ·  view source on GitHub ↗

* formats xml for response * @param {boolean} quietSetting - true if xml should just include error list * and false if should include deleted list and error list * @param {object []} errorResults - list of error result objects with each * object containing -- entry: { key, versionId }, error: arsena

(quietSetting, errorResults, deleted)

Source from the content-addressed store, hash-verified

78* @return {string} xml string
79*/
80function _formatXML(quietSetting, errorResults, deleted) {
81 let errorXML = [];
82 errorResults.forEach(errorObj => {
83 errorXML.push(
84 '<Error>',
85 '<Key>', escapeForXml(errorObj.entry.key), '</Key>',
86 '<Code>', escapeForXml(errorObj.error.message), '</Code>');
87 if (errorObj.entry.versionId) {
88 const version = errorObj.entry.versionId === 'null' ?
89 'null' : escapeForXml(errorObj.entry.versionId);
90 errorXML.push('<VersionId>', version, '</VersionId>');
91 }
92 errorXML.push(
93 '<Message>',
94 escapeForXml(errorObj.error.description),
95 '</Message>',
96 '</Error>'
97 );
98 });
99 errorXML = errorXML.join('');
100 const xml = [
101 '<?xml version="1.0" encoding="UTF-8"?>',
102 '<DeleteResult ',
103 'xmlns="http://s3.amazonaws.com/doc/2006-03-01/">',
104 // placeholder in array for deleted list if verbose response
105 '',
106 errorXML,
107 '</DeleteResult>',
108 ];
109 if (quietSetting) {
110 // just return errors
111 return xml.join('');
112 }
113 const deletedXML = [];
114 deleted.forEach(version => {
115 const isDeleteMarker = version.isDeleteMarker;
116 const deleteMarkerVersionId = version.deleteMarkerVersionId;
117 // if deletion resulted in new delete marker or deleting a delete marker
118 deletedXML.push(
119 '<Deleted>',
120 '<Key>',
121 escapeForXml(version.entry.key),
122 '</Key>'
123 );
124 if (version.entry.versionId) {
125 deletedXML.push(
126 '<VersionId>',
127 escapeForXml(version.entry.versionId),
128 '</VersionId>'
129 );
130 }
131 if (isDeleteMarker) {
132 deletedXML.push(
133 '<DeleteMarker>',
134 isDeleteMarker,
135 '</DeleteMarker>',
136 '<DeleteMarkerVersionId>',
137 deleteMarkerVersionId,

Callers 1

multiObjectDeleteFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected