fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
53 lines (47 loc) • 1.64 kB
JavaScript
'use client';
import { ident } from "../string-utils.js";
import { resolveMediaAdapter } from "../media/resolve-adapter.js";
import "../media/adapter.js";
//#region src/requests/generators/go.ts
const generator = (url, data, { mediaAdapters }) => {
const imports = [
"fmt",
"net/http",
"io/ioutil"
];
const headers = /* @__PURE__ */ new Map();
const variables = /* @__PURE__ */ 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) {
const adapter = resolveMediaAdapter(data.bodyMediaType, mediaAdapters);
headers.set("Content-Type", `"${data.bodyMediaType}"`);
body = adapter?.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))
}`;
};
//#endregion
export { generator };
//# sourceMappingURL=go.js.map