/**
* Transforms HTTP response data for diagnostics.
*
* @param {Response} response The HTTP response object.
* @returns {object} A transformed object containing relevant response data.
*/
function transformResponse(response) {
const transformedData = {
statusCode: response.status, // HTTP status code
headers: Object.entries(response.headers).reduce((acc, [key, value]) => {
acc[key] = value;
return acc;
}, {}), // Headers as an object
responseTime: response.responseTime, // Response time in milliseconds
url: response.url, // The URL of the request
method: response.method, // HTTP Method
body: response.text() || response.json() || response.blob(), // Response body as text, JSON, or Blob
headersSize: response.headers.length, // Number of headers
contentLength: response.headers['Content-Length'] ? parseInt(response.headers['Content-Length']) : 0, // Content length
cacheControl: response.headers['Cache-Control'] || null, // Cache-Control header
contentType: response.headers['Content-Type'] || null, //Content-Type header
};
return transformedData;
}
//Example usage (for testing)
// const mockResponse = {
// status: 200,
// headers: { 'Content-Type': 'application/json', 'X-Custom-Header': 'value' },
// responseTime: 150,
// url: 'https://example.com/api/data',
// method: 'GET',
// text: '{"data": "some data"}',
// };
// const transformed = transformResponse(mockResponse);
// console.log(transformed);
Add your comment