fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
39 lines (34 loc) • 1.37 kB
JavaScript
'use client';
import { resolveMediaAdapter } from "../media/resolve-adapter.js";
import "../media/adapter.js";
import { generatePythonObject } from "../to-python-object.js";
//#region src/requests/generators/python.ts
const generator = (url, data, { mediaAdapters }) => {
const headers = {};
const imports = /* @__PURE__ */ new Set();
const params = [`"${data.method}"`, "url"];
let body;
imports.add("requests");
if (data.body && data.bodyMediaType) {
const adapter = resolveMediaAdapter(data.bodyMediaType, mediaAdapters);
headers["Content-Type"] = data.bodyMediaType;
body = adapter?.generateExample(data, { lang: "python" });
if (body) params.push("data = body");
}
for (const [k, v] of Object.entries(data.header)) headers[k] = v.value;
if (Object.keys(headers).length > 0) params.push(`headers = ${generatePythonObject(headers, imports)}`);
const inputCookies = Object.entries(data.cookie);
if (inputCookies.length > 0) {
const cookies = {};
for (const [k, v] of inputCookies) cookies[k] = v.value;
params.push(`cookies = ${generatePythonObject(cookies, imports)}`);
}
return `${Array.from(imports).map((name) => "import " + name).join("\n")}
url = ${JSON.stringify(url)}
${body ?? ""}
response = requests.request(${params.join(", ")})
print(response.text)`;
};
//#endregion
export { generator };
//# sourceMappingURL=python.js.map