| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- import { Stream } from "../core/streaming.mjs";
- import { formatRequestDetails, loggerFor } from "./utils/log.mjs";
- export async function defaultParseResponse(client, props) {
- const { response, requestLogID, retryOfRequestLogID, startTime } = props;
- const body = await (async () => {
- if (props.options.stream) {
- 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);
- }
- return Stream.fromSSEResponse(response, props.controller);
- }
- // 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 contentLength = response.headers.get('content-length');
- if (contentLength === '0') {
- // if there is no content we can't do anything
- return undefined;
- }
- const json = await response.json();
- return addRequestID(json, response);
- }
- const text = await response.text();
- return text;
- })();
- loggerFor(client).debug(`[${requestLogID}] response parsed`, formatRequestDetails({
- retryOfRequestLogID,
- url: response.url,
- status: response.status,
- body,
- durationMs: Date.now() - startTime,
- }));
- return body;
- }
- export function addRequestID(value, response) {
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
- return value;
- }
- return Object.defineProperty(value, '_request_id', {
- value: response.headers.get('request-id'),
- enumerable: false,
- });
- }
- //# sourceMappingURL=parse.mjs.map
|