UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

48 lines (44 loc) 1.55 kB
'use client'; import { ident } from '../requests/_shared.js'; export const generator = (url, data, { mediaAdapters }) => { const imports = ['fmt', 'net/http', 'io/ioutil']; const headers = new Map(); const variables = new Map(); variables.set('url', JSON.stringify(url)); for (const header in data.header) { headers.set(header, JSON.stringify(data.header[header].value)); } const cookies = Object.entries(data.cookie); if (cookies.length > 0) { headers.set('Cookie', JSON.stringify(cookies.map(([k, param]) => `${k}=${param.value}`).join('; '))); } let body; if (data.body && data.bodyMediaType && data.bodyMediaType in mediaAdapters) { headers.set('Content-Type', `"${data.bodyMediaType}"`); body = mediaAdapters[data.bodyMediaType].generateExample(data, { lang: 'go', addImport(from) { imports.push(from); }, }); } return `package main import ( ${ident(imports.map((v) => `"${v}"`).join('\n'))} ) func main() { ${Array.from(variables.entries()) .map(([k, v]) => ident(`${k} := ${v}`)) .join('\n')} ${body ? ident(body) : ''} req, _ := http.NewRequest("${data.method}", url, ${body ? 'body' : 'nil'}) ${ident(Array.from(headers.entries()) .map(([key, value]) => `req.Header.Add("${key}", ${value})`) .join('\n'))} res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) }`; };