MCPcopy
hub / github.com/scality/cloudserver / respondWithData

Function respondWithData

lib/routes/veeam/utils.js:129–170  ·  view source on GitHub ↗

* Generic function to respond to user with data using streams * * @param {object} request - incoming request * @param {object} response - response object * @param {object} log - logging object * @param {BucketInfo} bucket - bucket info * @param {string} data - data to send * @param {date} [la

(request, response, log, bucket, data, lastModified)

Source from the content-addressed store, hash-verified

127 * @returns {Promise<void>} -
128 */
129async function respondWithData(request, response, log, bucket, data, lastModified) {
130 const dataBuffer = Buffer.from(data);
131 const responseMetaHeaders = getResponseHeader(request, bucket, dataBuffer, lastModified, log);
132
133 if (responseMetaHeaders && typeof responseMetaHeaders === 'object') {
134 Object.keys(responseMetaHeaders).forEach(key => {
135 if (responseMetaHeaders[key] !== undefined) {
136 try {
137 response.setHeader(key, responseMetaHeaders[key]);
138 } catch (e) {
139 log.debug('header can not be added ' +
140 'to the response', {
141 header: responseMetaHeaders[key],
142 error: e.stack, method: 'routeVeeam/respondWithData'
143 });
144 }
145 }
146 });
147 }
148
149 response.writeHead(200);
150
151 let contentLength = 0;
152 if (responseMetaHeaders && responseMetaHeaders['Content-Length']) {
153 contentLength = responseMetaHeaders['Content-Length'];
154 }
155 log.end().addDefaultFields({ contentLength });
156
157 try {
158 // Use a single-element array so the Buffer is sent as one chunk rather
159 // than being iterated byte-by-byte by Readable.from.
160 await pipeline(Readable.from([dataBuffer]), response);
161 log.end().info('responded with streamed content', {
162 httpCode: response.statusCode,
163 });
164 } catch (err) {
165 log.end().error('error streaming response', {
166 httpCode: response.statusCode,
167 error: err.message,
168 });
169 }
170}
171
172const validPath = '.system-d26a9498-cb7c-4a87-a44a-8ae204f5ba6c/';
173

Callers 2

listVeeamFilesFunction · 0.85
getVeeamFileFunction · 0.85

Calls 6

getResponseHeaderFunction · 0.85
debugMethod · 0.80
addDefaultFieldsMethod · 0.80
endMethod · 0.80
infoMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected