55 lines
2.3 KiB
JavaScript
55 lines
2.3 KiB
JavaScript
"use strict";
|
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.defaultParseResponse = defaultParseResponse;
|
|
exports.addRequestID = addRequestID;
|
|
const streaming_1 = require("../core/streaming.js");
|
|
const log_1 = require("./utils/log.js");
|
|
async function defaultParseResponse(client, props) {
|
|
const { response, requestLogID, retryOfRequestLogID, startTime } = props;
|
|
const body = await (async () => {
|
|
if (props.options.stream) {
|
|
(0, log_1.loggerFor)(client).debug('response', response.status, response.url, response.headers, response.body);
|
|
// Note: there is an invariant here that isn't represented in the type system
|
|
// that if you set `stream: true` the response type must also be `Stream<T>`
|
|
if (props.options.__streamClass) {
|
|
return props.options.__streamClass.fromSSEResponse(response, props.controller, client);
|
|
}
|
|
return streaming_1.Stream.fromSSEResponse(response, props.controller, client);
|
|
}
|
|
// fetch refuses to read the body when the status code is 204.
|
|
if (response.status === 204) {
|
|
return null;
|
|
}
|
|
if (props.options.__binaryResponse) {
|
|
return response;
|
|
}
|
|
const contentType = response.headers.get('content-type');
|
|
const mediaType = contentType?.split(';')[0]?.trim();
|
|
const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');
|
|
if (isJSON) {
|
|
const json = await response.json();
|
|
return addRequestID(json, response);
|
|
}
|
|
const text = await response.text();
|
|
return text;
|
|
})();
|
|
(0, log_1.loggerFor)(client).debug(`[${requestLogID}] response parsed`, (0, log_1.formatRequestDetails)({
|
|
retryOfRequestLogID,
|
|
url: response.url,
|
|
status: response.status,
|
|
body,
|
|
durationMs: Date.now() - startTime,
|
|
}));
|
|
return body;
|
|
}
|
|
function addRequestID(value, response) {
|
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
return value;
|
|
}
|
|
return Object.defineProperty(value, '_request_id', {
|
|
value: response.headers.get('x-request-id'),
|
|
enumerable: false,
|
|
});
|
|
}
|
|
//# sourceMappingURL=parse.js.map
|