UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

51 lines (50 loc) 1.71 kB
'use client'; export const generator = (url, data, { mediaAdapters }) => { const s = []; const imports = new Set(['System', 'System.Net.Http', 'System.Text']); const headers = { ...data.header }; // Handle request body let body; if (data.body && data.bodyMediaType && data.bodyMediaType in mediaAdapters) { body = mediaAdapters[data.bodyMediaType].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); } // Add cookie header if cookies are present if (Object.keys(data.cookie).length > 0) { const cookie = Object.entries(data.cookie) .map(([key, param]) => `${key}=${param.value}`) .join('; '); addHeader('cookie', cookie); } s.push(...headerLines); // Build the request 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}");`); } // Add response handling s.push('var responseBody = await response.Content.ReadAsStringAsync();'); return s.join('\n'); };