export const CurlCodegen = {
  id: "curl",
  name: "cURL",
  language: "sh",
  generator: ({
    url,
    pathName,
    queryString,
    auth,
    httpUser,
    httpPassword,
    bearerToken,
    method,
    rawInput,
    rawParams,
    rawRequestBody,
    contentType,
    headers,
  }) => {
    const requestString = []
    requestString.push(`curl -X ${method}`)
    requestString.push(`  '${url}${pathName}${queryString}'`)
    if (auth === "Basic Auth") {
      const basic = `${httpUser}:${httpPassword}`
      requestString.push(
        `  -H 'Authorization: Basic ${window.btoa(
          unescape(encodeURIComponent(basic))
        )}'`
      )
    } else if (auth === "Bearer Token" || auth === "OAuth 2.0") {
      requestString.push(`  -H 'Authorization: Bearer ${bearerToken}'`)
    }
    if (headers) {
      headers.forEach(({ key, value }) => {
        if (key) requestString.push(`  -H '${key}: ${value}'`)
      })
    }
    if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
      const requestBody = rawInput ? rawParams : rawRequestBody
      requestString.push(`  -H 'Content-Type: ${contentType}; charset=utf-8'`)
      requestString.push(`  -d '${requestBody}'`)
    }
    return requestString.join(" \\\n")
  },
}