UNPKG

api

Version:

Magical SDK generation from an OpenAPI definition 🪄

49 lines (42 loc) • 1.42 kB
import type Oas from 'oas'; function stripTrailingSlash(url: string) { if (url[url.length - 1] === '/') { return url.slice(0, -1); } return url; } /** * With an SDK server config and an instance of OAS we should extract and prepare the server and * any server variables to be supplied to `@readme/oas-to-har`. * */ export default function prepareServer(spec: Oas, url: string, variables: Record<string, string | number> = {}) { let serverIdx; const sanitizedUrl = stripTrailingSlash(url); (spec.api.servers || []).forEach((server, i) => { if (server.url === sanitizedUrl) { serverIdx = i; } }); // If we were able to find the passed in server in the OAS servers, we should use that! If we // couldn't and server variables were passed in we should try our best to handle that, otherwise // we should ignore the passed in server and use whever the default from the OAS is. if (serverIdx) { return { selected: serverIdx, variables, }; } else if (Object.keys(variables).length) { // @todo we should run `oas.replaceUrl(url)` and pass that unto `@readme/oas-to-har` } else { const server = spec.splitVariables(url); if (server) { return { selected: server.selected, variables: server.variables, }; } // @todo we should pass `url` directly into `@readme/oas-to-har` as the base URL } return false; }