fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
42 lines (39 loc) • 1.49 kB
JavaScript
'use client';
import { resolveMediaAdapter } from "../media/resolve-adapter.js";
import "../media/adapter.js";
//#region src/requests/generators/csharp.ts
const generator = (url, data, { mediaAdapters }) => {
const s = [];
const imports = new Set([
"System",
"System.Net.Http",
"System.Text"
]);
const headers = { ...data.header };
let body;
if (data.body && data.bodyMediaType) body = resolveMediaAdapter(data.bodyMediaType, mediaAdapters)?.generateExample(data, {
lang: "csharp",
addImport(from) {
imports.add(from);
}
});
for (const specifier of imports) s.push(`using ${specifier};`);
s.push("");
if (body) s.push(body, "");
s.push("var client = new HttpClient();");
const headerLines = [];
function addHeader(key, value) {
headerLines.push(`client.DefaultRequestHeaders.Add("${key}", ${JSON.stringify(value)});`);
}
for (const k in headers) addHeader(k, headers[k].value);
if (Object.keys(data.cookie).length > 0) addHeader("cookie", Object.entries(data.cookie).map(([key, param]) => `${key}=${param.value}`).join("; "));
s.push(...headerLines);
const method = data.method[0].toUpperCase() + data.method.slice(1).toLowerCase() + "Async";
if (body) s.push(`var response = await client.${method}("${url}", body);`);
else s.push(`var response = await client.${method}("${url}");`);
s.push("var responseBody = await response.Content.ReadAsStringAsync();");
return s.join("\n");
};
//#endregion
export { generator };
//# sourceMappingURL=csharp.js.map