UNPKG

swagger-client

Version:

SwaggerJS - a collection of interfaces for OAI specs

74 lines (73 loc) 2.42 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default; exports.__esModule = true; exports.default = void 0; var _empty = require("@swagger-api/apidom-reference/configuration/empty"); require("../../../../../../helpers/fetch-polyfill.node.js"); require("../../../../../../helpers/abortcontroller-polyfill.node.js"); var _index = _interopRequireDefault(require("../../../../../../http/index.js")); class HTTPResolverSwaggerClient extends _empty.HTTPResolver { swaggerHTTPClient = _index.default; swaggerHTTPClientConfig; constructor({ swaggerHTTPClient = _index.default, swaggerHTTPClientConfig = {}, ...rest } = {}) { super({ ...rest, name: 'http-swagger-client' }); this.swaggerHTTPClient = swaggerHTTPClient; this.swaggerHTTPClientConfig = swaggerHTTPClientConfig; } getHttpClient() { return this.swaggerHTTPClient; } async read(file) { const client = this.getHttpClient(); const controller = new AbortController(); const { signal } = controller; const timeoutID = setTimeout(() => { controller.abort(); }, this.timeout); const credentials = this.getHttpClient().withCredentials || this.withCredentials ? 'include' : 'same-origin'; const redirect = this.redirects === 0 ? 'error' : 'follow'; const follow = this.redirects > 0 ? this.redirects : undefined; try { const response = await client({ url: file.uri, signal, userFetch: async (resource, options) => { let res = await fetch(resource, options); try { // undici supports mutations res.headers.delete('Content-Type'); } catch { // Fetch API has guards which prevent mutations res = new Response(res.body, { ...res, headers: new Headers(res.headers) }); res.headers.delete('Content-Type'); } return res; }, credentials, redirect, follow, ...this.swaggerHTTPClientConfig }); return response.text.arrayBuffer(); } catch (error) { throw new _empty.ResolverError(`Error downloading "${file.uri}"`, { cause: error }); } finally { clearTimeout(timeoutID); } } } var _default = exports.default = HTTPResolverSwaggerClient;