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

Function _checkMultipleBackendRequest

lib/routes/routeBackbeat.js:138–209  ·  view source on GitHub ↗
(request, log)

Source from the content-addressed store, hash-verified

136}
137
138function _checkMultipleBackendRequest(request, log) {
139 const { headers, query } = request;
140 const storageType = headers['x-scal-storage-type'];
141 const { operation } = query;
142 let errMessage;
143 if (storageType === undefined) {
144 errMessage = 'bad request: missing x-scal-storage-type header';
145 log.error(errMessage);
146 return errorInstances.BadRequest.customizeDescription(errMessage);
147 }
148 if (operation === 'putpart' && headers['x-scal-part-number'] === undefined) {
149 errMessage = 'bad request: missing part-number header';
150 log.error(errMessage);
151 return errorInstances.BadRequest.customizeDescription(errMessage);
152 }
153 const isMPUOperation = ['putpart', 'completempu', 'abortmpu'].includes(operation);
154 if (isMPUOperation && headers['x-scal-upload-id'] === undefined) {
155 errMessage = 'bad request: missing upload-id header';
156 log.error(errMessage);
157 return errorInstances.BadRequest.customizeDescription(errMessage);
158 }
159 if (operation === 'putobject' && headers['x-scal-canonical-id'] === undefined) {
160 errMessage = 'bad request: missing x-scal-canonical-id header';
161 log.error(errMessage);
162 return errorInstances.BadRequest.customizeDescription(errMessage);
163 }
164 // Ensure the external backend has versioning before asserting version ID.
165 if (
166 !constants.versioningNotImplBackends[storageType] &&
167 (operation === 'puttagging' || operation === 'deletetagging')
168 ) {
169 if (headers['x-scal-data-store-version-id'] === undefined) {
170 errMessage = 'bad request: missing x-scal-data-store-version-id header';
171 log.error(errMessage);
172 return errorInstances.BadRequest.customizeDescription(errMessage);
173 }
174 if (headers['x-scal-source-bucket'] === undefined) {
175 errMessage = 'bad request: missing x-scal-source-bucket header';
176 log.error(errMessage);
177 return errorInstances.BadRequest.customizeDescription(errMessage);
178 }
179 if (headers['x-scal-replication-endpoint-site'] === undefined) {
180 errMessage = 'bad request: missing ' + 'x-scal-replication-endpoint-site';
181 log.error(errMessage);
182 return errorInstances.BadRequest.customizeDescription(errMessage);
183 }
184 }
185 if (operation === 'putobject' && headers['content-md5'] === undefined) {
186 errMessage = 'bad request: missing content-md5 header';
187 log.error(errMessage);
188 return errorInstances.BadRequest.customizeDescription(errMessage);
189 }
190 if (headers['x-scal-storage-class'] === undefined) {
191 errMessage = 'bad request: missing x-scal-storage-class header';
192 log.error(errMessage);
193 return errorInstances.BadRequest.customizeDescription(errMessage);
194 }
195 const location = locationConstraints[headers['x-scal-storage-class']];

Callers 8

putObjectFunction · 0.85
deleteObjectFunction · 0.85
initiateMultipartUploadFunction · 0.85
abortMultipartUploadFunction · 0.85
putPartFunction · 0.85
completeMultipartUploadFunction · 0.85
putObjectTaggingFunction · 0.85
deleteObjectTaggingFunction · 0.85

Calls 2

errorMethod · 0.80
debugMethod · 0.80

Tested by

no test coverage detected