12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { isJSONContentType } from "~/helpers/utils/contenttypes"
- export const GoNativeCodegen = {
- id: "go-native",
- name: "Go Native",
- language: "golang",
- generator: ({
- url,
- pathName,
- queryString,
- auth,
- httpUser,
- httpPassword,
- bearerToken,
- method,
- rawInput,
- rawParams,
- rawRequestBody,
- contentType,
- headers,
- }) => {
- const requestString = []
- let genHeaders = []
- // initial request setup
- const requestBody = rawInput ? rawParams : rawRequestBody
- if (method === "GET") {
- requestString.push(
- `req, err := http.NewRequest("${method}", "${url}${pathName}?${queryString}")\n`
- )
- }
- if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
- genHeaders.push(`req.Header.Set("Content-Type", "${contentType}")\n`)
- if (isJSONContentType(contentType)) {
- requestString.push(`var reqBody = []byte(\`${requestBody}\`)\n\n`)
- requestString.push(
- `req, err := http.NewRequest("${method}", "${url}${pathName}?${queryString}", bytes.NewBuffer(reqBody))\n`
- )
- } else if (contentType.includes("x-www-form-urlencoded")) {
- requestString.push(
- `req, err := http.NewRequest("${method}", "${url}${pathName}?${queryString}", strings.NewReader("${requestBody}"))\n`
- )
- }
- }
- // headers
- // auth
- if (auth === "Basic Auth") {
- const basic = `${httpUser}:${httpPassword}`
- genHeaders.push(
- `req.Header.Set("Authorization", "Basic ${window.btoa(
- unescape(encodeURIComponent(basic))
- )}")\n`
- )
- } else if (auth === "Bearer Token" || auth === "OAuth 2.0") {
- genHeaders.push(
- `req.Header.Set("Authorization", "Bearer ${bearerToken}")\n`
- )
- }
- // custom headers
- if (headers) {
- headers.forEach(({ key, value }) => {
- if (key) genHeaders.push(`req.Header.Set("${key}", "${value}")\n`)
- })
- }
- genHeaders = genHeaders.join("").slice(0, -1)
- requestString.push(`${genHeaders}\n`)
- requestString.push(
- `if err != nil {\n log.Fatalf("An error occurred %v", err)\n}\n\n`
- )
- // request boilerplate
- requestString.push(`client := &http.Client{}\n`)
- requestString.push(
- `resp, err := client.Do(req)\nif err != nil {\n log.Fatalf("An error occurred %v", err)\n}\n\n`
- )
- requestString.push(`defer resp.Body.Close()\n`)
- requestString.push(
- `body, err := ioutil.ReadAll(resp.Body)\nif err != nil {\n log.Fatalln(err)\n}\n`
- )
- return requestString.join("")
- },
- }
|