From ccc6255226b98d306f9dbc8a55b56ae980ffa535 Mon Sep 17 00:00:00 2001 From: soyuka Date: Thu, 14 Mar 2024 09:14:47 +0100 Subject: [PATCH] fix: accept vnd.openapi+json --- src/openapi3/parseOpenApi3Documentation.ts | 11 +++++++++-- src/openapi3/types.ts | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/openapi3/types.ts diff --git a/src/openapi3/parseOpenApi3Documentation.ts b/src/openapi3/parseOpenApi3Documentation.ts index f54f6c4..4937cf0 100644 --- a/src/openapi3/parseOpenApi3Documentation.ts +++ b/src/openapi3/parseOpenApi3Documentation.ts @@ -1,6 +1,7 @@ import { Api } from "../Api.js"; import handleJson, { removeTrailingSlash } from "./handleJson.js"; import type { OpenAPIV3 } from "openapi-types"; +import type { RequestInitExtended } from "./types"; export interface ParsedOpenApi3Documentation { api: Api; @@ -9,10 +10,16 @@ export interface ParsedOpenApi3Documentation { } export default function parseOpenApi3Documentation( - entrypointUrl: string + entrypointUrl: string, + options: RequestInitExtended = {} ): Promise { entrypointUrl = removeTrailingSlash(entrypointUrl); - return fetch(entrypointUrl) + let headers: HeadersInit | undefined = + typeof options.headers === "function" ? options.headers() : options.headers; + headers = new Headers(headers); + headers.append("Accept", "application/vnd.openapi+json"); + + return fetch(entrypointUrl, { ...options, headers: headers }) .then((res) => Promise.all([res, res.json()])) .then( ([res, response]: [res: Response, response: OpenAPIV3.Document]) => { diff --git a/src/openapi3/types.ts b/src/openapi3/types.ts new file mode 100644 index 0000000..17ba138 --- /dev/null +++ b/src/openapi3/types.ts @@ -0,0 +1,3 @@ +export interface RequestInitExtended extends Omit { + headers?: HeadersInit | (() => HeadersInit); +}