From 63eda3af6274429be12aec778d609cbf79ebf3b4 Mon Sep 17 00:00:00 2001 From: brianvoe Date: Wed, 8 Jan 2025 15:24:20 -0600 Subject: [PATCH] output - dist/docs update output --- dist/gimmehttp.cjs.js | 56 ++- dist/gimmehttp.d.ts | 12 + dist/gimmehttp.es.js | 832 +++++++++++++++++------------------------- dist/gimmehttp.umd.js | 56 ++- docs/assets/index.css | 2 +- docs/assets/index.js | 68 ++-- 6 files changed, 423 insertions(+), 603 deletions(-) diff --git a/dist/gimmehttp.cjs.js b/dist/gimmehttp.cjs.js index fba0592..9cfa0df 100644 --- a/dist/gimmehttp.cjs.js +++ b/dist/gimmehttp.cjs.js @@ -1,35 +1,21 @@ -"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=[];function j(){return f}function m(){return f.map(t=>t.language).filter((t,n,e)=>e.indexOf(t)===n)}function p(t,n){if(t===""||t===void 0)return new Error("Language is required");const e=f.filter(r=>r.language.toLowerCase()===t.toLowerCase());if(e.length===0)return new Error("No client found for "+t);const i=e.find(r=>r.default)||e[0];if(!n)return i;const o=e.find(r=>r.client.toLowerCase()===n.toLowerCase());return o||i}function k(t,n){const e=p(t,n);if(e instanceof Error)return e;e.default=!0}function a(t){if(!t)return new Error("Client is required");if(Array.isArray(t)){t.forEach(i=>a(i));return}const n=f.filter(i=>i.language.toLowerCase()===t.language.toLowerCase()),e=n.find(i=>i.client.toLowerCase()===t.client.toLowerCase());if(t.default===void 0&&(t.default=n.length===0),e){const i=f.indexOf(t);f[i]=t;return}f.push(t)}function O(){f.splice(0,f.length)}function C(t){let n=w(t);if(n)return{error:n.message};t.config=b(t.config);const e=p(t.language,t.client);if(e instanceof Error)return{error:e.message};const i=e.generate(t.config,t.http);return{language:e.language,client:e.client,code:i}}function w(t){if(!t)return new Error("Request is required");if(!t.language)return new Error("language is required");if(!t.http)return new Error("http is required");if(!t.http.method)return new Error("http.method is required");if(!t.http.url)return new Error("http.url is required")}function b(t){return t=t||{},t.indent||(t.indent=" "),t.join||(t.join=` -`),t.handleErrors===void 0&&(t.handleErrors=!1),t}class d{constructor(n={}){this.code=[],this.currentDepth=0,this.indentChar=n.indent||" ",this.lineJoin=n.join||` -`}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0&&(this.code[this.code.length-1].line+=n)}indent(){this.currentDepth+=1}outdent(){this.currentDepth>0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function $(t,n){return t.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const q={default:!0,language:"c",client:"libcurl",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line("struct curl_slist *headers = NULL;");for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`headers = curl_slist_append(headers, "${i}: ${r}");`)):e.line(`headers = curl_slist_append(headers, "${i}: ${o}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${i}");`)}return n.body&&(e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),R(n.body,e),e.append(')");')),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line(`fprintf(stderr, "curl_easy_perform() failed: %s -", curl_easy_strerror(res));`),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}};function R(t,n){const e=JSON.stringify(t,null,2).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.Headers.Add("${i}", "${r}");`)):e.line(`request.Headers.Add("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`request.Headers.Add("Cookie", "${i}");`)}return n.body&&e.line(`request.Content = new StringContent("${JSON.stringify(n.body).replace(/"/g,'"')}", System.Text.Encoding.UTF8, "application/json");`),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},A={language:"csharp",client:"restsharp",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.AddHeader("${i}", "${r}");`)):e.line(`request.AddHeader("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`request.AddHeader("Cookie", "${i}");`)}return n.body&&e.line(`request.AddJsonBody(${JSON.stringify(n.body)});`),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},E={default:!0,language:"go",client:"http",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`}),i=$(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),i&&(e.line('"bytes"'),e.line('"encoding/json"')),t.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let o="nil";if(i){e.line("jsonBodyMap := map[string]any{"),e.indent();for(const[r,l]of Object.entries(n.body))e.line(`"${r}": ${JSON.stringify(l)},`);e.outdent(),e.line("}"),t.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),o="bytes.NewBuffer(jsonBodyBytes)",e.line()}if(t.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line()),n.headers){for(const[r,l]of Object.entries(n.headers))if(Array.isArray(l))for(const s of l)e.line(`req.Header.Add("${r}", "${s}")`);else e.line(`req.Header.Set("${r}", "${l}")`);e.line()}if(n.cookies){for(const[r,l]of Object.entries(n.cookies))if(Array.isArray(l))for(const s of l)e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${s}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${l}"})`);e.line()}return t.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),t.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},T={default:!0,language:"javascript",client:"fetch",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?e.line(`"${i}": "${o.join(", ")}",`):e.line(`"${i}": "${o}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.indent(),_(n.body,e),e.append(",")),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}};function _(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}};function L(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),t.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.indent(),H(n.body,e),e.append(");")),e.line("req.end();"),e.output()}};function H(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}};function B(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`$headers[] = "${i}: ${r}";`)):e.line(`$headers[] = "${i}: ${o}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[i,o]of Object.entries(n.cookies))e.line(`$cookies[] = "${i}=${o}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),h(n.body,e),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),t.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}};function h(t,n){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(e=>JSON.stringify(e)).join(", ")+"]");else{n.line("{"),n.indent();const e=Object.entries(t);e.forEach(([i,o],r)=>{Array.isArray(o)?n.line(`"${i}": [${o.map(l=>JSON.stringify(l)).join(", ")}]`):typeof o=="object"&&o!==null?(n.line(`"${i}": {`),n.indent(),h(o,n),n.outdent(),n.line("}")):n.line(`"${i}": ${JSON.stringify(o)}`),rrequest("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`"${i}" => "${r}",`)):e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[i,o]of Object.entries(n.cookies))e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => {'),e.indent(),g(n.body,e,!0),e.outdent(),e.line("}"),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}};function g(t,n,e=!1){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(i=>JSON.stringify(i)).join(", ")+"]");else{e||(n.line("{"),n.indent());const i=Object.entries(t);i.forEach(([o,r],l)=>{Array.isArray(r)?n.line(`"${o}": [${r.map(s=>JSON.stringify(s)).join(", ")}]`):typeof r=="object"&&r!==null?(n.line(`"${o}": {`),n.indent(),g(r,n,!0),n.outdent(),n.line("}")):n.line(`"${o}": ${JSON.stringify(r)}`),l0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];e.line("import http.client"),e.line("import json"),e.line();const u=new URL(n.url);if(e.line(`conn = http.client.HTTPSConnection("${u.hostname}", ${u.port||(u.protocol==="https:"?443:80)})`),e.line(),o&&(s.push("payload"),e.line("payload = "),e.indent(),F(n.body,e),e.line()),r){s.push("headers"),e.line("headers = {"),e.indent();for(const[c,y]of Object.entries(n.headers))Array.isArray(y)?e.line(`"${c}": "${y.join(", ")}",`):e.line(`"${c}": "${y}",`);e.outdent(),e.line("}"),e.line()}if(l){s.push("cookies"),e.line("cookies = {"),e.indent();for(const[c,y]of Object.entries(n.cookies))e.line(`"${c}": "${y}",`);e.outdent(),e.line("}"),e.line()}return e.line(`conn.request("${i}", "${u.pathname+u.search}"`+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}};function F(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),r){s.push("headers=headers"),e.line("headers = {"),e.indent();for(const[u,c]of Object.entries(n.headers))Array.isArray(c)?e.line(`"${u}": "${c.join(", ")}",`):e.line(`"${u}": "${c}",`);e.outdent(),e.line("}")}if(l){s.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[u,c]of Object.entries(n.cookies))e.line(`"${u}": "${c}",`);e.outdent(),e.line("}")}return o&&(s.push("data=data"),e.line("data = "),e.indent(),G(n.body,e)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}};function G(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request["${i}"] = "${r}"`)):e.line(`request["${i}"] = "${o}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[i,o]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("request.body = "),e.indent(),V(n.body,e)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function V(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`req.headers["${i}"] = "${r}"`)):e.line(`req.headers["${i}"] = "${o}"`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("req.body = "),e.indent(),Q(n.body,e)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function Q(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`.header("${i}", "${r}")`)):e.line(`.header("${i}", "${o}")`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))Array.isArray(o)?o.forEach(r=>e.line(`.cookie("${i}", "${r}")`)):e.line(`.cookie("${i}", "${o}")`);return n.body&&(e.line(".body("),e.indent(),X(n.body,e),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),t.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}};function X(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;iArray.isArray(u)?u.map(c=>`${s}=${c}`):`${s}=${u}`).join("; ");e.line(`-b "${l}" \\`),e.outdent()}if(n.body){const l=((o=n.headers)==null?void 0:o["content-type"])||((r=n.headers)==null?void 0:r["Content-Type"])||"application/json";if(e.indent(),l.includes("application/json"))e.line("-d $'"),e.indent(),Z(n.body,e),e.append("'"),e.outdent();else if(l==="application/x-www-form-urlencoded"){const s=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${s}'`)}else if(typeof n.body=="string"){const s=n.body.replace(/'/g,"'\\''");e.line(`-d '${s}'`)}e.outdent()}let i=e.output();return i=i.replace(/\\\s*$/,"").trim(),i}};function Z(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`),i="\\";for(let o=0;o0){for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.addValue("${r}", forHTTPHeaderField: "${i}")`)):e.line(`request.addValue("${o}", forHTTPHeaderField: "${i}")`);e.line()}if(n.cookies&&Object.keys(n.cookies).length>0){for(const[i,o]of Object.entries(n.cookies))e.line(`request.addValue("${i}=${o}", forHTTPHeaderField: "Cookie")`);e.line()}return n.body&&(e.line("let body = "),e.indent(),ne(n.body,e),e.line("request.httpBody = body"),e.line()),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};function ne(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ii.language).filter((i,n,e)=>e.indexOf(i)===n)}function $(i,n){if(i===""||i===void 0)return new Error("Language is required");const e=f.filter(t=>t.language.toLowerCase()===i.toLowerCase());if(e.length===0)return new Error("No client found for "+i);const o=e.find(t=>t.default)||e[0];if(!n)return o;const r=e.find(t=>t.client.toLowerCase()===n.toLowerCase());return r||o}function C(i,n){const e=$(i,n);if(e instanceof Error)return e;e.default=!0}function a(i){if(!i)return new Error("Client is required");if(Array.isArray(i)){i.forEach(o=>a(o));return}const n=f.filter(o=>o.language.toLowerCase()===i.language.toLowerCase()),e=n.find(o=>o.client.toLowerCase()===i.client.toLowerCase());if(i.default===void 0&&(i.default=n.length===0),e){const o=f.indexOf(i);f[o]=i;return}f.push(i)}function m(){f.splice(0,f.length)}function O(i){let n=w(i);if(n)return{error:n.message};i.config=q(i.config);const e=$(i.language,i.client);if(e instanceof Error)return{error:e.message};const o=e.generate(i.config,i.http);return{language:e.language,client:e.client,code:o}}function w(i){if(!i)return new Error("Request is required");if(!i.language)return new Error("language is required");if(!i.http)return new Error("http is required");if(!i.http.method)return new Error("http.method is required");if(!i.http.url)return new Error("http.url is required")}function q(i){return i=i||{},i.indent||(i.indent=" "),i.join||(i.join=` +`),i.handleErrors===void 0&&(i.handleErrors=!1),i}class u{constructor(n={}){this.code=[],this.currentDepth=0,this.jsonConfig={objOpen:"{",objClose:"}",arrOpen:"[",arrClose:"]",separator:": ",endComma:!1},this.indentChar=n.indent||" ",this.lineJoin=n.join||` +`,this.jsonConfig=n.json||this.jsonConfig}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0?this.code[this.code.length-1].line+=n:this.line(n)}json(n,e=!1){if(!n){this.append("null");return}switch(typeof n){case"object":if(Array.isArray(n))this.append(this.jsonConfig.arrOpen),this.indent(),n.forEach((o,r)=>{this.json(o,typeof n=="object"||Array.isArray(n)),(r{this.line(`"${r}"`+this.jsonConfig.separator),this.json(n[r],typeof r=="object"||Array.isArray(r)),(t0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function j(i){let n,e,o,r,t;try{const l=new URL(i);n=l.hostname,e=l.pathname,t=l.search,o=l.port?parseInt(l.port):l.protocol==="https:"?443:80,r=l.protocol}catch{const s=i.split("/");n=s[0];const d="/"+s.slice(1).join("/"),[c,h]=d.split("?");e=c,t=h?"?"+h:"",o=80,r="http:"}return e.startsWith("/")||(e="/"+e),{hostname:n,path:e,port:o,protocol:r,params:t}}function b(i,n){return i.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const R={default:!0,language:"c",client:"libcurl",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line(),e.line("struct curl_slist *headers = NULL;");for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`headers = curl_slist_append(headers, "${o}: ${t}");`)):e.line(`headers = curl_slist_append(headers, "${o}: ${r}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${o}");`)}return n.body&&(e.line(),e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),e.json(n.body),e.append(')");')),e.line(),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line('fprintf(stderr, "failed: %s", curl_easy_strerror(res));'),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line(),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}},E={default:!0,language:"csharp",client:"http",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("using System;"),e.line("using System.Net.Http;"),e.line("using System.Threading.Tasks;"),e.line(),e.line("namespace HttpClientExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static async Task Main(string[] args)"),e.line("{"),e.indent(),e.line("using (HttpClient client = new HttpClient())"),e.line("{"),e.indent(),e.line(`HttpRequestMessage request = new HttpRequestMessage(HttpMethod.${n.method.toUpperCase()}, "${n.url}");`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.Headers.Add("${o}", "${t}");`)):e.line(`request.Headers.Add("${o}", "${r}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`request.Headers.Add("Cookie", "${o}");`)}return n.body&&(e.line(),e.line("request.Content = new StringContent("),e.json(n.body),e.append(', System.Text.Encoding.UTF8, "application/json");')),e.line(),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},T={language:"csharp",client:"restsharp",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.AddHeader("${o}", "${t}");`)):e.line(`request.AddHeader("${o}", "${r}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`request.AddHeader("Cookie", "${o}");`)}return n.body&&(e.line(),e.line("request.AddJsonBody("),e.json(n.body),e.append(");")),e.line(),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},A={default:!0,language:"go",client:"http",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`}),o=b(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),o&&(e.line('"bytes"'),e.line('"encoding/json"')),i.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let r="nil";if(o&&(e.line("jsonBodyMap := map[string]any"),e.json(n.body),i.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),r="bytes.NewBuffer(jsonBodyBytes)",e.line()),i.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`),e.line()),n.headers){for(const[t,l]of Object.entries(n.headers))if(Array.isArray(l))for(const s of l)e.line(`req.Header.Add("${t}", "${s}")`);else e.line(`req.Header.Set("${t}", "${l}")`);e.line()}if(n.cookies){for(const[t,l]of Object.entries(n.cookies))if(Array.isArray(l))for(const s of l)e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${s}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${l}"})`);e.line()}return i.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),i.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},_={default:!0,language:"javascript",client:"fetch",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}},U={language:"javascript",client:"axios",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("axios({"),e.indent(),e.line(`method: "${n.method.toLowerCase()}",`),e.line(`url: "${n.url}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}if(n.cookies){e.line("cookies: {"),e.indent();for(const[o,r]of Object.entries(n.cookies))e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}},L={language:"javascript",client:"jquery",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("$.ajax({"),e.indent(),e.line(`url: "${n.url}",`),e.line(`type: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body),e.append(","),e.line('contentType: "application/json",')),e.line("success: function(data) {"),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("},"),i.handleErrors&&(e.line("error: function(jqXHR, textStatus, errorThrown) {"),e.indent(),e.line('console.error("Request failed:", textStatus, errorThrown);'),e.outdent(),e.line("},")),e.outdent(),e.line("});"),e.output()}},P={language:"node",client:"http",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});e.line('const http = require("http");'),e.line();const{hostname:o,path:r,port:t,protocol:l}=j(n.url);if(e.line("const options = {"),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),e.line(`hostname: "${o}",`),e.line(`path: "${r}",`),n.headers){e.line("headers: {"),e.indent();for(const[s,d]of Object.entries(n.headers))Array.isArray(d)?e.line(`"${s}": "${d.join(", ")}",`):e.line(`"${s}": "${d}",`);e.outdent(),e.line("},")}return e.outdent(),e.line("};"),e.line(),e.line("const req = http.request(options, (res) => {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),i.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.json(n.body),e.append(");")),e.line("req.end();"),e.output()}},S={language:"node",client:"fetch",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line('const fetch = require("node-fetch");'),e.line(),e.line('fetch("'+n.url+'", {'),e.indent(),e.line('method: "'+n.method.toUpperCase()+'",'),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}},v={default:!0,language:"php",client:"curl",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("e.line(`$headers[] = "${o}: ${t}";`)):e.line(`$headers[] = "${o}: ${r}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[o,r]of Object.entries(n.cookies))e.line(`$cookies[] = "${o}=${r}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),e.line(),e.json(n.body),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),i.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}},H={language:"php",client:"guzzle",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`,json:{objOpen:"[",objClose:"]",arrOpen:"[",arrClose:"]",separator:" => ",endComma:!0}});if(e.line("request("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`"${o}" => "${t}",`)):e.line(`"${o}" => "${r}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[o,r]of Object.entries(n.cookies))e.line(`"${o}" => "${r}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => '),e.json(n.body),e.append(","),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}},x={default:!0,language:"python",client:"http",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`}),o=n.method.toUpperCase(),r=o!=="GET"&&n.body,t=n.headers&&Object.keys(n.headers).length>0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];e.line("import http.client"),e.line("import json"),e.line();const{hostname:d,path:c,port:h,protocol:G}=j(n.url);if(e.line(`conn = http.client.HTTPSConnection("${d}", ${h})`),t){e.line(),s.push("headers"),e.line("headers = {"),e.indent();for(const[p,y]of Object.entries(n.headers))Array.isArray(y)?e.line(`"${p}": "${y.join(", ")}",`):e.line(`"${p}": "${y}",`);e.outdent(),e.line("}")}if(l){e.line(),s.push("cookies"),e.line("cookies = {"),e.indent();for(const[p,y]of Object.entries(n.cookies))e.line(`"${p}": "${y}",`);e.outdent(),e.line("}")}return r&&(e.line(),s.push("payload"),e.line("payload = "),e.json(n.body)),e.line(),e.line(`conn.request("${o}", "${c}"`+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}},B={language:"python",client:"requests",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`}),r=n.method.toUpperCase()!=="GET"&&n.body,t=n.headers&&Object.keys(n.headers).length>0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),t){e.line(),s.push("headers=headers"),e.line("headers = {"),e.indent();for(const[d,c]of Object.entries(n.headers))e.line(`"${d}": "${c}"`),Object.keys(n.headers).indexOf(d)!==Object.keys(n.headers).length-1&&e.append(",");e.outdent(),e.line("}")}if(l){e.line(),s.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[d,c]of Object.entries(n.cookies))e.line(`"${d}": "${c}"`),Object.keys(n.cookies).indexOf(d)!==Object.keys(n.cookies).length-1&&e.append(",");e.outdent(),e.line("}")}return r&&(e.line(),s.push("data=data"),e.line("data = "),e.json(n.body)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}},N={default:!0,language:"ruby",client:"nethttp",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line('require "net/http"'),e.line('require "uri"'),e.line(),e.line('uri = URI.parse("'+n.url+'")'),n.method.toUpperCase()==="GET"?e.line("request = Net::HTTP::Get.new(uri)"):n.method.toUpperCase()==="POST"?e.line("request = Net::HTTP::Post.new(uri)"):n.method.toUpperCase()==="PUT"?e.line("request = Net::HTTP::Put.new(uri)"):n.method.toUpperCase()==="DELETE"?e.line("request = Net::HTTP::Delete.new(uri)"):e.line('request = Net::HTTP::GenericRequest.new("'+n.method.toUpperCase()+'", uri.path, nil, nil)'),n.headers&&Object.keys(n.headers).length>0)for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request["${o}"] = "${t}"`)):e.line(`request["${o}"] = "${r}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[o,r]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${o}=${r}"`);return n.body&&(e.line("request.body = "),e.json(n.body)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},D={language:"ruby",client:"faraday",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line('require "faraday"'),e.line(),e.line('conn = Faraday.new(url: "'+n.url+'") do |f|'),e.indent(),e.line("f.adapter Faraday.default_adapter"),e.outdent(),e.line("end"),e.line(),e.line("response = conn."+n.method.toLowerCase()+" do |req|"),e.indent(),e.line('req.url "'+n.url+'"'),n.headers){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`req.headers["${o}"] = "${t}"`)):e.line(`req.headers["${o}"] = "${r}"`)}if(n.cookies){e.line();for(const[o,r]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${o}=${r}"`)}return n.body&&(e.line(),e.line("req.body = "),e.json(n.body)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},F={language:"rust",client:"reqwest",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("use reqwest::blocking::Client;"),e.line("use std::error::Error;"),e.line(),e.line("fn main() -> Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`.header("${o}", "${t}")`)):e.line(`.header("${o}", "${r}")`);if(n.cookies)for(const[o,r]of Object.entries(n.cookies))Array.isArray(r)?r.forEach(t=>e.line(`.cookie("${o}", "${t}")`)):e.line(`.cookie("${o}", "${r}")`);return n.body&&(e.line(".body("),e.json(n.body),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),i.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}},M={default:!0,language:"shell",client:"curl",generate(i,n){var r,t;const e=new u({indent:i.indent||" ",join:i.join||` \\ +`});if(e.line(`curl -X ${n.method} "${n.url}"`),e.indent(),n.headers)for(const[l,s]of Object.entries(n.headers))if(Array.isArray(s))for(const d of s)e.line(`-H "${l}: ${d.replace(/"/g,'\\"')}"`);else e.line(`-H "${l}: ${s.replace(/"/g,'\\"')}"`);if(n.cookies){const l=Object.entries(n.cookies).flatMap(([s,d])=>Array.isArray(d)?d.map(c=>`${s}=${c}`):`${s}=${d}`).join("; ");e.line(`-b "${l}"`)}if(n.body){const l=((r=n.headers)==null?void 0:r["content-type"])||((t=n.headers)==null?void 0:t["Content-Type"])||"application/json";if(l.includes("application/json"))e.line("-d $'"),e.json(n.body),e.append("'");else if(l==="application/x-www-form-urlencoded"){const s=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${s}'`)}else if(typeof n.body=="string"){const s=n.body.replace(/'/g,"'\\''");e.line(`-d '${s}'`)}}let o=e.output();return o=o.replace(/\\\s*$/,"").trim(),o}},J={default:!0,language:"swift",client:"nsurlsession",generate(i,n){const e=new u({indent:i.indent||" ",join:i.join||` +`});if(e.line("import Foundation"),e.line(),e.line('let url = URL(string: "'+n.url+'")!'),e.line("var request = URLRequest(url: url)"),e.line('request.httpMethod = "'+n.method.toUpperCase()+'"'),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.addValue("${t}", forHTTPHeaderField: "${o}")`)):e.line(`request.addValue("${r}", forHTTPHeaderField: "${o}")`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();for(const[o,r]of Object.entries(n.cookies))e.line(`request.addValue("${o}=${r}", forHTTPHeaderField: "Cookie")`)}return n.body&&(e.line(),e.line("let body = "),e.json(n.body),e.line("request.httpBody = body")),e.line(),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};a(R);a(E);a(T);a(A);a(_);a(U);a(L);a(P);a(S);a(v);a(H);a(x);a(B);a(N);a(D);a(F);a(M);a(J);exports.Builder=u;exports.ClearRegistry=m;exports.Codes=g;exports.Generate=O;exports.IsJsonRequest=b;exports.Languages=k;exports.Register=a;exports.Search=$;exports.SetDefault=C; diff --git a/dist/gimmehttp.d.ts b/dist/gimmehttp.d.ts index 54526c7..39bc8a4 100644 --- a/dist/gimmehttp.d.ts +++ b/dist/gimmehttp.d.ts @@ -3,11 +3,13 @@ export declare class Builder { private indentChar; private lineJoin; private currentDepth; + private jsonConfig; constructor(options?: BuilderOptions); getIndent(): string; getJoin(): string; line(line?: string): void; append(line: string): void; + json(json: any, isSub?: boolean): void; indent(): void; outdent(): void; output(): string; @@ -16,6 +18,7 @@ export declare class Builder { declare interface BuilderOptions { indent?: string; join?: string; + json?: JSON_2; } export declare function ClearRegistry(): void; @@ -53,6 +56,15 @@ export declare function IsJsonRequest(method: string, headers?: { [key: string]: string; }): boolean; +declare interface JSON_2 { + objOpen: string; + objClose: string; + arrOpen: string; + arrClose: string; + separator: string; + endComma?: boolean; +} + export declare function Languages(): string[]; export declare type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; diff --git a/dist/gimmehttp.es.js b/dist/gimmehttp.es.js index 4a949a8..3c8e11f 100644 --- a/dist/gimmehttp.es.js +++ b/dist/gimmehttp.es.js @@ -1,81 +1,88 @@ const f = []; -function X() { +function D() { return f; } -function Y() { - return f.map((t) => t.language).filter((t, n, e) => e.indexOf(t) === n); +function F() { + return f.map((i) => i.language).filter((i, n, e) => e.indexOf(i) === n); } -function p(t, n) { - if (t === "" || t === void 0) +function $(i, n) { + if (i === "" || i === void 0) return new Error("Language is required"); - const e = f.filter((r) => r.language.toLowerCase() === t.toLowerCase()); + const e = f.filter((t) => t.language.toLowerCase() === i.toLowerCase()); if (e.length === 0) - return new Error("No client found for " + t); - const i = e.find((r) => r.default) || e[0]; + return new Error("No client found for " + i); + const o = e.find((t) => t.default) || e[0]; if (!n) - return i; - const o = e.find((r) => r.client.toLowerCase() === n.toLowerCase()); - return o || i; + return o; + const r = e.find((t) => t.client.toLowerCase() === n.toLowerCase()); + return r || o; } -function Z(t, n) { - const e = p(t, n); +function M(i, n) { + const e = $(i, n); if (e instanceof Error) return e; e.default = !0; } -function a(t) { - if (!t) +function d(i) { + if (!i) return new Error("Client is required"); - if (Array.isArray(t)) { - t.forEach((i) => a(i)); + if (Array.isArray(i)) { + i.forEach((o) => d(o)); return; } - const n = f.filter((i) => i.language.toLowerCase() === t.language.toLowerCase()), e = n.find((i) => i.client.toLowerCase() === t.client.toLowerCase()); - if (t.default === void 0 && (t.default = n.length === 0), e) { - const i = f.indexOf(t); - f[i] = t; + const n = f.filter((o) => o.language.toLowerCase() === i.language.toLowerCase()), e = n.find((o) => o.client.toLowerCase() === i.client.toLowerCase()); + if (i.default === void 0 && (i.default = n.length === 0), e) { + const o = f.indexOf(i); + f[o] = i; return; } - f.push(t); + f.push(i); } -function ee() { +function J() { f.splice(0, f.length); } -function ne(t) { - let n = g(t); +function G(i) { + let n = b(i); if (n) return { error: n.message }; - t.config = j(t.config); - const e = p(t.language, t.client); + i.config = g(i.config); + const e = $(i.language, i.client); if (e instanceof Error) return { error: e.message }; - const i = e.generate(t.config, t.http); + const o = e.generate(i.config, i.http); return { language: e.language, client: e.client, - code: i + code: o }; } -function g(t) { - if (!t) +function b(i) { + if (!i) return new Error("Request is required"); - if (!t.language) + if (!i.language) return new Error("language is required"); - if (!t.http) + if (!i.http) return new Error("http is required"); - if (!t.http.method) + if (!i.http.method) return new Error("http.method is required"); - if (!t.http.url) + if (!i.http.url) return new Error("http.url is required"); } -function j(t) { - return t = t || {}, t.indent || (t.indent = " "), t.join || (t.join = ` -`), t.handleErrors === void 0 && (t.handleErrors = !1), t; +function g(i) { + return i = i || {}, i.indent || (i.indent = " "), i.join || (i.join = ` +`), i.handleErrors === void 0 && (i.handleErrors = !1), i; } -class d { +class u { constructor(n = {}) { - this.code = [], this.currentDepth = 0, this.indentChar = n.indent || " ", this.lineJoin = n.join || ` -`; + this.code = [], this.currentDepth = 0, this.jsonConfig = { + objOpen: "{", + objClose: "}", + arrOpen: "[", + arrClose: "]", + separator: ": ", + endComma: !1 + }, this.indentChar = n.indent || " ", this.lineJoin = n.join || ` +`, this.jsonConfig = n.json || this.jsonConfig; } getIndent() { return this.indentChar; @@ -87,7 +94,34 @@ class d { this.code.push({ depth: n === "" ? 0 : this.currentDepth, line: n }); } append(n) { - this.code.length > 0 && (this.code[this.code.length - 1].line += n); + this.code.length > 0 ? this.code[this.code.length - 1].line += n : this.line(n); + } + json(n, e = !1) { + if (!n) { + this.append("null"); + return; + } + switch (typeof n) { + case "object": + if (Array.isArray(n)) + this.append(this.jsonConfig.arrOpen), this.indent(), n.forEach((o, r) => { + this.json(o, typeof n == "object" || Array.isArray(n)), (r < n.length - 1 || this.jsonConfig.endComma) && this.append(","); + }), this.outdent(), this.line(this.jsonConfig.arrClose); + else { + this.append(this.jsonConfig.objOpen), this.indent(); + const o = Object.keys(n); + o.forEach((r, t) => { + this.line(`"${r}"` + this.jsonConfig.separator), this.json(n[r], typeof r == "object" || Array.isArray(r)), (t < o.length - 1 || this.jsonConfig.endComma) && this.append(","); + }), this.outdent(), this.line(this.jsonConfig.objClose); + } + break; + case "string": + e ? this.line(`"${n}"`) : this.append(`"${n}"`); + break; + default: + e ? this.line(String(n)) : this.append(String(n)); + break; + } } indent() { this.currentDepth += 1; @@ -99,569 +133,411 @@ class d { return this.code.map(({ depth: n, line: e }) => `${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd(); } } -function m(t, n) { - return t.toUpperCase() === "POST" && n !== void 0 && Object.keys(n).some( +function j(i) { + let n, e, o, r, t; + try { + const l = new URL(i); + n = l.hostname, e = l.pathname, t = l.search, o = l.port ? parseInt(l.port) : l.protocol === "https:" ? 443 : 80, r = l.protocol; + } catch { + const s = i.split("/"); + n = s[0]; + const a = "/" + s.slice(1).join("/"), [c, h] = a.split("?"); + e = c, t = h ? "?" + h : "", o = 80, r = "http:"; + } + return e.startsWith("/") || (e = "/" + e), { hostname: n, path: e, port: o, protocol: r, params: t }; +} +function k(i, n) { + return i.toUpperCase() === "POST" && n !== void 0 && Object.keys(n).some( (e) => e.toLowerCase() === "content-type" && n[e].toLowerCase() === "application/json" ); } -const k = { +const C = { default: !0, language: "c", client: "libcurl", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line("#include "), e.line("#include "), e.line(), e.line("int main(void) {"), e.indent(), e.line("CURL *curl;"), e.line("CURLcode res;"), e.line(), e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"), e.line("curl = curl_easy_init();"), e.line("if(curl) {"), e.indent(), e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`), n.method.toUpperCase() === "POST" ? e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);") : n.method.toUpperCase() !== "GET" && e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`), n.headers && Object.keys(n.headers).length > 0) { - e.line("struct curl_slist *headers = NULL;"); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`headers = curl_slist_append(headers, "${i}: ${r}");`)) : e.line(`headers = curl_slist_append(headers, "${i}: ${o}");`); + e.line(), e.line("struct curl_slist *headers = NULL;"); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`headers = curl_slist_append(headers, "${o}: ${t}");`)) : e.line(`headers = curl_slist_append(headers, "${o}: ${r}");`); e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);"); } if (n.cookies && Object.keys(n.cookies).length > 0) { - const i = Object.entries(n.cookies).map(([o, r]) => `${o}=${r}`).join("; "); - e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${i}");`); - } - return n.body && (e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('), O(n.body, e), e.append(')");')), e.line("res = curl_easy_perform(curl);"), e.line("if(res != CURLE_OK)"), e.indent(), e.line(`fprintf(stderr, "curl_easy_perform() failed: %s -", curl_easy_strerror(res));`), e.outdent(), n.headers && Object.keys(n.headers).length > 0 && e.line("curl_slist_free_all(headers);"), e.line("curl_easy_cleanup(curl);"), e.outdent(), e.line("}"), e.line("curl_global_cleanup();"), e.line("return 0;"), e.outdent(), e.line("}"), e.output(); - } -}; -function O(t, n) { - const e = JSON.stringify(t, null, 2).split(` -`); - for (let i = 0; i < e.length; i++) { - if (i === 0) { - n.append(`${e[i]}`); - continue; + e.line(); + const o = Object.entries(n.cookies).map(([r, t]) => `${r}=${t}`).join("; "); + e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${o}");`); } - n.line(`${e[i]}`); + return n.body && (e.line(), e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('), e.json(n.body), e.append(')");')), e.line(), e.line("res = curl_easy_perform(curl);"), e.line("if(res != CURLE_OK)"), e.indent(), e.line('fprintf(stderr, "failed: %s", curl_easy_strerror(res));'), e.outdent(), n.headers && Object.keys(n.headers).length > 0 && e.line("curl_slist_free_all(headers);"), e.line("curl_easy_cleanup(curl);"), e.outdent(), e.line("}"), e.line(), e.line("curl_global_cleanup();"), e.line("return 0;"), e.outdent(), e.line("}"), e.output(); } -} -const C = { +}, m = { default: !0, language: "csharp", client: "http", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line("using System;"), e.line("using System.Net.Http;"), e.line("using System.Threading.Tasks;"), e.line(), e.line("namespace HttpClientExample"), e.line("{"), e.indent(), e.line("class Program"), e.line("{"), e.indent(), e.line("static async Task Main(string[] args)"), e.line("{"), e.indent(), e.line("using (HttpClient client = new HttpClient())"), e.line("{"), e.indent(), e.line( `HttpRequestMessage request = new HttpRequestMessage(HttpMethod.${n.method.toUpperCase()}, "${n.url}");` - ), n.headers && Object.keys(n.headers).length > 0) - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`request.Headers.Add("${i}", "${r}");`)) : e.line(`request.Headers.Add("${i}", "${o}");`); + ), n.headers && Object.keys(n.headers).length > 0) { + e.line(); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`request.Headers.Add("${o}", "${t}");`)) : e.line(`request.Headers.Add("${o}", "${r}");`); + } if (n.cookies && Object.keys(n.cookies).length > 0) { - const i = Object.entries(n.cookies).map(([o, r]) => `${o}=${r}`).join("; "); - e.line(`request.Headers.Add("Cookie", "${i}");`); + e.line(); + const o = Object.entries(n.cookies).map(([r, t]) => `${r}=${t}`).join("; "); + e.line(`request.Headers.Add("Cookie", "${o}");`); } - return n.body && e.line( - `request.Content = new StringContent("${JSON.stringify(n.body).replace( - /"/g, - '"' - )}", System.Text.Encoding.UTF8, "application/json");` - ), e.line("HttpResponseMessage response = await client.SendAsync(request);"), e.line("response.EnsureSuccessStatusCode();"), e.line("string responseBody = await response.Content.ReadAsStringAsync();"), e.line("Console.WriteLine(responseBody);"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.output(); + return n.body && (e.line(), e.line("request.Content = new StringContent("), e.json(n.body), e.append(', System.Text.Encoding.UTF8, "application/json");')), e.line(), e.line("HttpResponseMessage response = await client.SendAsync(request);"), e.line("response.EnsureSuccessStatusCode();"), e.line("string responseBody = await response.Content.ReadAsStringAsync();"), e.line("Console.WriteLine(responseBody);"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.output(); } -}, w = { +}, O = { language: "csharp", client: "restsharp", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); - if (e.line("using RestSharp;"), e.line(), e.line("namespace RestSharpExample"), e.line("{"), e.indent(), e.line("class Program"), e.line("{"), e.indent(), e.line("static void Main(string[] args)"), e.line("{"), e.indent(), e.line(`var client = new RestClient("${n.url}");`), e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`), n.headers && Object.keys(n.headers).length > 0) - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`request.AddHeader("${i}", "${r}");`)) : e.line(`request.AddHeader("${i}", "${o}");`); + if (e.line("using RestSharp;"), e.line(), e.line("namespace RestSharpExample"), e.line("{"), e.indent(), e.line("class Program"), e.line("{"), e.indent(), e.line("static void Main(string[] args)"), e.line("{"), e.indent(), e.line(`var client = new RestClient("${n.url}");`), e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`), n.headers && Object.keys(n.headers).length > 0) { + e.line(); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`request.AddHeader("${o}", "${t}");`)) : e.line(`request.AddHeader("${o}", "${r}");`); + } if (n.cookies && Object.keys(n.cookies).length > 0) { - const i = Object.entries(n.cookies).map(([o, r]) => `${o}=${r}`).join("; "); - e.line(`request.AddHeader("Cookie", "${i}");`); + e.line(); + const o = Object.entries(n.cookies).map(([r, t]) => `${r}=${t}`).join("; "); + e.line(`request.AddHeader("Cookie", "${o}");`); } - return n.body && e.line(`request.AddJsonBody(${JSON.stringify(n.body)});`), e.line("IRestResponse response = client.Execute(request);"), e.line("Console.WriteLine(response.Content);"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.output(); + return n.body && (e.line(), e.line("request.AddJsonBody("), e.json(n.body), e.append(");")), e.line(), e.line("IRestResponse response = client.Execute(request);"), e.line("Console.WriteLine(response.Content);"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.output(); } -}, b = { +}, w = { default: !0, language: "go", client: "http", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` - }), i = m(n.method, n.headers) && n.body; - e.line("package main"), e.line(), e.line("import ("), e.indent(), e.line('"fmt"'), e.line('"net/http"'), e.line('"io"'), i && (e.line('"bytes"'), e.line('"encoding/json"')), t.handleErrors && e.line('"log"'), e.outdent(), e.line(")"), e.line(), e.line("func main() {"), e.indent(), e.line(`url := "${n.url}"`), e.line(); - let o = "nil"; - if (i) { - e.line("jsonBodyMap := map[string]any{"), e.indent(); - for (const [r, l] of Object.entries(n.body)) - e.line(`"${r}": ${JSON.stringify(l)},`); - e.outdent(), e.line("}"), t.handleErrors ? (e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"), o = "bytes.NewBuffer(jsonBodyBytes)", e.line(); - } - if (t.handleErrors ? (e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}"), e.line()) : (e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`), e.line()), n.headers) { - for (const [r, l] of Object.entries(n.headers)) + }), o = k(n.method, n.headers) && n.body; + e.line("package main"), e.line(), e.line("import ("), e.indent(), e.line('"fmt"'), e.line('"net/http"'), e.line('"io"'), o && (e.line('"bytes"'), e.line('"encoding/json"')), i.handleErrors && e.line('"log"'), e.outdent(), e.line(")"), e.line(), e.line("func main() {"), e.indent(), e.line(`url := "${n.url}"`), e.line(); + let r = "nil"; + if (o && (e.line("jsonBodyMap := map[string]any"), e.json(n.body), i.handleErrors ? (e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"), r = "bytes.NewBuffer(jsonBodyBytes)", e.line()), i.handleErrors ? (e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}"), e.line()) : (e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`), e.line()), n.headers) { + for (const [t, l] of Object.entries(n.headers)) if (Array.isArray(l)) for (const s of l) - e.line(`req.Header.Add("${r}", "${s}")`); + e.line(`req.Header.Add("${t}", "${s}")`); else - e.line(`req.Header.Set("${r}", "${l}")`); + e.line(`req.Header.Set("${t}", "${l}")`); e.line(); } if (n.cookies) { - for (const [r, l] of Object.entries(n.cookies)) + for (const [t, l] of Object.entries(n.cookies)) if (Array.isArray(l)) for (const s of l) - e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${s}"})`); + e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${s}"})`); else - e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${l}"})`); + e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${l}"})`); e.line(); } - return t.handleErrors ? (e.line("resp, err := http.DefaultClient.Do(req)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("resp, _ := http.DefaultClient.Do(req)"), e.line("defer resp.Body.Close()"), e.line(), t.handleErrors ? (e.line("body, err := io.ReadAll(resp.Body)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("body, _ := io.ReadAll(resp.Body)"), e.line(), e.line("fmt.Println(string(body))"), e.outdent(), e.line("}"), e.output(); + return i.handleErrors ? (e.line("resp, err := http.DefaultClient.Do(req)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("resp, _ := http.DefaultClient.Do(req)"), e.line("defer resp.Body.Close()"), e.line(), i.handleErrors ? (e.line("body, err := io.ReadAll(resp.Body)"), e.line("if err != nil {"), e.indent(), e.line("log.Fatal(err)"), e.outdent(), e.line("}")) : e.line("body, _ := io.ReadAll(resp.Body)"), e.line(), e.line("fmt.Println(string(body))"), e.outdent(), e.line("}"), e.output(); } }, q = { default: !0, language: "javascript", client: "fetch", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line('fetch("' + n.url + '", {'), e.indent(), e.line(`method: "${n.method.toUpperCase()}",`), n.headers) { e.line("headers: {"), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? e.line(`"${i}": "${o.join(", ")}",`) : e.line(`"${i}": "${o}",`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? e.line(`"${o}": "${r.join(", ")}",`) : e.line(`"${o}": "${r}",`); e.outdent(), e.line("},"); } - return n.body && (e.line("body: "), e.indent(), R(n.body, e), e.append(",")), e.outdent(), e.line("})"), t.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("if (!response.ok) {"), e.indent(), e.line('throw new Error("Network response was not ok");'), e.outdent(), e.line("}"), e.line("return response.text();"), e.outdent(), e.line("})"), e.line(".then(data => console.log(data))"), e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')) : (e.line(".then(response => response.text())"), e.line(".then(data => console.log(data));")), e.output(); - } -}; -function R(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); + return n.body && (e.line("body: "), e.json(n.body)), e.outdent(), e.line("})"), i.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("if (!response.ok) {"), e.indent(), e.line('throw new Error("Network response was not ok");'), e.outdent(), e.line("}"), e.line("return response.text();"), e.outdent(), e.line("})"), e.line(".then(data => console.log(data))"), e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')) : (e.line(".then(response => response.text())"), e.line(".then(data => console.log(data));")), e.output(); } -} -const A = { +}, E = { language: "javascript", client: "axios", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line("axios({"), e.indent(), e.line(`method: "${n.method.toLowerCase()}",`), e.line(`url: "${n.url}",`), n.headers) { e.line("headers: {"), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? e.line(`"${i}": "${o.join(", ")}",`) : e.line(`"${i}": "${o}",`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? e.line(`"${o}": "${r.join(", ")}",`) : e.line(`"${o}": "${r}",`); e.outdent(), e.line("},"); } if (n.cookies) { e.line("cookies: {"), e.indent(); - for (const [i, o] of Object.entries(n.cookies)) - e.line(`"${i}": "${o}",`); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`"${o}": "${r}",`); e.outdent(), e.line("},"); } - return n.body && (e.line("data: "), e.indent(), E(n.body, e), e.append(",")), e.outdent(), e.line("})"), t.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("console.log(response.data);"), e.outdent(), e.line("})"), e.line(".catch(error => {"), e.indent(), e.line('console.error("There was an error:", error);'), e.outdent(), e.line("});")) : e.line(".then(response => console.log(response.data));"), e.output(); - } -}; -function E(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); + return n.body && (e.line("data: "), e.json(n.body)), e.outdent(), e.line("})"), i.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("console.log(response.data);"), e.outdent(), e.line("})"), e.line(".catch(error => {"), e.indent(), e.line('console.error("There was an error:", error);'), e.outdent(), e.line("});")) : e.line(".then(response => console.log(response.data));"), e.output(); } -} -const S = { +}, R = { language: "javascript", client: "jquery", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line("$.ajax({"), e.indent(), e.line(`url: "${n.url}",`), e.line(`type: "${n.method.toUpperCase()}",`), n.headers) { e.line("headers: {"), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? e.line(`"${i}": "${o.join(", ")}",`) : e.line(`"${i}": "${o}",`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? e.line(`"${o}": "${r.join(", ")}",`) : e.line(`"${o}": "${r}",`); e.outdent(), e.line("},"); } - return n.body && (e.line("data: "), e.indent(), T(n.body, e), e.append(","), e.line('contentType: "application/json",')), e.line("success: function(data) {"), e.indent(), e.line("console.log(data);"), e.outdent(), e.line("},"), t.handleErrors && (e.line("error: function(jqXHR, textStatus, errorThrown) {"), e.indent(), e.line('console.error("Request failed:", textStatus, errorThrown);'), e.outdent(), e.line("},")), e.outdent(), e.line("});"), e.output(); + return n.body && (e.line("data: "), e.json(n.body), e.append(","), e.line('contentType: "application/json",')), e.line("success: function(data) {"), e.indent(), e.line("console.log(data);"), e.outdent(), e.line("},"), i.handleErrors && (e.line("error: function(jqXHR, textStatus, errorThrown) {"), e.indent(), e.line('console.error("Request failed:", textStatus, errorThrown);'), e.outdent(), e.line("},")), e.outdent(), e.line("});"), e.output(); } -}; -function T(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); - } -} -const _ = { +}, A = { language: "node", client: "http", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); - if (e.line('const http = require("http");'), e.line(), e.line("const options = {"), e.indent(), e.line(`method: "${n.method.toUpperCase()}",`), e.line(`hostname: "${new URL(n.url).hostname}",`), e.line(`path: "${new URL(n.url).pathname}${new URL(n.url).search}",`), n.headers) { + e.line('const http = require("http");'), e.line(); + const { hostname: o, path: r, port: t, protocol: l } = j(n.url); + if (e.line("const options = {"), e.indent(), e.line(`method: "${n.method.toUpperCase()}",`), e.line(`hostname: "${o}",`), e.line(`path: "${r}",`), n.headers) { e.line("headers: {"), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? e.line(`"${i}": "${o.join(", ")}",`) : e.line(`"${i}": "${o}",`); + for (const [s, a] of Object.entries(n.headers)) + Array.isArray(a) ? e.line(`"${s}": "${a.join(", ")}",`) : e.line(`"${s}": "${a}",`); e.outdent(), e.line("},"); } - return e.outdent(), e.line("};"), e.line(), e.line("const req = http.request(options, (res) => {"), e.indent(), e.line('let data = "";'), e.line(), e.line('res.on("data", (chunk) => {'), e.indent(), e.line("data += chunk;"), e.outdent(), e.line("});"), e.line(), e.line('res.on("end", () => {'), e.indent(), e.line("console.log(data);"), e.outdent(), e.line("});"), e.outdent(), e.line("});"), t.handleErrors && (e.line(), e.line('req.on("error", (error) => {'), e.indent(), e.line("console.error(error);"), e.outdent(), e.line("});")), e.line(), n.body && (e.line("req.write("), e.indent(), U(n.body, e), e.append(");")), e.line("req.end();"), e.output(); + return e.outdent(), e.line("};"), e.line(), e.line("const req = http.request(options, (res) => {"), e.indent(), e.line('let data = "";'), e.line(), e.line('res.on("data", (chunk) => {'), e.indent(), e.line("data += chunk;"), e.outdent(), e.line("});"), e.line(), e.line('res.on("end", () => {'), e.indent(), e.line("console.log(data);"), e.outdent(), e.line("});"), e.outdent(), e.line("});"), i.handleErrors && (e.line(), e.line('req.on("error", (error) => {'), e.indent(), e.line("console.error(error);"), e.outdent(), e.line("});")), e.line(), n.body && (e.line("req.write("), e.json(n.body), e.append(");")), e.line("req.end();"), e.output(); } -}; -function U(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); - } -} -const L = { +}, T = { language: "node", client: "fetch", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line('const fetch = require("node-fetch");'), e.line(), e.line('fetch("' + n.url + '", {'), e.indent(), e.line('method: "' + n.method.toUpperCase() + '",'), n.headers) { e.line("headers: {"), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? e.line(`"${i}": "${o.join(", ")}",`) : e.line(`"${i}": "${o}",`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? e.line(`"${o}": "${r.join(", ")}",`) : e.line(`"${o}": "${r}",`); e.outdent(), e.line("},"); } - return n.body && (e.line("body: "), e.indent(), J(n.body, e), e.append(",")), e.outdent(), e.line("})"), t.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("if (!response.ok) {"), e.indent(), e.line('throw new Error("response not ok");'), e.outdent(), e.line("}"), e.line("return response.text();"), e.outdent(), e.line("})"), e.line(".then(data => console.log(data))"), e.line('.catch(error => console.error("error:", error));')) : (e.line(".then(response => response.text())"), e.line(".then(data => console.log(data))")), e.output(); - } -}; -function J(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); + return n.body && (e.line("body: "), e.json(n.body)), e.outdent(), e.line("})"), i.handleErrors ? (e.line(".then(response => {"), e.indent(), e.line("if (!response.ok) {"), e.indent(), e.line('throw new Error("response not ok");'), e.outdent(), e.line("}"), e.line("return response.text();"), e.outdent(), e.line("})"), e.line(".then(data => console.log(data))"), e.line('.catch(error => console.error("error:", error));')) : (e.line(".then(response => response.text())"), e.line(".then(data => console.log(data))")), e.output(); } -} -const N = { +}, _ = { default: !0, language: "php", client: "curl", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line(" e.line(`$headers[] = "${i}: ${r}";`)) : e.line(`$headers[] = "${i}: ${o}";`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`$headers[] = "${o}: ${t}";`)) : e.line(`$headers[] = "${o}: ${r}";`); e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);"); } if (n.cookies) { e.line(), e.line("$cookies = [];"); - for (const [i, o] of Object.entries(n.cookies)) - e.line(`$cookies[] = "${i}=${o}";`); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`$cookies[] = "${o}=${r}";`); e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));'); } - return n.body && (e.line(), e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"), e.line("<<<'JSON'"), $(n.body, e), e.line("JSON"), e.line(");"), e.outdent()), e.line(), e.line("$response = curl_exec($ch);"), t.handleErrors && (e.line("if (curl_errno($ch)) {"), e.indent(), e.line('echo "Error: " . curl_error($ch);'), e.outdent(), e.line("}")), e.line("curl_close($ch);"), e.line(), e.line("echo $response;"), e.output(); + return n.body && (e.line(), e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"), e.line("<<<'JSON'"), e.line(), e.json(n.body), e.line("JSON"), e.line(");"), e.outdent()), e.line(), e.line("$response = curl_exec($ch);"), i.handleErrors && (e.line("if (curl_errno($ch)) {"), e.indent(), e.line('echo "Error: " . curl_error($ch);'), e.outdent(), e.line("}")), e.line("curl_close($ch);"), e.line(), e.line("echo $response;"), e.output(); } -}; -function $(t, n) { - if (typeof t == "object" && t !== null) - if (Array.isArray(t)) - n.line("[" + t.map((e) => JSON.stringify(e)).join(", ") + "]"); - else { - n.line("{"), n.indent(); - const e = Object.entries(t); - e.forEach(([i, o], r) => { - Array.isArray(o) ? n.line(`"${i}": [${o.map((l) => JSON.stringify(l)).join(", ")}]`) : typeof o == "object" && o !== null ? (n.line(`"${i}": {`), n.indent(), $(o, n), n.outdent(), n.line("}")) : n.line(`"${i}": ${JSON.stringify(o)}`), r < e.length - 1 && n.append(","); - }), n.outdent(), n.line("}"); - } - else - n.line(JSON.stringify(t)); -} -const P = { +}, U = { language: "php", client: "guzzle", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` -` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` +`, + json: { + objOpen: "[", + objClose: "]", + arrOpen: "[", + arrClose: "]", + separator: " => ", + endComma: !0 + } }); if (e.line("request("), e.indent(), e.line('"' + n.method.toUpperCase() + '",'), e.line('"' + n.url + '",'), n.headers || n.cookies || n.body) { if (e.line("["), n.headers) { e.indent(), e.line('"headers" => ['), e.indent(); - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`"${i}" => "${r}",`)) : e.line(`"${i}" => "${o}",`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`"${o}" => "${t}",`)) : e.line(`"${o}" => "${r}",`); e.outdent(), e.line("],"), e.outdent(); } if (n.cookies) { e.indent(), e.line('"cookies" => ['), e.indent(); - for (const [i, o] of Object.entries(n.cookies)) - e.line(`"${i}" => "${o}",`); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`"${o}" => "${r}",`); e.outdent(), e.line("],"), e.outdent(); } - n.body && (e.indent(), e.line('"json" => {'), e.indent(), h(n.body, e, !0), e.outdent(), e.line("}"), e.outdent()), e.line("],"); + n.body && (e.indent(), e.line('"json" => '), e.json(n.body), e.append(","), e.outdent()), e.line("],"); } return e.outdent(), e.line(");"), e.line(), e.line("echo $response->getBody();"), e.output(); } -}; -function h(t, n, e = !1) { - if (typeof t == "object" && t !== null) - if (Array.isArray(t)) - n.line("[" + t.map((i) => JSON.stringify(i)).join(", ") + "]"); - else { - e || (n.line("{"), n.indent()); - const i = Object.entries(t); - i.forEach(([o, r], l) => { - Array.isArray(r) ? n.line(`"${o}": [${r.map((s) => JSON.stringify(s)).join(", ")}]`) : typeof r == "object" && r !== null ? (n.line(`"${o}": {`), n.indent(), h(r, n, !0), n.outdent(), n.line("}")) : n.line(`"${o}": ${JSON.stringify(r)}`), l < i.length - 1 && n.append(","); - }), e || (n.outdent(), n.line("}")); - } - else - n.line(JSON.stringify(t)); -} -const H = { +}, L = { default: !0, language: "python", client: "http", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` - }), i = n.method.toUpperCase(), o = i !== "GET" && n.body, r = n.headers && Object.keys(n.headers).length > 0, l = n.cookies && Object.keys(n.cookies).length > 0; + }), o = n.method.toUpperCase(), r = o !== "GET" && n.body, t = n.headers && Object.keys(n.headers).length > 0, l = n.cookies && Object.keys(n.cookies).length > 0; let s = []; e.line("import http.client"), e.line("import json"), e.line(); - const u = new URL(n.url); - if (e.line( - `conn = http.client.HTTPSConnection("${u.hostname}", ${u.port || (u.protocol === "https:" ? 443 : 80)})` - ), e.line(), o && (s.push("payload"), e.line("payload = "), e.indent(), v(n.body, e), e.line()), r) { - s.push("headers"), e.line("headers = {"), e.indent(); - for (const [c, y] of Object.entries(n.headers)) - Array.isArray(y) ? e.line(`"${c}": "${y.join(", ")}",`) : e.line(`"${c}": "${y}",`); - e.outdent(), e.line("}"), e.line(); + const { hostname: a, path: c, port: h, protocol: N } = j(n.url); + if (e.line(`conn = http.client.HTTPSConnection("${a}", ${h})`), t) { + e.line(), s.push("headers"), e.line("headers = {"), e.indent(); + for (const [p, y] of Object.entries(n.headers)) + Array.isArray(y) ? e.line(`"${p}": "${y.join(", ")}",`) : e.line(`"${p}": "${y}",`); + e.outdent(), e.line("}"); } if (l) { - s.push("cookies"), e.line("cookies = {"), e.indent(); - for (const [c, y] of Object.entries(n.cookies)) - e.line(`"${c}": "${y}",`); - e.outdent(), e.line("}"), e.line(); - } - return e.line( - `conn.request("${i}", "${u.pathname + u.search}"` + (s.length > 0 ? `, ${s.join(", ")}` : "") + ")" - ), e.line("res = conn.getresponse()"), e.line("data = res.read()"), e.line(), e.line('print(data.decode("utf-8"))'), e.output(); - } -}; -function v(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; + e.line(), s.push("cookies"), e.line("cookies = {"), e.indent(); + for (const [p, y] of Object.entries(n.cookies)) + e.line(`"${p}": "${y}",`); + e.outdent(), e.line("}"); } - i === e.length - 1 && n.outdent(), n.line(o); + return r && (e.line(), s.push("payload"), e.line("payload = "), e.json(n.body)), e.line(), e.line(`conn.request("${o}", "${c}"` + (s.length > 0 ? `, ${s.join(", ")}` : "") + ")"), e.line("res = conn.getresponse()"), e.line("data = res.read()"), e.line(), e.line('print(data.decode("utf-8"))'), e.output(); } -} -const B = { +}, P = { language: "python", client: "requests", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` - }), o = n.method.toUpperCase() !== "GET" && n.body, r = n.headers && Object.keys(n.headers).length > 0, l = n.cookies && Object.keys(n.cookies).length > 0; + }), r = n.method.toUpperCase() !== "GET" && n.body, t = n.headers && Object.keys(n.headers).length > 0, l = n.cookies && Object.keys(n.cookies).length > 0; let s = []; - if (e.line("import requests"), e.line(), e.line('url = "' + n.url + '"'), r) { - s.push("headers=headers"), e.line("headers = {"), e.indent(); - for (const [u, c] of Object.entries(n.headers)) - Array.isArray(c) ? e.line(`"${u}": "${c.join(", ")}",`) : e.line(`"${u}": "${c}",`); + if (e.line("import requests"), e.line(), e.line('url = "' + n.url + '"'), t) { + e.line(), s.push("headers=headers"), e.line("headers = {"), e.indent(); + for (const [a, c] of Object.entries(n.headers)) + e.line(`"${a}": "${c}"`), Object.keys(n.headers).indexOf(a) !== Object.keys(n.headers).length - 1 && e.append(","); e.outdent(), e.line("}"); } if (l) { - s.push("cookies=cookies"), e.line("cookies = {"), e.indent(); - for (const [u, c] of Object.entries(n.cookies)) - e.line(`"${u}": "${c}",`); + e.line(), s.push("cookies=cookies"), e.line("cookies = {"), e.indent(); + for (const [a, c] of Object.entries(n.cookies)) + e.line(`"${a}": "${c}"`), Object.keys(n.cookies).indexOf(a) !== Object.keys(n.cookies).length - 1 && e.append(","); e.outdent(), e.line("}"); } - return o && (s.push("data=data"), e.line("data = "), e.indent(), x(n.body, e)), e.line(), e.line( + return r && (e.line(), s.push("data=data"), e.line("data = "), e.json(n.body)), e.line(), e.line( "response = requests." + n.method.toLowerCase() + "(url" + (s.length > 0 ? `, ${s.join(", ")}` : "") + ")" ), e.line("print(response.text)"), e.output(); } -}; -function x(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); - } -} -const I = { +}, S = { default: !0, language: "ruby", client: "nethttp", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line('require "net/http"'), e.line('require "uri"'), e.line(), e.line('uri = URI.parse("' + n.url + '")'), n.method.toUpperCase() === "GET" ? e.line("request = Net::HTTP::Get.new(uri)") : n.method.toUpperCase() === "POST" ? e.line("request = Net::HTTP::Post.new(uri)") : n.method.toUpperCase() === "PUT" ? e.line("request = Net::HTTP::Put.new(uri)") : n.method.toUpperCase() === "DELETE" ? e.line("request = Net::HTTP::Delete.new(uri)") : e.line('request = Net::HTTP::GenericRequest.new("' + n.method.toUpperCase() + '", uri.path, nil, nil)'), n.headers && Object.keys(n.headers).length > 0) - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`request["${i}"] = "${r}"`)) : e.line(`request["${i}"] = "${o}"`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`request["${o}"] = "${t}"`)) : e.line(`request["${o}"] = "${r}"`); if (n.cookies && Object.keys(n.cookies).length > 0) - for (const [i, o] of Object.entries(n.cookies)) - e.line(`request["Cookie"] = "${i}=${o}"`); - return n.body && (e.line("request.body = "), e.indent(), D(n.body, e)), e.line(), e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'), e.indent(), e.line("http.request(request)"), e.outdent(), e.line("end"), e.line(), e.line("puts response.body"), e.output(); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`request["Cookie"] = "${o}=${r}"`); + return n.body && (e.line("request.body = "), e.json(n.body)), e.line(), e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'), e.indent(), e.line("http.request(request)"), e.outdent(), e.line("end"), e.line(), e.line("puts response.body"), e.output(); } -}; -function D(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); - } -} -const F = { +}, v = { language: "ruby", client: "faraday", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); - if (e.line('require "faraday"'), e.line(), e.line('conn = Faraday.new(url: "' + n.url + '") do |f|'), e.indent(), e.line("f.adapter Faraday.default_adapter"), e.outdent(), e.line("end"), e.line(), e.line("response = conn." + n.method.toLowerCase() + " do |req|"), e.indent(), e.line('req.url "' + n.url + '"'), n.headers) - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`req.headers["${i}"] = "${r}"`)) : e.line(`req.headers["${i}"] = "${o}"`); - if (n.cookies) - for (const [i, o] of Object.entries(n.cookies)) - e.line(`req.headers["Cookie"] = "${i}=${o}"`); - return n.body && (e.line("req.body = "), e.indent(), M(n.body, e)), e.outdent(), e.line("end"), e.line(), e.line("puts response.body"), e.output(); - } -}; -function M(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; + if (e.line('require "faraday"'), e.line(), e.line('conn = Faraday.new(url: "' + n.url + '") do |f|'), e.indent(), e.line("f.adapter Faraday.default_adapter"), e.outdent(), e.line("end"), e.line(), e.line("response = conn." + n.method.toLowerCase() + " do |req|"), e.indent(), e.line('req.url "' + n.url + '"'), n.headers) { + e.line(); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`req.headers["${o}"] = "${t}"`)) : e.line(`req.headers["${o}"] = "${r}"`); + } + if (n.cookies) { + e.line(); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`req.headers["Cookie"] = "${o}=${r}"`); } - i === e.length - 1 && n.outdent(), n.line(o); + return n.body && (e.line(), e.line("req.body = "), e.json(n.body)), e.outdent(), e.line("end"), e.line(), e.line("puts response.body"), e.output(); } -} -const G = { +}, H = { language: "rust", client: "reqwest", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); if (e.line("use reqwest::blocking::Client;"), e.line("use std::error::Error;"), e.line(), e.line("fn main() -> Result<(), Box> {"), e.indent(), e.line("let client = Client::new();"), e.line(), e.line("let res = client.request(reqwest::Method::" + n.method.toUpperCase() + ', "' + n.url + '")'), e.indent(), n.headers) - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`.header("${i}", "${r}")`)) : e.line(`.header("${i}", "${o}")`); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`.header("${o}", "${t}")`)) : e.line(`.header("${o}", "${r}")`); if (n.cookies) - for (const [i, o] of Object.entries(n.cookies)) - Array.isArray(o) ? o.forEach((r) => e.line(`.cookie("${i}", "${r}")`)) : e.line(`.cookie("${i}", "${o}")`); - return n.body && (e.line(".body("), e.indent(), z(n.body, e), e.append(")")), e.line(".send()?;"), e.outdent(), e.line(), t.handleErrors ? (e.line("if res.status().is_success() {"), e.indent(), e.line('println!("{}", res.text()?);'), e.outdent(), e.line("} else {"), e.indent(), e.line('eprintln!("Request failed with status: {}", res.status());'), e.outdent(), e.line("}")) : e.line('println!("{}", res.text()?);'), e.line("Ok(())"), e.outdent(), e.line("}"), e.output(); - } -}; -function z(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); + for (const [o, r] of Object.entries(n.cookies)) + Array.isArray(r) ? r.forEach((t) => e.line(`.cookie("${o}", "${t}")`)) : e.line(`.cookie("${o}", "${r}")`); + return n.body && (e.line(".body("), e.json(n.body), e.append(")")), e.line(".send()?;"), e.outdent(), e.line(), i.handleErrors ? (e.line("if res.status().is_success() {"), e.indent(), e.line('println!("{}", res.text()?);'), e.outdent(), e.line("} else {"), e.indent(), e.line('eprintln!("Request failed with status: {}", res.status());'), e.outdent(), e.line("}")) : e.line('println!("{}", res.text()?);'), e.line("Ok(())"), e.outdent(), e.line("}"), e.output(); } -} -const V = { +}, x = { default: !0, language: "shell", client: "curl", - generate(t, n) { - var o, r; - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + var r, t; + const e = new u({ + indent: i.indent || " ", + join: i.join || ` \\ ` }); - if (e.line(`curl -X ${n.method} "${n.url}" \\`), n.headers) { - e.indent(); + if (e.line(`curl -X ${n.method} "${n.url}"`), e.indent(), n.headers) for (const [l, s] of Object.entries(n.headers)) if (Array.isArray(s)) - for (const u of s) - e.line(`-H "${l}: ${u.replace(/"/g, '\\"')}" \\`); + for (const a of s) + e.line(`-H "${l}: ${a.replace(/"/g, '\\"')}"`); else - e.line(`-H "${l}: ${s.replace(/"/g, '\\"')}" \\`); - e.outdent(); - } + e.line(`-H "${l}: ${s.replace(/"/g, '\\"')}"`); if (n.cookies) { - e.indent(); - const l = Object.entries(n.cookies).flatMap(([s, u]) => Array.isArray(u) ? u.map((c) => `${s}=${c}`) : `${s}=${u}`).join("; "); - e.line(`-b "${l}" \\`), e.outdent(); + const l = Object.entries(n.cookies).flatMap(([s, a]) => Array.isArray(a) ? a.map((c) => `${s}=${c}`) : `${s}=${a}`).join("; "); + e.line(`-b "${l}"`); } if (n.body) { - const l = ((o = n.headers) == null ? void 0 : o["content-type"]) || ((r = n.headers) == null ? void 0 : r["Content-Type"]) || "application/json"; - if (e.indent(), l.includes("application/json")) - e.line("-d $'"), e.indent(), K(n.body, e), e.append("'"), e.outdent(); + const l = ((r = n.headers) == null ? void 0 : r["content-type"]) || ((t = n.headers) == null ? void 0 : t["Content-Type"]) || "application/json"; + if (l.includes("application/json")) + e.line("-d $'"), e.json(n.body), e.append("'"); else if (l === "application/x-www-form-urlencoded") { const s = new URLSearchParams(n.body).toString().replace(/'/g, "'\\''"); e.line(`-d '${s}'`); @@ -669,85 +545,59 @@ const V = { const s = n.body.replace(/'/g, "'\\''"); e.line(`-d '${s}'`); } - e.outdent(); - } - let i = e.output(); - return i = i.replace(/\\\s*$/, "").trim(), i; - } -}; -function K(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`), i = "\\"; - for (let o = 0; o < e.length; o++) { - const r = e[o].trim(); - if (o === 0) { - n.append(r + " " + i); - continue; } - o === e.length - 1 && n.outdent(), n.line(r + (o === e.length - 1 ? "" : " " + i)); + let o = e.output(); + return o = o.replace(/\\\s*$/, "").trim(), o; } -} -const Q = { +}, B = { default: !0, language: "swift", client: "nsurlsession", - generate(t, n) { - const e = new d({ - indent: t.indent || " ", - join: t.join || ` + generate(i, n) { + const e = new u({ + indent: i.indent || " ", + join: i.join || ` ` }); - if (e.line("import Foundation"), e.line(), e.line('let url = URL(string: "' + n.url + '")!'), e.line("var request = URLRequest(url: url)"), e.line('request.httpMethod = "' + n.method.toUpperCase() + '"'), e.line(), n.headers && Object.keys(n.headers).length > 0) { - for (const [i, o] of Object.entries(n.headers)) - Array.isArray(o) ? o.forEach((r) => e.line(`request.addValue("${r}", forHTTPHeaderField: "${i}")`)) : e.line(`request.addValue("${o}", forHTTPHeaderField: "${i}")`); + if (e.line("import Foundation"), e.line(), e.line('let url = URL(string: "' + n.url + '")!'), e.line("var request = URLRequest(url: url)"), e.line('request.httpMethod = "' + n.method.toUpperCase() + '"'), n.headers && Object.keys(n.headers).length > 0) { e.line(); + for (const [o, r] of Object.entries(n.headers)) + Array.isArray(r) ? r.forEach((t) => e.line(`request.addValue("${t}", forHTTPHeaderField: "${o}")`)) : e.line(`request.addValue("${r}", forHTTPHeaderField: "${o}")`); } if (n.cookies && Object.keys(n.cookies).length > 0) { - for (const [i, o] of Object.entries(n.cookies)) - e.line(`request.addValue("${i}=${o}", forHTTPHeaderField: "Cookie")`); e.line(); + for (const [o, r] of Object.entries(n.cookies)) + e.line(`request.addValue("${o}=${r}", forHTTPHeaderField: "Cookie")`); } - return n.body && (e.line("let body = "), e.indent(), W(n.body, e), e.line("request.httpBody = body"), e.line()), e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"), e.indent(), e.line("if let error = error {"), e.indent(), e.line('print("Error: \\(error)")'), e.line("return"), e.outdent(), e.line("}"), e.line(), e.line("if let httpResponse = response as? HTTPURLResponse {"), e.indent(), e.line("if httpResponse.statusCode == 200, let data = data {"), e.indent(), e.line("let responseString = String(data: data, encoding: .utf8)"), e.line('print(responseString ?? "No response data")'), e.outdent(), e.line("} else {"), e.indent(), e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.line(), e.line("task.resume()"), e.output(); + return n.body && (e.line(), e.line("let body = "), e.json(n.body), e.line("request.httpBody = body")), e.line(), e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"), e.indent(), e.line("if let error = error {"), e.indent(), e.line('print("Error: \\(error)")'), e.line("return"), e.outdent(), e.line("}"), e.line(), e.line("if let httpResponse = response as? HTTPURLResponse {"), e.indent(), e.line("if httpResponse.statusCode == 200, let data = data {"), e.indent(), e.line("let responseString = String(data: data, encoding: .utf8)"), e.line('print(responseString ?? "No response data")'), e.outdent(), e.line("} else {"), e.indent(), e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.outdent(), e.line("}"), e.line(), e.line("task.resume()"), e.output(); } }; -function W(t, n) { - const e = JSON.stringify(t, null, n.getIndent()).split(` -`); - for (let i = 0; i < e.length; i++) { - const o = e[i].trim(); - if (i === 0) { - n.append(o); - continue; - } - i === e.length - 1 && n.outdent(), n.line(o); - } -} -a(k); -a(C); -a(w); -a(b); -a(q); -a(A); -a(S); -a(_); -a(L); -a(N); -a(P); -a(H); -a(B); -a(I); -a(F); -a(G); -a(V); -a(Q); +d(C); +d(m); +d(O); +d(w); +d(q); +d(E); +d(R); +d(A); +d(T); +d(_); +d(U); +d(L); +d(P); +d(S); +d(v); +d(H); +d(x); +d(B); export { - d as Builder, - ee as ClearRegistry, - X as Codes, - ne as Generate, - m as IsJsonRequest, - Y as Languages, - a as Register, - p as Search, - Z as SetDefault + u as Builder, + J as ClearRegistry, + D as Codes, + G as Generate, + k as IsJsonRequest, + F as Languages, + d as Register, + $ as Search, + M as SetDefault }; diff --git a/dist/gimmehttp.umd.js b/dist/gimmehttp.umd.js index a9a2ca2..55e1628 100644 --- a/dist/gimmehttp.umd.js +++ b/dist/gimmehttp.umd.js @@ -1,35 +1,21 @@ -(function(c,f){typeof exports=="object"&&typeof module<"u"?f(exports):typeof define=="function"&&define.amd?define(["exports"],f):(c=typeof globalThis<"u"?globalThis:c||self,f(c.gimmeHTTP={}))})(this,function(c){"use strict";const f=[];function m(){return f}function k(){return f.map(t=>t.language).filter((t,n,e)=>e.indexOf(t)===n)}function h(t,n){if(t===""||t===void 0)return new Error("Language is required");const e=f.filter(r=>r.language.toLowerCase()===t.toLowerCase());if(e.length===0)return new Error("No client found for "+t);const i=e.find(r=>r.default)||e[0];if(!n)return i;const o=e.find(r=>r.client.toLowerCase()===n.toLowerCase());return o||i}function O(t,n){const e=h(t,n);if(e instanceof Error)return e;e.default=!0}function a(t){if(!t)return new Error("Client is required");if(Array.isArray(t)){t.forEach(i=>a(i));return}const n=f.filter(i=>i.language.toLowerCase()===t.language.toLowerCase()),e=n.find(i=>i.client.toLowerCase()===t.client.toLowerCase());if(t.default===void 0&&(t.default=n.length===0),e){const i=f.indexOf(t);f[i]=t;return}f.push(t)}function C(){f.splice(0,f.length)}function w(t){let n=b(t);if(n)return{error:n.message};t.config=q(t.config);const e=h(t.language,t.client);if(e instanceof Error)return{error:e.message};const i=e.generate(t.config,t.http);return{language:e.language,client:e.client,code:i}}function b(t){if(!t)return new Error("Request is required");if(!t.language)return new Error("language is required");if(!t.http)return new Error("http is required");if(!t.http.method)return new Error("http.method is required");if(!t.http.url)return new Error("http.url is required")}function q(t){return t=t||{},t.indent||(t.indent=" "),t.join||(t.join=` -`),t.handleErrors===void 0&&(t.handleErrors=!1),t}class d{constructor(n={}){this.code=[],this.currentDepth=0,this.indentChar=n.indent||" ",this.lineJoin=n.join||` -`}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0&&(this.code[this.code.length-1].line+=n)}indent(){this.currentDepth+=1}outdent(){this.currentDepth>0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function $(t,n){return t.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const R={default:!0,language:"c",client:"libcurl",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line("struct curl_slist *headers = NULL;");for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`headers = curl_slist_append(headers, "${i}: ${r}");`)):e.line(`headers = curl_slist_append(headers, "${i}: ${o}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${i}");`)}return n.body&&(e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),T(n.body,e),e.append(')");')),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line(`fprintf(stderr, "curl_easy_perform() failed: %s -", curl_easy_strerror(res));`),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}};function T(t,n){const e=JSON.stringify(t,null,2).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.Headers.Add("${i}", "${r}");`)):e.line(`request.Headers.Add("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`request.Headers.Add("Cookie", "${i}");`)}return n.body&&e.line(`request.Content = new StringContent("${JSON.stringify(n.body).replace(/"/g,'"')}", System.Text.Encoding.UTF8, "application/json");`),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},A={language:"csharp",client:"restsharp",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.AddHeader("${i}", "${r}");`)):e.line(`request.AddHeader("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,r])=>`${o}=${r}`).join("; ");e.line(`request.AddHeader("Cookie", "${i}");`)}return n.body&&e.line(`request.AddJsonBody(${JSON.stringify(n.body)});`),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},E={default:!0,language:"go",client:"http",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`}),i=$(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),i&&(e.line('"bytes"'),e.line('"encoding/json"')),t.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let o="nil";if(i){e.line("jsonBodyMap := map[string]any{"),e.indent();for(const[r,l]of Object.entries(n.body))e.line(`"${r}": ${JSON.stringify(l)},`);e.outdent(),e.line("}"),t.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),o="bytes.NewBuffer(jsonBodyBytes)",e.line()}if(t.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line()),n.headers){for(const[r,l]of Object.entries(n.headers))if(Array.isArray(l))for(const s of l)e.line(`req.Header.Add("${r}", "${s}")`);else e.line(`req.Header.Set("${r}", "${l}")`);e.line()}if(n.cookies){for(const[r,l]of Object.entries(n.cookies))if(Array.isArray(l))for(const s of l)e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${s}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${r}", Value: "${l}"})`);e.line()}return t.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),t.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},_={default:!0,language:"javascript",client:"fetch",generate(t,n){const e=new d({indent:t.indent||" ",join:t.join||` -`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?e.line(`"${i}": "${o.join(", ")}",`):e.line(`"${i}": "${o}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.indent(),U(n.body,e),e.append(",")),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}};function U(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}};function J(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),t.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.indent(),v(n.body,e),e.append(");")),e.line("req.end();"),e.output()}};function v(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}};function I(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`$headers[] = "${i}: ${r}";`)):e.line(`$headers[] = "${i}: ${o}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[i,o]of Object.entries(n.cookies))e.line(`$cookies[] = "${i}=${o}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),g(n.body,e),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),t.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}};function g(t,n){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(e=>JSON.stringify(e)).join(", ")+"]");else{n.line("{"),n.indent();const e=Object.entries(t);e.forEach(([i,o],r)=>{Array.isArray(o)?n.line(`"${i}": [${o.map(l=>JSON.stringify(l)).join(", ")}]`):typeof o=="object"&&o!==null?(n.line(`"${i}": {`),n.indent(),g(o,n),n.outdent(),n.line("}")):n.line(`"${i}": ${JSON.stringify(o)}`),rrequest("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`"${i}" => "${r}",`)):e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[i,o]of Object.entries(n.cookies))e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => {'),e.indent(),j(n.body,e,!0),e.outdent(),e.line("}"),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}};function j(t,n,e=!1){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(i=>JSON.stringify(i)).join(", ")+"]");else{e||(n.line("{"),n.indent());const i=Object.entries(t);i.forEach(([o,r],l)=>{Array.isArray(r)?n.line(`"${o}": [${r.map(s=>JSON.stringify(s)).join(", ")}]`):typeof r=="object"&&r!==null?(n.line(`"${o}": {`),n.indent(),j(r,n,!0),n.outdent(),n.line("}")):n.line(`"${o}": ${JSON.stringify(r)}`),l0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];e.line("import http.client"),e.line("import json"),e.line();const u=new URL(n.url);if(e.line(`conn = http.client.HTTPSConnection("${u.hostname}", ${u.port||(u.protocol==="https:"?443:80)})`),e.line(),o&&(s.push("payload"),e.line("payload = "),e.indent(),M(n.body,e),e.line()),r){s.push("headers"),e.line("headers = {"),e.indent();for(const[y,p]of Object.entries(n.headers))Array.isArray(p)?e.line(`"${y}": "${p.join(", ")}",`):e.line(`"${y}": "${p}",`);e.outdent(),e.line("}"),e.line()}if(l){s.push("cookies"),e.line("cookies = {"),e.indent();for(const[y,p]of Object.entries(n.cookies))e.line(`"${y}": "${p}",`);e.outdent(),e.line("}"),e.line()}return e.line(`conn.request("${i}", "${u.pathname+u.search}"`+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}};function M(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),r){s.push("headers=headers"),e.line("headers = {"),e.indent();for(const[u,y]of Object.entries(n.headers))Array.isArray(y)?e.line(`"${u}": "${y.join(", ")}",`):e.line(`"${u}": "${y}",`);e.outdent(),e.line("}")}if(l){s.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[u,y]of Object.entries(n.cookies))e.line(`"${u}": "${y}",`);e.outdent(),e.line("}")}return o&&(s.push("data=data"),e.line("data = "),e.indent(),z(n.body,e)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}};function z(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request["${i}"] = "${r}"`)):e.line(`request["${i}"] = "${o}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[i,o]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("request.body = "),e.indent(),K(n.body,e)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function K(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`req.headers["${i}"] = "${r}"`)):e.line(`req.headers["${i}"] = "${o}"`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("req.body = "),e.indent(),W(n.body,e)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function W(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`.header("${i}", "${r}")`)):e.line(`.header("${i}", "${o}")`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))Array.isArray(o)?o.forEach(r=>e.line(`.cookie("${i}", "${r}")`)):e.line(`.cookie("${i}", "${o}")`);return n.body&&(e.line(".body("),e.indent(),Y(n.body,e),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),t.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}};function Y(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;iArray.isArray(u)?u.map(y=>`${s}=${y}`):`${s}=${u}`).join("; ");e.line(`-b "${l}" \\`),e.outdent()}if(n.body){const l=((o=n.headers)==null?void 0:o["content-type"])||((r=n.headers)==null?void 0:r["Content-Type"])||"application/json";if(e.indent(),l.includes("application/json"))e.line("-d $'"),e.indent(),ee(n.body,e),e.append("'"),e.outdent();else if(l==="application/x-www-form-urlencoded"){const s=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${s}'`)}else if(typeof n.body=="string"){const s=n.body.replace(/'/g,"'\\''");e.line(`-d '${s}'`)}e.outdent()}let i=e.output();return i=i.replace(/\\\s*$/,"").trim(),i}};function ee(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`),i="\\";for(let o=0;o0){for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(r=>e.line(`request.addValue("${r}", forHTTPHeaderField: "${i}")`)):e.line(`request.addValue("${o}", forHTTPHeaderField: "${i}")`);e.line()}if(n.cookies&&Object.keys(n.cookies).length>0){for(const[i,o]of Object.entries(n.cookies))e.line(`request.addValue("${i}=${o}", forHTTPHeaderField: "Cookie")`);e.line()}return n.body&&(e.line("let body = "),e.indent(),ie(n.body,e),e.line("request.httpBody = body"),e.line()),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};function ie(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ii.language).filter((i,n,e)=>e.indexOf(i)===n)}function j(i,n){if(i===""||i===void 0)return new Error("Language is required");const e=f.filter(t=>t.language.toLowerCase()===i.toLowerCase());if(e.length===0)return new Error("No client found for "+i);const o=e.find(t=>t.default)||e[0];if(!n)return o;const r=e.find(t=>t.client.toLowerCase()===n.toLowerCase());return r||o}function m(i,n){const e=j(i,n);if(e instanceof Error)return e;e.default=!0}function a(i){if(!i)return new Error("Client is required");if(Array.isArray(i)){i.forEach(o=>a(o));return}const n=f.filter(o=>o.language.toLowerCase()===i.language.toLowerCase()),e=n.find(o=>o.client.toLowerCase()===i.client.toLowerCase());if(i.default===void 0&&(i.default=n.length===0),e){const o=f.indexOf(i);f[o]=i;return}f.push(i)}function O(){f.splice(0,f.length)}function w(i){let n=q(i);if(n)return{error:n.message};i.config=R(i.config);const e=j(i.language,i.client);if(e instanceof Error)return{error:e.message};const o=e.generate(i.config,i.http);return{language:e.language,client:e.client,code:o}}function q(i){if(!i)return new Error("Request is required");if(!i.language)return new Error("language is required");if(!i.http)return new Error("http is required");if(!i.http.method)return new Error("http.method is required");if(!i.http.url)return new Error("http.url is required")}function R(i){return i=i||{},i.indent||(i.indent=" "),i.join||(i.join=` +`),i.handleErrors===void 0&&(i.handleErrors=!1),i}class d{constructor(n={}){this.code=[],this.currentDepth=0,this.jsonConfig={objOpen:"{",objClose:"}",arrOpen:"[",arrClose:"]",separator:": ",endComma:!1},this.indentChar=n.indent||" ",this.lineJoin=n.join||` +`,this.jsonConfig=n.json||this.jsonConfig}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0?this.code[this.code.length-1].line+=n:this.line(n)}json(n,e=!1){if(!n){this.append("null");return}switch(typeof n){case"object":if(Array.isArray(n))this.append(this.jsonConfig.arrOpen),this.indent(),n.forEach((o,r)=>{this.json(o,typeof n=="object"||Array.isArray(n)),(r{this.line(`"${r}"`+this.jsonConfig.separator),this.json(n[r],typeof r=="object"||Array.isArray(r)),(t0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function b(i){let n,e,o,r,t;try{const l=new URL(i);n=l.hostname,e=l.pathname,t=l.search,o=l.port?parseInt(l.port):l.protocol==="https:"?443:80,r=l.protocol}catch{const s=i.split("/");n=s[0];const u="/"+s.slice(1).join("/"),[y,p]=u.split("?");e=y,t=p?"?"+p:"",o=80,r="http:"}return e.startsWith("/")||(e="/"+e),{hostname:n,path:e,port:o,protocol:r,params:t}}function g(i,n){return i.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const T={default:!0,language:"c",client:"libcurl",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line(),e.line("struct curl_slist *headers = NULL;");for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`headers = curl_slist_append(headers, "${o}: ${t}");`)):e.line(`headers = curl_slist_append(headers, "${o}: ${r}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${o}");`)}return n.body&&(e.line(),e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),e.json(n.body),e.append(')");')),e.line(),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line('fprintf(stderr, "failed: %s", curl_easy_strerror(res));'),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line(),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}},E={default:!0,language:"csharp",client:"http",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("using System;"),e.line("using System.Net.Http;"),e.line("using System.Threading.Tasks;"),e.line(),e.line("namespace HttpClientExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static async Task Main(string[] args)"),e.line("{"),e.indent(),e.line("using (HttpClient client = new HttpClient())"),e.line("{"),e.indent(),e.line(`HttpRequestMessage request = new HttpRequestMessage(HttpMethod.${n.method.toUpperCase()}, "${n.url}");`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.Headers.Add("${o}", "${t}");`)):e.line(`request.Headers.Add("${o}", "${r}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`request.Headers.Add("Cookie", "${o}");`)}return n.body&&(e.line(),e.line("request.Content = new StringContent("),e.json(n.body),e.append(', System.Text.Encoding.UTF8, "application/json");')),e.line(),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},A={language:"csharp",client:"restsharp",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.AddHeader("${o}", "${t}");`)):e.line(`request.AddHeader("${o}", "${r}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const o=Object.entries(n.cookies).map(([r,t])=>`${r}=${t}`).join("; ");e.line(`request.AddHeader("Cookie", "${o}");`)}return n.body&&(e.line(),e.line("request.AddJsonBody("),e.json(n.body),e.append(");")),e.line(),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},_={default:!0,language:"go",client:"http",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`}),o=g(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),o&&(e.line('"bytes"'),e.line('"encoding/json"')),i.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let r="nil";if(o&&(e.line("jsonBodyMap := map[string]any"),e.json(n.body),i.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),r="bytes.NewBuffer(jsonBodyBytes)",e.line()),i.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${r})`),e.line()),n.headers){for(const[t,l]of Object.entries(n.headers))if(Array.isArray(l))for(const s of l)e.line(`req.Header.Add("${t}", "${s}")`);else e.line(`req.Header.Set("${t}", "${l}")`);e.line()}if(n.cookies){for(const[t,l]of Object.entries(n.cookies))if(Array.isArray(l))for(const s of l)e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${s}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${t}", Value: "${l}"})`);e.line()}return i.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),i.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},U={default:!0,language:"javascript",client:"fetch",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}},P={language:"javascript",client:"axios",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("axios({"),e.indent(),e.line(`method: "${n.method.toLowerCase()}",`),e.line(`url: "${n.url}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}if(n.cookies){e.line("cookies: {"),e.indent();for(const[o,r]of Object.entries(n.cookies))e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}},L={language:"javascript",client:"jquery",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("$.ajax({"),e.indent(),e.line(`url: "${n.url}",`),e.line(`type: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body),e.append(","),e.line('contentType: "application/json",')),e.line("success: function(data) {"),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("},"),i.handleErrors&&(e.line("error: function(jqXHR, textStatus, errorThrown) {"),e.indent(),e.line('console.error("Request failed:", textStatus, errorThrown);'),e.outdent(),e.line("},")),e.outdent(),e.line("});"),e.output()}},S={language:"node",client:"http",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});e.line('const http = require("http");'),e.line();const{hostname:o,path:r,port:t,protocol:l}=b(n.url);if(e.line("const options = {"),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),e.line(`hostname: "${o}",`),e.line(`path: "${r}",`),n.headers){e.line("headers: {"),e.indent();for(const[s,u]of Object.entries(n.headers))Array.isArray(u)?e.line(`"${s}": "${u.join(", ")}",`):e.line(`"${s}": "${u}",`);e.outdent(),e.line("},")}return e.outdent(),e.line("};"),e.line(),e.line("const req = http.request(options, (res) => {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),i.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.json(n.body),e.append(");")),e.line("req.end();"),e.output()}},v={language:"node",client:"fetch",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line('const fetch = require("node-fetch");'),e.line(),e.line('fetch("'+n.url+'", {'),e.indent(),e.line('method: "'+n.method.toUpperCase()+'",'),n.headers){e.line("headers: {"),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?e.line(`"${o}": "${r.join(", ")}",`):e.line(`"${o}": "${r}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),i.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}},H={default:!0,language:"php",client:"curl",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("e.line(`$headers[] = "${o}: ${t}";`)):e.line(`$headers[] = "${o}: ${r}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[o,r]of Object.entries(n.cookies))e.line(`$cookies[] = "${o}=${r}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),e.line(),e.json(n.body),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),i.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}},B={language:"php",client:"guzzle",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`,json:{objOpen:"[",objClose:"]",arrOpen:"[",arrClose:"]",separator:" => ",endComma:!0}});if(e.line("request("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`"${o}" => "${t}",`)):e.line(`"${o}" => "${r}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[o,r]of Object.entries(n.cookies))e.line(`"${o}" => "${r}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => '),e.json(n.body),e.append(","),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}},N={default:!0,language:"python",client:"http",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`}),o=n.method.toUpperCase(),r=o!=="GET"&&n.body,t=n.headers&&Object.keys(n.headers).length>0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];e.line("import http.client"),e.line("import json"),e.line();const{hostname:u,path:y,port:p,protocol:I}=b(n.url);if(e.line(`conn = http.client.HTTPSConnection("${u}", ${p})`),t){e.line(),s.push("headers"),e.line("headers = {"),e.indent();for(const[$,h]of Object.entries(n.headers))Array.isArray(h)?e.line(`"${$}": "${h.join(", ")}",`):e.line(`"${$}": "${h}",`);e.outdent(),e.line("}")}if(l){e.line(),s.push("cookies"),e.line("cookies = {"),e.indent();for(const[$,h]of Object.entries(n.cookies))e.line(`"${$}": "${h}",`);e.outdent(),e.line("}")}return r&&(e.line(),s.push("payload"),e.line("payload = "),e.json(n.body)),e.line(),e.line(`conn.request("${o}", "${y}"`+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}},x={language:"python",client:"requests",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`}),r=n.method.toUpperCase()!=="GET"&&n.body,t=n.headers&&Object.keys(n.headers).length>0,l=n.cookies&&Object.keys(n.cookies).length>0;let s=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),t){e.line(),s.push("headers=headers"),e.line("headers = {"),e.indent();for(const[u,y]of Object.entries(n.headers))e.line(`"${u}": "${y}"`),Object.keys(n.headers).indexOf(u)!==Object.keys(n.headers).length-1&&e.append(",");e.outdent(),e.line("}")}if(l){e.line(),s.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[u,y]of Object.entries(n.cookies))e.line(`"${u}": "${y}"`),Object.keys(n.cookies).indexOf(u)!==Object.keys(n.cookies).length-1&&e.append(",");e.outdent(),e.line("}")}return r&&(e.line(),s.push("data=data"),e.line("data = "),e.json(n.body)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(s.length>0?`, ${s.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}},D={default:!0,language:"ruby",client:"nethttp",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line('require "net/http"'),e.line('require "uri"'),e.line(),e.line('uri = URI.parse("'+n.url+'")'),n.method.toUpperCase()==="GET"?e.line("request = Net::HTTP::Get.new(uri)"):n.method.toUpperCase()==="POST"?e.line("request = Net::HTTP::Post.new(uri)"):n.method.toUpperCase()==="PUT"?e.line("request = Net::HTTP::Put.new(uri)"):n.method.toUpperCase()==="DELETE"?e.line("request = Net::HTTP::Delete.new(uri)"):e.line('request = Net::HTTP::GenericRequest.new("'+n.method.toUpperCase()+'", uri.path, nil, nil)'),n.headers&&Object.keys(n.headers).length>0)for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request["${o}"] = "${t}"`)):e.line(`request["${o}"] = "${r}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[o,r]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${o}=${r}"`);return n.body&&(e.line("request.body = "),e.json(n.body)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},F={language:"ruby",client:"faraday",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line('require "faraday"'),e.line(),e.line('conn = Faraday.new(url: "'+n.url+'") do |f|'),e.indent(),e.line("f.adapter Faraday.default_adapter"),e.outdent(),e.line("end"),e.line(),e.line("response = conn."+n.method.toLowerCase()+" do |req|"),e.indent(),e.line('req.url "'+n.url+'"'),n.headers){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`req.headers["${o}"] = "${t}"`)):e.line(`req.headers["${o}"] = "${r}"`)}if(n.cookies){e.line();for(const[o,r]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${o}=${r}"`)}return n.body&&(e.line(),e.line("req.body = "),e.json(n.body)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},M={language:"rust",client:"reqwest",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("use reqwest::blocking::Client;"),e.line("use std::error::Error;"),e.line(),e.line("fn main() -> Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`.header("${o}", "${t}")`)):e.line(`.header("${o}", "${r}")`);if(n.cookies)for(const[o,r]of Object.entries(n.cookies))Array.isArray(r)?r.forEach(t=>e.line(`.cookie("${o}", "${t}")`)):e.line(`.cookie("${o}", "${r}")`);return n.body&&(e.line(".body("),e.json(n.body),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),i.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}},J={default:!0,language:"shell",client:"curl",generate(i,n){var r,t;const e=new d({indent:i.indent||" ",join:i.join||` \\ +`});if(e.line(`curl -X ${n.method} "${n.url}"`),e.indent(),n.headers)for(const[l,s]of Object.entries(n.headers))if(Array.isArray(s))for(const u of s)e.line(`-H "${l}: ${u.replace(/"/g,'\\"')}"`);else e.line(`-H "${l}: ${s.replace(/"/g,'\\"')}"`);if(n.cookies){const l=Object.entries(n.cookies).flatMap(([s,u])=>Array.isArray(u)?u.map(y=>`${s}=${y}`):`${s}=${u}`).join("; ");e.line(`-b "${l}"`)}if(n.body){const l=((r=n.headers)==null?void 0:r["content-type"])||((t=n.headers)==null?void 0:t["Content-Type"])||"application/json";if(l.includes("application/json"))e.line("-d $'"),e.json(n.body),e.append("'");else if(l==="application/x-www-form-urlencoded"){const s=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${s}'`)}else if(typeof n.body=="string"){const s=n.body.replace(/'/g,"'\\''");e.line(`-d '${s}'`)}}let o=e.output();return o=o.replace(/\\\s*$/,"").trim(),o}},G={default:!0,language:"swift",client:"nsurlsession",generate(i,n){const e=new d({indent:i.indent||" ",join:i.join||` +`});if(e.line("import Foundation"),e.line(),e.line('let url = URL(string: "'+n.url+'")!'),e.line("var request = URLRequest(url: url)"),e.line('request.httpMethod = "'+n.method.toUpperCase()+'"'),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[o,r]of Object.entries(n.headers))Array.isArray(r)?r.forEach(t=>e.line(`request.addValue("${t}", forHTTPHeaderField: "${o}")`)):e.line(`request.addValue("${r}", forHTTPHeaderField: "${o}")`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();for(const[o,r]of Object.entries(n.cookies))e.line(`request.addValue("${o}=${r}", forHTTPHeaderField: "Cookie")`)}return n.body&&(e.line(),e.line("let body = "),e.json(n.body),e.line("request.httpBody = body")),e.line(),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};a(T),a(E),a(A),a(_),a(U),a(P),a(L),a(S),a(v),a(H),a(B),a(N),a(x),a(D),a(F),a(M),a(J),a(G),c.Builder=d,c.ClearRegistry=O,c.Codes=k,c.Generate=w,c.IsJsonRequest=g,c.Languages=C,c.Register=a,c.Search=j,c.SetDefault=m,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}); diff --git a/docs/assets/index.css b/docs/assets/index.css index 01978af..bcd05cd 100644 --- a/docs/assets/index.css +++ b/docs/assets/index.css @@ -1 +1 @@ -@font-face{font-family:neon-monospace-semi-bold;src:url(/assets/MonaspaceNeon-SemiBold.woff2) format("woff2"),url(/assets/MonaspaceNeon-SemiBold.woff) format("woff");font-weight:400;font-style:normal}:root{--color-primary: #f1602c;--color-secondary: #b2e4e1;--color-tertiary: #58adaf;--color-quaternary: #fbd0a6;--color-quinary: #947661;--color-section-bg: #d4d4d4;--color-text: #3d2c2c;--color-link: var(--color-primary);--font-primary: "Roboto", sans-serif;--font-size: 16px;--spacing: 16px;--spacing-half: 8px;--spacing-quarter: 4px;--header-height: 65px;--content-width: 800px;--border-radius: 8px;--border-color: #535353}*{margin:0;padding:0;border:0;vertical-align:baseline;backface-visibility:hidden}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}button{background:none;color:var(--color-font)}button:active{outline:none}html{height:100%;min-height:100%;z-index:0}body{position:relative;height:100%;padding:0;margin:0;overflow:hidden;color:var(--color-font);font-family:neon-monospace-semi-bold;font-size:var(--font-size);font-weight:400;line-height:1.3}@media print{body{overflow:unset}}#app{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;height:100%;min-height:100%;width:100%;min-width:100%;padding:0;margin:0;overflow:hidden;background:radial-gradient(circle,var(--color-secondary) 0%,var(--color-tertiary) 75%);box-sizing:border-box}#app .header{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;right:0;width:100%;min-width:100%;max-width:var(--content-width);height:var(--header-height);padding:0;margin:0;z-index:100;box-shadow:0 4px 8px #00000080;background-color:var(--color-secondary);overflow:hidden;box-sizing:border-box}@media screen and (max-width: 800px){#app .header{padding:0 var(--spacing)}}#app>.content{flex:1 1 auto;position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;width:100%;max-width:100vw;height:calc(100% - (var(--header-height) + var(--spacing) + var(--spacing)));margin:var(--header-height) 0 0 0;padding:var(--spacing) 0 var(--spacing) 0;gap:var(--spacing);z-index:1;overflow-x:hidden;overflow-y:auto;box-sizing:border-box}#app>.content .section{width:100%;max-width:var(--content-width);padding:var(--spacing);margin:0;border-radius:var(--border-radius);box-shadow:0 4px 8px #00000080;background-color:var(--color-section-bg);box-sizing:border-box}button{padding:var(--spacing-half) var(--spacing);color:var(--color-text);font-weight:700;font-size:var(--font-size);background-color:var(--color-tertiary);border:0px solid var(--border-color);border-radius:var(--border-radius);cursor:pointer;transition:all .3s}button:hover{background-color:var(--color-quaternary);color:var(--color-text)}.separator{height:1px;width:80%;background-color:var(--color-border);margin:var(--spacing-quarter) auto;opacity:.5}p{margin:0 0 8px}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:700;line-height:1.1;color:inherit}h1{font-size:36px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}h5{font-size:13px}h6{font-size:8px}small{font-size:80%}strong{font-weight:700}a{color:var(--color-link);text-decoration:none;transition:color .3s}.alert{padding:var(--spacing);border:1px solid transparent;border-radius:var(--border-radius)}.alert.info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert.warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert.error{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.header .center{display:flex;justify-content:space-between;align-items:center;margin:0 auto;width:100%;max-width:800px;box-sizing:border-box}.header .center .left{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:var(--spacing);box-sizing:border-box}.header .center .left .logo{display:flex;justify-content:center;width:100%;max-width:150px;height:100%;padding:var(--spacing-half) 0 var(--spacing-half) 0;box-sizing:border-box;overflow:hidden}.header .center .left .logo img{width:100%;height:calc(var(--header-height) - var(--spacing))}.header .center .left .title{display:flex;align-items:center;padding:5px 0 0;margin:0;font-size:24px;font-weight:700}.header .center .socials{display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-half)}.header .center .socials a img{max-width:30px;max-height:30px}.footer{padding:var(--spacing-half)!important;font-size:smaller;text-align:center}.gimmehttp{--text-color: #e0e0e0;--spacing: 16px;--spacing-half: 8px;--spacing-quarter: 4px;--border-radius: 8px;--border-color: #636363;--modal-bg-color: rgba(0, 0, 0, .4);--modal-content-color: #2b2b2b;--timing: .3s;display:flex;flex-direction:column;position:relative;border-radius:var(--border-radius);overflow:hidden}.gimmehttp .selector{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;z-index:1000;gap:var(--spacing-half);border-bottom-left-radius:var(--border-radius);border-left:solid 1px var(--border-color);border-bottom:solid 1px var(--border-color);padding:var(--spacing-half);color:var(--text-color);cursor:pointer;transition:height var(--timing),width var(--timing)}.gimmehttp .selector:hover{background-color:var(--border-color);color:var(--text-color)}.gimmehttp .selector .select{height:100%;width:100%;max-height:28px;max-width:40px;background-color:transparent;color:var(--border-color)}.gimmehttp .selector .arrows{height:100%;width:100%;max-height:20px;max-width:40px;fill:var(--border-color)}.gimmehttp .output{width:auto;overflow:hidden}.gimmehttp .output.modalOpen pre.shiki{min-height:300px!important}.gimmehttp .output pre.shiki{height:auto;min-height:50px;margin:0;padding:var(--spacing);border-radius:var(--border-radius);overflow-x:auto;overflow-y:hidden;transition:min-height var(--timing) ease-in-out}.gimmehttp .output pre.shiki::-webkit-scrollbar{width:8px;height:8px}.gimmehttp .output pre.shiki::-webkit-scrollbar-thumb{background-color:#555;border-radius:4px}.gimmehttp .output pre.shiki::-webkit-scrollbar-thumb:hover{background-color:#777}.gimmehttp .output pre.shiki::-webkit-scrollbar-track{background-color:#2b2b2b}.gimmehttp .modal{display:flex;position:absolute;justify-content:center;align-items:center;width:100%;height:100%;left:0;top:0;z-index:1000;overflow:auto;background-color:var(--modal-bg-color)}.gimmehttp .modal .content{display:flex;flex-direction:column;width:90%;max-width:350px;padding:var(--spacing);gap:var(--spacing);color:var(--text-color);background-color:var(--modal-content-color);border-radius:var(--border-radius)}.gimmehttp .modal .content .langs{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--spacing-half)}.gimmehttp .modal .content .langs .lang{display:flex;width:50px;height:50px;padding:var(--spacing-half);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer}.gimmehttp .modal .content .langs .lang.selected{background-color:var(--border-color)}.gimmehttp .modal .content .langs .lang img{display:flex;justify-self:center;align-self:center;width:100%;height:100%}.gimmehttp .modal .content .separator{width:50%;height:1px;margin:0 auto;background-color:var(--border-color)}.gimmehttp .modal .content .clients{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--spacing)}.gimmehttp .modal .content .clients .client{padding:var(--spacing-half);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer}.gimmehttp .fade-enter-active,.gimmehttp .fade-leave-active{transition:all var(--timing) ease}.gimmehttp .fade-enter,.gimmehttp .fade-leave-to{opacity:0}.intro{display:flex;flex-direction:column;gap:var(--spacing)}.intro .available_languages{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-half)}.intro .available_languages .text{display:flex;flex-direction:column;align-items:center;font-weight:700}.intro .available_languages .langs{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:var(--spacing-half)}.intro .available_languages .langs .lang{padding:var(--spacing-quarter);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer}.intro .available_languages .langs .lang img{width:50px;height:50px}.intro .select_example{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:var(--spacing-half)}.shiki-style pre.shiki{padding:var(--spacing);border-radius:var(--border-radius);overflow-x:auto;overflow-y:hidden;white-space:pre-wrap}.install,.settings{display:flex;flex-direction:column;gap:var(--spacing)}.examples{display:flex;flex-direction:column;gap:calc(var(--spacing) * 2)}.examples .example{display:flex;flex-direction:column;gap:var(--spacing-half)}.fake-header{min-height:calc(var(--header-height) + var(--spacing))} +@font-face{font-family:neon-monospace-semi-bold;src:url(/assets/MonaspaceNeon-SemiBold.woff2) format("woff2"),url(/assets/MonaspaceNeon-SemiBold.woff) format("woff");font-weight:400;font-style:normal}:root{--color-primary: #f1602c;--color-secondary: #b2e4e1;--color-tertiary: #58adaf;--color-quaternary: #fbd0a6;--color-quinary: #947661;--color-section-bg: #d4d4d4;--color-text: #3d2c2c;--color-link: var(--color-primary);--font-primary: "Roboto", sans-serif;--font-size: 16px;--spacing: 16px;--spacing-half: 8px;--spacing-quarter: 4px;--header-height: 65px;--content-width: 800px;--border-radius: 8px;--border-color: #535353;--animation-timing: .3s}*{margin:0;padding:0;border:0;vertical-align:baseline;backface-visibility:hidden}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}button{background:none;color:var(--color-font)}button:active{outline:none}html{height:100%;min-height:100%;z-index:0}body{position:relative;height:100%;padding:0;margin:0;overflow:hidden;color:var(--color-font);font-family:neon-monospace-semi-bold;font-size:var(--font-size);font-weight:400;line-height:1.3}@media print{body{overflow:unset}}#app{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;height:100%;min-height:100%;width:100%;min-width:100%;padding:0;margin:0;overflow:hidden;background:radial-gradient(circle,var(--color-secondary) 0%,var(--color-tertiary) 75%);box-sizing:border-box}#app .header{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;right:0;width:100%;min-width:100%;max-width:var(--content-width);height:var(--header-height);padding:0;margin:0;z-index:100;box-shadow:0 4px 8px #00000080;background-color:var(--color-secondary);overflow:hidden;box-sizing:border-box}@media screen and (max-width: 800px){#app .header{padding:0 var(--spacing)}}#app>.content{flex:1 1 auto;position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;width:100%;max-width:100vw;height:calc(100% - (var(--header-height) + var(--spacing) + var(--spacing)));margin:var(--header-height) 0 0 0;padding:var(--spacing) 0 var(--spacing) 0;gap:var(--spacing);z-index:1;overflow-x:hidden;overflow-y:auto;box-sizing:border-box}#app>.content .section{width:100%;max-width:var(--content-width);padding:var(--spacing);margin:0;border-radius:var(--border-radius);box-shadow:0 4px 8px #00000080;background-color:var(--color-section-bg);box-sizing:border-box}button{padding:var(--spacing-half) var(--spacing);color:var(--color-text);font-weight:700;font-size:var(--font-size);background-color:var(--color-tertiary);border:0px solid var(--border-color);border-radius:var(--border-radius);cursor:pointer;transition:all .3s}button:hover{background-color:var(--color-quaternary);color:var(--color-text)}.separator{height:1px;width:80%;background-color:var(--color-border);margin:var(--spacing-quarter) auto;opacity:.5}p{margin:0 0 8px}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:700;line-height:1.1;color:inherit}h1{font-size:36px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}h5{font-size:13px}h6{font-size:8px}small{font-size:80%}strong{font-weight:700}a{color:var(--color-link);text-decoration:none;transition:color .3s}.alert{padding:var(--spacing);border:1px solid transparent;border-radius:var(--border-radius)}.alert.info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert.warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert.error{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.header .center{display:flex;justify-content:space-between;align-items:center;margin:0 auto;width:100%;max-width:800px;box-sizing:border-box}.header .center .left{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:var(--spacing);box-sizing:border-box}.header .center .left .logo{display:flex;justify-content:center;width:100%;max-width:150px;height:100%;padding:var(--spacing-half) 0 var(--spacing-half) 0;box-sizing:border-box;overflow:hidden}.header .center .left .logo img{width:100%;height:calc(var(--header-height) - var(--spacing))}.header .center .left .title{display:flex;align-items:center;padding:5px 0 0;margin:0;font-size:24px;font-weight:700}.header .center .socials{display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-half)}.header .center .socials a img{max-width:30px;max-height:30px}.footer{padding:var(--spacing-half)!important;font-size:smaller;text-align:center}.gimmehttp{--text-color: #e0e0e0;--spacing: 16px;--spacing-half: 8px;--spacing-quarter: 4px;--border-radius: 8px;--border-color: #636363;--modal-bg-color: rgba(0, 0, 0, .4);--modal-content-color: #2b2b2b;--timing: .3s;display:flex;flex-direction:column;position:relative;border-radius:var(--border-radius);overflow:hidden}.gimmehttp .selector{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;z-index:1000;gap:var(--spacing-half);border-bottom-left-radius:var(--border-radius);border-left:solid 1px var(--border-color);border-bottom:solid 1px var(--border-color);padding:var(--spacing-half);color:var(--text-color);cursor:pointer;transition:height var(--timing),width var(--timing)}.gimmehttp .selector:hover{background-color:var(--border-color);color:var(--text-color)}.gimmehttp .selector .select{height:100%;width:100%;max-height:28px;max-width:40px;background-color:transparent;color:var(--border-color)}.gimmehttp .selector .arrows{height:100%;width:100%;max-height:20px;max-width:40px;fill:var(--border-color)}.gimmehttp .output{width:auto;padding:0;margin:0!important;overflow:hidden}.gimmehttp .output.modalOpen pre.shiki{min-height:300px!important}.gimmehttp .output pre.shiki{height:auto;min-height:50px;margin:0;padding:var(--spacing);border-radius:var(--border-radius);overflow-x:auto;overflow-y:hidden;transition:min-height var(--timing) ease-in-out}.gimmehttp .output pre.shiki::-webkit-scrollbar{width:8px;height:8px}.gimmehttp .output pre.shiki::-webkit-scrollbar-thumb{background-color:#555;border-radius:4px}.gimmehttp .output pre.shiki::-webkit-scrollbar-thumb:hover{background-color:#777}.gimmehttp .output pre.shiki::-webkit-scrollbar-track{background-color:#2b2b2b}.gimmehttp .modal{display:flex;position:absolute;justify-content:center;align-items:center;width:100%;height:100%;left:0;top:0;z-index:1000;overflow:auto;background-color:var(--modal-bg-color)}.gimmehttp .modal .content{display:flex;flex-direction:column;width:90%;max-width:350px;padding:var(--spacing);gap:var(--spacing);color:var(--text-color);background-color:var(--modal-content-color);border-radius:var(--border-radius)}.gimmehttp .modal .content .langs{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--spacing-half)}.gimmehttp .modal .content .langs .lang{display:flex;width:50px;height:50px;padding:var(--spacing-half);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer}.gimmehttp .modal .content .langs .lang.selected{background-color:var(--border-color)}.gimmehttp .modal .content .langs .lang img{display:flex;justify-self:center;align-self:center;width:100%;height:100%}.gimmehttp .modal .content .separator{width:50%;height:1px;margin:0 auto;background-color:var(--border-color)}.gimmehttp .modal .content .clients{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--spacing)}.gimmehttp .modal .content .clients .client{padding:var(--spacing-half);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer}.gimmehttp .fade-enter-active,.gimmehttp .fade-leave-active{transition:all var(--timing) ease}.gimmehttp .fade-enter,.gimmehttp .fade-leave-to{opacity:0}.intro{display:flex;flex-direction:column;gap:var(--spacing)}.intro .available_languages{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-half)}.intro .available_languages .text{display:flex;flex-direction:column;align-items:center;font-weight:700}.intro .available_languages .langs{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:wrap;gap:var(--spacing-half)}.intro .available_languages .langs .lang{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--spacing-quarter) var(--spacing-half);border:solid 1px var(--border-color);border-radius:var(--border-radius);cursor:pointer;transition:background-color var(--animation-timing)}.intro .available_languages .langs .lang.selected,.intro .available_languages .langs .lang:hover{background-color:var(--color-quaternary)}.intro .available_languages .langs .lang img{width:40px;height:40px;-webkit-user-select:none;user-select:none}.intro .clients{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:var(--spacing-half)}.intro .clients .client{min-width:75px;padding:var(--spacing-half) var(--spacing);border:solid 1px var(--border-color);border-radius:var(--border-radius);text-align:center;cursor:pointer;transition:background-color var(--animation-timing);-webkit-user-select:none;user-select:none}.intro .clients .client.selected,.intro .clients .client:hover{background-color:var(--color-quaternary)}.intro .select_example{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:var(--spacing-half)}.intro .select_example button.selected,.intro .select_example button:hover{background-color:var(--color-quaternary)}.shiki-style pre.shiki{padding:var(--spacing);border-radius:var(--border-radius);overflow-x:auto;overflow-y:hidden;white-space:pre-wrap}.install,.settings{display:flex;flex-direction:column;gap:var(--spacing)}.examples{display:flex;flex-direction:column;gap:calc(var(--spacing) * 2)}.examples .example{display:flex;flex-direction:column;gap:var(--spacing-half)}.fake-header{min-height:calc(var(--header-height) + var(--spacing))} diff --git a/docs/assets/index.js b/docs/assets/index.js index c468bb0..ca870f0 100644 --- a/docs/assets/index.js +++ b/docs/assets/index.js @@ -1,41 +1,27 @@ -import{d as y,o as g,e as p,f as K,g as v,t as C,j as l,k as E,l as ee,v as ne,F as O,m as w,q as f,x as k,T as te,y as m,z as ie}from"./@vue.js";import{c as oe,a as se}from"./vue-router.js";import{c as R,g as L,a as U,b as B,d as _,e as q,j as H,f as I,p as M,h as P,r as J,i as N,k as D,s as G,l as V,t as x,m as F,n as Y}from"./@shikijs.js";import"./hast-util-to-html.js";import"./html-void-elements.js";import"./property-information.js";import"./zwitch.js";import"./stringify-entities.js";import"./character-entities-legacy.js";import"./character-entities-html4.js";import"./ccount.js";import"./comma-separated-tokens.js";import"./space-separated-tokens.js";import"./hast-util-whitespace.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function e(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(o){if(o.ep)return;o.ep=!0;const s=e(o);fetch(o.href,s)}})();const re=oe({history:se(),linkActiveClass:"active",routes:[]}),le=y({name:"Header",data(){return{}}}),ae="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='988.301'%20height='415.4'%3e%3cstyle%3e%20.logo-color%20{%20fill:%20%23f1602c;%20}%20%3c/style%3e%3cpath%20class='logo-color'%20d='M878.614%20105.695v174.273l-49.036-45.165-92.912%2088.911V415.4h30.97v-76.2l61.942-60.651%2027.163%2023.292-36.132%2036.132%2021.873%2021.873%2067.103-67.102V136.665h47.746v194.92l-83.167%2083.167%2043.873-.127%2070.264-70.2v-238.73z'%20/%3e%3cpath%20class='logo-color'%20d='M771.846%20247.41h-35.225v-24.299h25.285l16.567-18.776v-50.753l29.822-29.821-29.822-29.822V43.186L761.906%2024.41H736.62V.11L771.846%200l33.136%2033.135v49.759l32.03%2031.975v17.617l-32.03%2032.031v49.758z'%20/%3e%3cpath%20class='logo-color'%20d='M666.21%20147.087v49.687h-28.687V58.587h79.722l19.282%2020.244.035%2048.243-20.025%2020.005zm47.702-33.39.056-10.891.002-9.874-9.997-10.345H666.21v40.687l37.749.022z'%20/%3e%3cpath%20class='logo-color'%20d='M619.991%2058.587v24.469h-41.343v113.718h-29.063V83.056h-41.531v-24.47ZM490.71%2058.587v24.469h-41.344v113.718h-29.062V83.056h-41.531v-24.47z'%20/%3e%3cpath%20class='logo-color'%20d='M334.054%20196.774v-61.687h-54v61.687H251.46V58.587h28.594v52.687h54V58.587h28.687v138.187Z'%20/%3e%3cpath%20class='logo-color'%20d='M216.455%20247.41h35.225v-24.299h-25.285l-16.567-18.776v-50.753l-29.822-29.821%2029.822-29.822V43.186l16.567-18.776h25.285V.11L216.455%200l-33.136%2033.135v49.759l-32.03%2031.975v17.617l32.03%2032.031v49.758z'%20/%3e%3cpath%20class='logo-color'%20d='M109.687%20105.695v174.273l49.037-45.165%2092.911%2088.911V415.4h-30.97v-76.2l-61.941-60.651-27.164%2023.292%2036.132%2036.132-21.873%2021.873-67.102-67.102V136.665H30.97v194.92l83.167%2083.167-43.873-.127L0%20344.425v-238.73z'%20/%3e%3c/svg%3e",de="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyRTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyRjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJDOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJEOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FYrpWAAABrNJREFUeNrkW2lsVFUUvjMWirYUkS5BXApUa2vd6gL+wAWjoP5RiW2EUBajAiqSuPADQ0w1UUQTrcFAUUSJEKriEuMWFKuJIElFSS24YNpQK6WoBbuAktbva880M8O8vnfevJm+CSf5cme599xzvnfffffce17AJFjycnLzUVwDXAgUAucBY4BMIEOqdQIdwJ/Az4J64OvWtoONibQvkACHgyiuBe4CbgLOjVNlE/AZsAmoBSE9viQAjueieBCYC5yVoAvWDKwHqkBEmy8IgON09lHgXmCESY4cBaqBlSCieUgIgOPDUCwBngBOM0MjXdL/CyDiv6QRAOcvR7EBKDL+kD3AbJBQl1AC4DjrLwaeBYYbf8m/ciu+BCJ6PScAzp+K4nXgTuNveQuYAxK6PSMAzo9C8TFwtUkN2Q7cDBIOx02AOP8FUGpSSzgf3GBHQsDGec7unwOTTWrKDiGhS02ATHjvALeb1JZ3gRlWE+MpVq0yMzIekRk/1YWP6o7Ors5vHI8AXH1Odl8BaTbKrwd4j10MTAduS8JqkKvA94BPgN0A56htNm2OMyDDKNhuSwCcT5dIrMBG6S4oLI1qezqKBcBjwGiPHW8HVgCr0W97VL/fobjMpv2vQAnaHgv/MdYVXurAeSNPhggRw56BQatRVgL3A0H5+xDwI8Dw9g/5Hlq+clmdDYwF8iV0zpb/GP2tApZHOx4m2xwQUCC+VVqOABg+AUUDkO6AgHkwaL2DJXORxPVNylUnw+gpXObaLXFRlxHoaw7U8uoXQ99vViNgqUPnKQfsKojhdW7GuxDW5JUtIuni432hH4JhLJ7Dq6qwcZiPZnpNXDJPfI0kQEJbjVM5PiIgW3nhlkQQILH9LGWnV/iIAK0ts8TngREwDchVKrnKRwRobckVnwcIKFcq4ONrkY8IWBT2SHUq5eEE3Khs/CRm6Z1+8V5sqVQ26/M5gHuhSJ79TqUFmIhOj/ppwQ8/Rshqb5yiWXFQFhsaWeU352UU0KaXlc2mBI1+Y3OzjyO/Gm2kSAIKFQ2awfQ+v3oP23gL/K5oUhh0GPiEZG8KxP97FHULgsqwtTUFCDioqHsGCRipaHA8BQjQrAcyg4roj5KVAgSMUtRNDyqVj0wBAlQ2koBuRf3xKUBAvqJuN1eCrYpAiHNAltNjpyFYDfL47oix38wdmDA5AvYr+kjzWRgcLVcqnKfsJwGNyk5u9TEBtyjrNwaVgRClTPKA/Db8aVOZslkDG2nD2vEuOkqGlLmYpHcGJLlJu8LjtvJFgx06Jvnq8xC33gUBeUE4waWjduua5wdVPrr6VS6cr6PvoXv5Ixed3g3mH/fB1V9OW1w07fM5IEouUEZR4bIWWJzsTRJ55r8I3ONSRRFs3hsIU8hkgkkulf0CPAx8qElQcuk4beYp9Epgoks138LOvqSPgfyAzIwMZlnFSobgIegc4H3gH6AkxmKDub9Mjb0DeoYDrZ1dne0eO14AvfPx8RXgAYaycahbBvt+GLgFpIM0md3PjqrMTMxpYKxB6p1v+s/n7bbSuMCqldmZyc+fRh9ND+IsAxrmG3C3qtj0J1uP84hLrnwnwJbjEQRIxzw0XB2jER93C9Bog9TjsRgzLpzuJr0BzHV6e8gwf9XoziqdCv1YE/oSTQBHwfem/3w+5syPxuukLtfdO0zk+WIs+YuPKLQ7ohzyWTIix3joPPMTLg1d/Yg5gIL7ogf32U/4WGGhYDr+34J6bUALPpPA62w6XYMOP9BaCv3HoD/PeJubODN6U/eEq4cKTIurttpBAZ4L+87TmKdtOt0ah8FbPXS+WnyLEKskqUy5FaweM5dA2e6w+pNkZuajhfMD3/zYBfDKb3Y6+cWwgytOL7bh98nQ73BEgHReIvd4Roy/a6Cs3CRYJOnq7zjV8HWcybC33mpLLKZIA84FPRYhcSokUNL2Civnjd0MjoZbUCy0+PtNkDDD5wQsFB8sxWm2+GJZd8eSt4HnZXnZ66Nb4CHYYxuxat4XmI1inbHeczskq77DMrK4z8AgK3+Q/L5EEMBn/PzQos0zAsQgvg5XY3TpNKOTSAD3NsrQX63TBqq9PVHM9NgvfXi/06ZSjfNqAoQEHj9Pled+pw8cpw2co6aKbSoJxDlJnYniKdP/sqSVrrEw7IBL/TnG+rSXEy7fYVoG/S1uffDkzVEYypB1qewJRCdb5rp9yxN6mQDZFmOS2wisCIXo8Yin7w7LiKiQEcFYfhOMnBmnzo1CLIO09Qyt47niJxDQ29trTmY56Qn4X4ABAFR7IoDmVT5NAAAAAElFTkSuQmCC",ce="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFyzg3////IltC9QAAAAFiS0dEAf8CLd4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkSURBVEjHY2AYBYMV/IeDUQG4AJgeFRgVGBUYFSBNYBQMPgAARjtdvxo6xaMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDUtMzBUMjM6MTA6NDQtMDc6MDCm4GvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTEyLTA2VDEyOjIwOjEyLTA4OjAwpIGEmQAAADJ0RVh0UE5HOmNIUk0AY2h1bmsgd2FzIGZvdW5kIChzZWUgQ2hyb21hdGljaXR5LCBhYm92ZSkH0UjaAAAAKXRFWHRQTkc6Z0FNQQBnYW1tYT0wLjQ1NDU1IChTZWUgR2FtbWEsIGFib3ZlKRISLKcAAAAUdEVYdFBORzpJSERSLmJpdF9kZXB0aAA4KYV+UAAAABV0RVh0UE5HOklIRFIuY29sb3JfdHlwZQA2BkqnKwAAABt0RVh0UE5HOklIRFIuaW50ZXJsYWNlX21ldGhvZAAw+zsHjAAAABx0RVh0UE5HOklIRFIud2lkdGgsaGVpZ2h0ADE2LCAxNjjVBg0AAAAodEVYdFBORzpwSFlzAHhfcmVzPTI4MzUsIHlfcmVzPTI4MzUsIHVuaXRzPTGCKXI+AAAAKHRFWHRQTkc6c1JHQgBpbnRlbnQ9MCAoU2VlIFJlbmRlcmluZyBpbnRlbnQp8hEU9QAAAABJRU5ErkJggg==",A=(t,n)=>{const e=t.__vccOpts||t;for(const[i,o]of n)e[i]=o;return e},ue={class:"header"};function ge(t,n,e,i,o,s){return g(),p("div",ue,n[0]||(n[0]=[K('

GimmeHTTP

',1)]))}const pe=A(le,[["render",ge]]),he=y({name:"Footer",data(){return{year:new Date().getFullYear()}}}),fe={class:"section footer"};function me(t,n,e,i,o,s){return g(),p("footer",fe,[v(" © "+C(t.year)+" ",1),n[0]||(n[0]=l("a",{href:"http://webiswhatido.com",target:"_blank"},"Brian Voelker",-1)),n[1]||(n[1]=v(". ")),n[2]||(n[2]=l("br",null,null,-1)),n[3]||(n[3]=v(" GimmeHTTP is under the MIT license. "))])}const ye=A(he,[["render",me]]),j=[];function Q(){return j}function Ae(){return j.map(t=>t.language).filter((t,n,e)=>e.indexOf(t)===n)}function $e(t,n){if(t===""||t===void 0)return new Error("Language is required");const e=j.filter(s=>s.language.toLowerCase()===t.toLowerCase());if(e.length===0)return new Error("No client found for "+t);const i=e.find(s=>s.default)||e[0];if(!n)return i;const o=e.find(s=>s.client.toLowerCase()===n.toLowerCase());return o||i}function c(t){if(!t)return new Error("Client is required");if(Array.isArray(t)){t.forEach(i=>c(i));return}const n=j.filter(i=>i.language.toLowerCase()===t.language.toLowerCase()),e=n.find(i=>i.client.toLowerCase()===t.client.toLowerCase());if(t.default===void 0&&(t.default=n.length===0),e){const i=j.indexOf(t);j[i]=t;return}j.push(t)}function b(t){let n=ke(t);if(n)return{error:n.message};t.config=je(t.config);const e=$e(t.language,t.client);if(e instanceof Error)return{error:e.message};const i=e.generate(t.config,t.http);return{language:e.language,client:e.client,code:i}}function ke(t){if(!t)return new Error("Request is required");if(!t.language)return new Error("language is required");if(!t.http)return new Error("http is required");if(!t.http.method)return new Error("http.method is required");if(!t.http.url)return new Error("http.url is required")}function je(t){return t=t||{},t.indent||(t.indent=" "),t.join||(t.join=` -`),t.handleErrors===void 0&&(t.handleErrors=!1),t}class u{constructor(n={}){this.code=[],this.currentDepth=0,this.indentChar=n.indent||" ",this.lineJoin=n.join||` -`}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0&&(this.code[this.code.length-1].line+=n)}indent(){this.currentDepth+=1}outdent(){this.currentDepth>0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function ve(t,n){return t.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const Ce={default:!0,language:"c",client:"libcurl",generate(t,n){const e=new u({indent:t.indent||" ",join:t.join||` -`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line("struct curl_slist *headers = NULL;");for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`headers = curl_slist_append(headers, "${i}: ${s}");`)):e.line(`headers = curl_slist_append(headers, "${i}: ${o}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,s])=>`${o}=${s}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${i}");`)}return n.body&&(e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),Oe(n.body,e),e.append(')");')),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line(`fprintf(stderr, "curl_easy_perform() failed: %s -", curl_easy_strerror(res));`),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}};function Oe(t,n){const e=JSON.stringify(t,null,2).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`request.Headers.Add("${i}", "${s}");`)):e.line(`request.Headers.Add("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,s])=>`${o}=${s}`).join("; ");e.line(`request.Headers.Add("Cookie", "${i}");`)}return n.body&&e.line(`request.Content = new StringContent("${JSON.stringify(n.body).replace(/"/g,'"')}", System.Text.Encoding.UTF8, "application/json");`),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},be={language:"csharp",client:"restsharp",generate(t,n){const e=new u({indent:t.indent||" ",join:t.join||` -`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`request.AddHeader("${i}", "${s}");`)):e.line(`request.AddHeader("${i}", "${o}");`);if(n.cookies&&Object.keys(n.cookies).length>0){const i=Object.entries(n.cookies).map(([o,s])=>`${o}=${s}`).join("; ");e.line(`request.AddHeader("Cookie", "${i}");`)}return n.body&&e.line(`request.AddJsonBody(${JSON.stringify(n.body)});`),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},Te={default:!0,language:"go",client:"http",generate(t,n){const e=new u({indent:t.indent||" ",join:t.join||` -`}),i=ve(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),i&&(e.line('"bytes"'),e.line('"encoding/json"')),t.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let o="nil";if(i){e.line("jsonBodyMap := map[string]any{"),e.indent();for(const[s,r]of Object.entries(n.body))e.line(`"${s}": ${JSON.stringify(r)},`);e.outdent(),e.line("}"),t.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),o="bytes.NewBuffer(jsonBodyBytes)",e.line()}if(t.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${o})`),e.line()),n.headers){for(const[s,r]of Object.entries(n.headers))if(Array.isArray(r))for(const a of r)e.line(`req.Header.Add("${s}", "${a}")`);else e.line(`req.Header.Set("${s}", "${r}")`);e.line()}if(n.cookies){for(const[s,r]of Object.entries(n.cookies))if(Array.isArray(r))for(const a of r)e.line(`req.AddCookie(&http.Cookie{Name: "${s}", Value: "${a}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${s}", Value: "${r}"})`);e.line()}return t.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),t.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},Ee={default:!0,language:"javascript",client:"fetch",generate(t,n){const e=new u({indent:t.indent||" ",join:t.join||` -`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?e.line(`"${i}": "${o.join(", ")}",`):e.line(`"${i}": "${o}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.indent(),Se(n.body,e),e.append(",")),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}};function Se(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}};function Le(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),t.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.indent(),qe(n.body,e),e.append(");")),e.line("req.end();"),e.output()}};function qe(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}};function Ie(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`$headers[] = "${i}: ${s}";`)):e.line(`$headers[] = "${i}: ${o}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[i,o]of Object.entries(n.cookies))e.line(`$cookies[] = "${i}=${o}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),z(n.body,e),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),t.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}};function z(t,n){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(e=>JSON.stringify(e)).join(", ")+"]");else{n.line("{"),n.indent();const e=Object.entries(t);e.forEach(([i,o],s)=>{Array.isArray(o)?n.line(`"${i}": [${o.map(r=>JSON.stringify(r)).join(", ")}]`):typeof o=="object"&&o!==null?(n.line(`"${i}": {`),n.indent(),z(o,n),n.outdent(),n.line("}")):n.line(`"${i}": ${JSON.stringify(o)}`),srequest("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`"${i}" => "${s}",`)):e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[i,o]of Object.entries(n.cookies))e.line(`"${i}" => "${o}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => {'),e.indent(),Z(n.body,e,!0),e.outdent(),e.line("}"),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}};function Z(t,n,e=!1){if(typeof t=="object"&&t!==null)if(Array.isArray(t))n.line("["+t.map(i=>JSON.stringify(i)).join(", ")+"]");else{e||(n.line("{"),n.indent());const i=Object.entries(t);i.forEach(([o,s],r)=>{Array.isArray(s)?n.line(`"${o}": [${s.map(a=>JSON.stringify(a)).join(", ")}]`):typeof s=="object"&&s!==null?(n.line(`"${o}": {`),n.indent(),Z(s,n,!0),n.outdent(),n.line("}")):n.line(`"${o}": ${JSON.stringify(s)}`),r0,r=n.cookies&&Object.keys(n.cookies).length>0;let a=[];e.line("import http.client"),e.line("import json"),e.line();const d=new URL(n.url);if(e.line(`conn = http.client.HTTPSConnection("${d.hostname}", ${d.port||(d.protocol==="https:"?443:80)})`),e.line(),o&&(a.push("payload"),e.line("payload = "),e.indent(),Ne(n.body,e),e.line()),s){a.push("headers"),e.line("headers = {"),e.indent();for(const[h,$]of Object.entries(n.headers))Array.isArray($)?e.line(`"${h}": "${$.join(", ")}",`):e.line(`"${h}": "${$}",`);e.outdent(),e.line("}"),e.line()}if(r){a.push("cookies"),e.line("cookies = {"),e.indent();for(const[h,$]of Object.entries(n.cookies))e.line(`"${h}": "${$}",`);e.outdent(),e.line("}"),e.line()}return e.line(`conn.request("${i}", "${d.pathname+d.search}"`+(a.length>0?`, ${a.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}};function Ne(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0,r=n.cookies&&Object.keys(n.cookies).length>0;let a=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),s){a.push("headers=headers"),e.line("headers = {"),e.indent();for(const[d,h]of Object.entries(n.headers))Array.isArray(h)?e.line(`"${d}": "${h.join(", ")}",`):e.line(`"${d}": "${h}",`);e.outdent(),e.line("}")}if(r){a.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[d,h]of Object.entries(n.cookies))e.line(`"${d}": "${h}",`);e.outdent(),e.line("}")}return o&&(a.push("data=data"),e.line("data = "),e.indent(),Ge(n.body,e)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(a.length>0?`, ${a.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}};function Ge(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i0)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`request["${i}"] = "${s}"`)):e.line(`request["${i}"] = "${o}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[i,o]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("request.body = "),e.indent(),xe(n.body,e)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function xe(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.line(`req.headers["${i}"] = "${s}"`)):e.line(`req.headers["${i}"] = "${o}"`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${i}=${o}"`);return n.body&&(e.line("req.body = "),e.indent(),Ye(n.body,e)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}};function Ye(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;i Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`.header("${i}", "${s}")`)):e.line(`.header("${i}", "${o}")`);if(n.cookies)for(const[i,o]of Object.entries(n.cookies))Array.isArray(o)?o.forEach(s=>e.line(`.cookie("${i}", "${s}")`)):e.line(`.cookie("${i}", "${o}")`);return n.body&&(e.line(".body("),e.indent(),ze(n.body,e),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),t.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}};function ze(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;iArray.isArray(d)?d.map(h=>`${a}=${h}`):`${a}=${d}`).join("; ");e.line(`-b "${r}" \\`),e.outdent()}if(n.body){const r=((o=n.headers)==null?void 0:o["content-type"])||((s=n.headers)==null?void 0:s["Content-Type"])||"application/json";if(e.indent(),r.includes("application/json"))e.line("-d $'"),e.indent(),We(n.body,e),e.append("'"),e.outdent();else if(r==="application/x-www-form-urlencoded"){const a=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${a}'`)}else if(typeof n.body=="string"){const a=n.body.replace(/'/g,"'\\''");e.line(`-d '${a}'`)}e.outdent()}let i=e.output();return i=i.replace(/\\\s*$/,"").trim(),i}};function We(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`),i="\\";for(let o=0;o0){for(const[i,o]of Object.entries(n.headers))Array.isArray(o)?o.forEach(s=>e.line(`request.addValue("${s}", forHTTPHeaderField: "${i}")`)):e.line(`request.addValue("${o}", forHTTPHeaderField: "${i}")`);e.line()}if(n.cookies&&Object.keys(n.cookies).length>0){for(const[i,o]of Object.entries(n.cookies))e.line(`request.addValue("${i}=${o}", forHTTPHeaderField: "Cookie")`);e.line()}return n.body&&(e.line("let body = "),e.indent(),Ke(n.body,e),e.line("request.httpBody = body"),e.line()),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};function Ke(t,n){const e=JSON.stringify(t,null,n.getIndent()).split(` -`);for(let i=0;ie.language);return t.filter((e,i)=>t.indexOf(e)===i)},clients(){return this.codes.filter(t=>t.language===this.internalLanguage).map(t=>t.client)}},methods:{code(){if(!this.highlighter)return;const{code:t,error:n}=b({language:this.internalLanguage,client:this.internalClient,config:this.config,http:this.http});if(n){this.output=n;return}this.output=this.highlighter.codeToHtml(t,{lang:this.internalLanguage,theme:this.theme})},toggleModal(){this.openModal=!this.openModal,this.openModal?document.addEventListener("click",this.clickModalBg):document.removeEventListener("click",this.clickModalBg)},clickModalBg(t){t.target.classList.contains("modal")&&this.toggleModal()},clickModalLang(t){this.internalLanguage=t,this.$emit("update:language",t),this.toggleModal(),this.code()},clickModalClient(t){this.internalClient=t,this.$emit("update:client",t),this.toggleModal(),this.code()}}}),tn={class:"gimmehttp"},on=["src"],sn=["innerHTML"],rn={class:"content"},ln={class:"langs"},an=["onClick"],dn=["alt","src"],cn=["onClick"];function un(t,n,e,i,o,s){return g(),p("div",tn,[l("div",{onClick:n[0]||(n[0]=r=>t.toggleModal()),class:"selector"},[l("img",{src:t.logoUrl+t.internalLanguage+".svg",class:"select"},null,8,on),n[2]||(n[2]=l("svg",{class:"arrows",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},[l("path",{d:"m3.707 2.293 5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L6.586 8 2.293 3.707a1 1 0 0 1 1.414-1.414m5 0 5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L11.586 8 7.293 3.707a1 1 0 0 1 1.414-1.414"})],-1))]),l("div",{class:E("output language-"+t.internalLanguage+(t.openModal?" modalOpen":"")),innerHTML:t.output},null,10,sn),ee(l("div",{class:"modal",onClick:n[1]||(n[1]=(...r)=>t.clickModalBg&&t.clickModalBg(...r))},[l("div",rn,[l("div",ln,[(g(!0),p(O,null,w(t.languages,r=>(g(),p("div",{class:E(["lang",{selected:t.internalLanguage===r}]),key:r,onClick:a=>t.clickModalLang(r)},[l("img",{alt:r,src:t.logoUrl+r+".svg"},null,8,dn)],10,an))),128))]),n[3]||(n[3]=l("div",{class:"separator"},null,-1)),f(te,{name:"fade",tag:"div",class:"clients"},{default:k(()=>[(g(!0),p(O,null,w(t.clients,r=>(g(),p("div",{class:"client",key:r,onClick:a=>t.clickModalClient(r)},C(r),9,cn))),128))]),_:1})])],512),[[ne,t.openModal]])])}const gn=A(nn,[["render",un]]),pn="https://raw.githubusercontent.com/brianvoe/gimmeHTTP/refs/heads/master/src/gimmeHTTP/logos/",hn=y({name:"Intro",components:{VueShiki:gn},data(){const t=Q().map(o=>o.language),n=t[Math.floor(Math.random()*t.length)],e={method:"GET",url:"https://example.com",headers:{"Content-Type":"application/json"}},i={method:"POST",url:"https://example.com",headers:{"Content-Type":"application/json"},body:{first_name:"Billy",email:"billyboy@gmail.com",userId:8675309}};return{logoUrl:pn,language:n,languages:Ae(),http:i,https:{simple_get:e,simple_post:i}}},methods:{setExample(t){this.http=this.https[t]}}}),fn={class:"section intro"},mn={class:"available_languages"},yn={class:"langs"},An=["onClick"],$n=["src"],kn={class:"select_example"};function jn(t,n,e,i,o,s){const r=m("VueShiki");return g(),p("div",fn,[n[4]||(n[4]=l("p",null,"Easily output http request in many languages",-1)),l("div",mn,[n[2]||(n[2]=l("div",{class:"text"},[v("Available Languages: "),l("small",null,"click to see")],-1)),n[3]||(n[3]=l("div",{class:"separator"},null,-1)),l("div",yn,[(g(!0),p(O,null,w(t.languages,a=>(g(),p("div",{class:"lang",key:a,onClick:d=>t.language=a},[l("img",{src:t.logoUrl+a+".svg"},null,8,$n)],8,An))),128))])]),l("div",kn,[l("button",{onClick:n[0]||(n[0]=a=>t.setExample("simple_get"))},"Simple GET"),l("button",{onClick:n[1]||(n[1]=a=>t.setExample("simple_post"))},"Simple POST")]),f(r,{language:t.language,http:t.http},null,8,["language","http"])])}const vn=A(hn,[["render",jn]]),Cn=y({name:"ShikiStyle",props:{language:{type:String,default:"javascript"}},data(){return{highlighter:null,highlightedCode:""}},async created(){const t=await R({themes:[L,U],langs:[B,_,q,H,I,M,P,J,N,D,G,V,x],langAlias:{ts:"typescript",node:"javascript",nodejs:"javascript"},engine:F(Y)});this.highlighter=t,this.highlightCode(),this.$watch(()=>{var n,e,i,o;return(o=(i=(e=(n=this.$slots).default)==null?void 0:e.call(n)[0])==null?void 0:i.children)==null?void 0:o.toString()},(n,e)=>{n!==e&&this.highlightCode()})},unmounted(){this.highlighter&&this.highlighter.dispose()},watch:{language(){this.highlightCode()}},methods:{highlightCode(){var n,e,i,o;if(!this.highlighter)return;let t=((o=(i=(e=(n=this.$slots).default)==null?void 0:e.call(n)[0])==null?void 0:i.children)==null?void 0:o.toString())||"";t=t.replace(/^
/,"").replace(/<\/pre>$/,""),t=this.normalizeIndentation(t),this.highlightedCode=this.highlighter.codeToHtml(t,{lang:this.language,theme:"github-dark"})},normalizeIndentation(t){const n=t.split(`
-`),e=Math.min(...n.filter(i=>i.trim()).map(i=>i.match(/^ */)[0].length));return n.map(i=>i.slice(e)).join(`
-`)}}}),On=["innerHTML"];function wn(t,n,e,i,o,s){return g(),p("div",{class:"shiki-style",innerHTML:t.highlightedCode},null,8,On)}const T=A(Cn,[["render",wn]]),bn=y({components:{ShikiStyle:T},name:"Install"}),Tn={class:"section install"};function En(t,n,e,i,o,s){const r=m("ShikiStyle");return g(),p("div",Tn,[n[1]||(n[1]=l("a",{href:"#install"},[l("h2",{id:"install"},"Installation")],-1)),f(r,{language:"shell"},{default:k(()=>n[0]||(n[0]=[l("pre",null,`        npm i gimmehttp
-      `,-1)])),_:1})])}const Sn=A(bn,[["render",En]]),Rn=y({components:{ShikiStyle:T},name:"Settings"}),Ln={class:"section settings"};function Un(t,n,e,i,o,s){const r=m("ShikiStyle");return g(),p("div",Ln,[n[1]||(n[1]=l("a",{href:"#settings"},[l("h2",{id:"settings"},"Settings")],-1)),n[2]||(n[2]=l("div",{class:"alert info"},[l("strong",null,"Info:"),v(" The only required fields are language, http.method and http.url")],-1)),f(r,{language:"javascript"},{default:k(()=>n[0]||(n[0]=[l("pre",null,`        const settings = {
+import{d as y,o as c,e as u,f as ne,g as w,t as C,j as a,k as O,l as te,v as ie,F as $,m as T,q as g,x as b,T as se,y as m,z as oe}from"./@vue.js";import{c as re,a as le}from"./vue-router.js";import{c as H,g as M,a as q,b as P,d as B,e as I,j as D,f as G,p as N,h as V,r as F,i as J,k as x,s as Y,l as Q,t as z,m as W,n as Z}from"./@shikijs.js";import"./hast-util-to-html.js";import"./html-void-elements.js";import"./property-information.js";import"./zwitch.js";import"./stringify-entities.js";import"./character-entities-legacy.js";import"./character-entities-html4.js";import"./ccount.js";import"./comma-separated-tokens.js";import"./space-separated-tokens.js";import"./hast-util-whitespace.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function e(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(i){if(i.ep)return;i.ep=!0;const o=e(i);fetch(i.href,o)}})();const ae=re({history:le(),linkActiveClass:"active",routes:[]}),de=y({name:"Header",data(){return{}}}),ce="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='988.301'%20height='415.4'%3e%3cstyle%3e%20.logo-color%20{%20fill:%20%23f1602c;%20}%20%3c/style%3e%3cpath%20class='logo-color'%20d='M878.614%20105.695v174.273l-49.036-45.165-92.912%2088.911V415.4h30.97v-76.2l61.942-60.651%2027.163%2023.292-36.132%2036.132%2021.873%2021.873%2067.103-67.102V136.665h47.746v194.92l-83.167%2083.167%2043.873-.127%2070.264-70.2v-238.73z'%20/%3e%3cpath%20class='logo-color'%20d='M771.846%20247.41h-35.225v-24.299h25.285l16.567-18.776v-50.753l29.822-29.821-29.822-29.822V43.186L761.906%2024.41H736.62V.11L771.846%200l33.136%2033.135v49.759l32.03%2031.975v17.617l-32.03%2032.031v49.758z'%20/%3e%3cpath%20class='logo-color'%20d='M666.21%20147.087v49.687h-28.687V58.587h79.722l19.282%2020.244.035%2048.243-20.025%2020.005zm47.702-33.39.056-10.891.002-9.874-9.997-10.345H666.21v40.687l37.749.022z'%20/%3e%3cpath%20class='logo-color'%20d='M619.991%2058.587v24.469h-41.343v113.718h-29.063V83.056h-41.531v-24.47ZM490.71%2058.587v24.469h-41.344v113.718h-29.062V83.056h-41.531v-24.47z'%20/%3e%3cpath%20class='logo-color'%20d='M334.054%20196.774v-61.687h-54v61.687H251.46V58.587h28.594v52.687h54V58.587h28.687v138.187Z'%20/%3e%3cpath%20class='logo-color'%20d='M216.455%20247.41h35.225v-24.299h-25.285l-16.567-18.776v-50.753l-29.822-29.821%2029.822-29.822V43.186l16.567-18.776h25.285V.11L216.455%200l-33.136%2033.135v49.759l-32.03%2031.975v17.617l32.03%2032.031v49.758z'%20/%3e%3cpath%20class='logo-color'%20d='M109.687%20105.695v174.273l49.037-45.165%2092.911%2088.911V415.4h-30.97v-76.2l-61.941-60.651-27.164%2023.292%2036.132%2036.132-21.873%2021.873-67.102-67.102V136.665H30.97v194.92l83.167%2083.167-43.873-.127L0%20344.425v-238.73z'%20/%3e%3c/svg%3e",ue="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyRTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyRjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJDOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJEOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FYrpWAAABrNJREFUeNrkW2lsVFUUvjMWirYUkS5BXApUa2vd6gL+wAWjoP5RiW2EUBajAiqSuPADQ0w1UUQTrcFAUUSJEKriEuMWFKuJIElFSS24YNpQK6WoBbuAktbva880M8O8vnfevJm+CSf5cme599xzvnfffffce17AJFjycnLzUVwDXAgUAucBY4BMIEOqdQIdwJ/Az4J64OvWtoONibQvkACHgyiuBe4CbgLOjVNlE/AZsAmoBSE9viQAjueieBCYC5yVoAvWDKwHqkBEmy8IgON09lHgXmCESY4cBaqBlSCieUgIgOPDUCwBngBOM0MjXdL/CyDiv6QRAOcvR7EBKDL+kD3AbJBQl1AC4DjrLwaeBYYbf8m/ciu+BCJ6PScAzp+K4nXgTuNveQuYAxK6PSMAzo9C8TFwtUkN2Q7cDBIOx02AOP8FUGpSSzgf3GBHQsDGec7unwOTTWrKDiGhS02ATHjvALeb1JZ3gRlWE+MpVq0yMzIekRk/1YWP6o7Ors5vHI8AXH1Odl8BaTbKrwd4j10MTAduS8JqkKvA94BPgN0A56htNm2OMyDDKNhuSwCcT5dIrMBG6S4oLI1qezqKBcBjwGiPHW8HVgCr0W97VL/fobjMpv2vQAnaHgv/MdYVXurAeSNPhggRw56BQatRVgL3A0H5+xDwI8Dw9g/5Hlq+clmdDYwF8iV0zpb/GP2tApZHOx4m2xwQUCC+VVqOABg+AUUDkO6AgHkwaL2DJXORxPVNylUnw+gpXObaLXFRlxHoaw7U8uoXQ99vViNgqUPnKQfsKojhdW7GuxDW5JUtIuni432hH4JhLJ7Dq6qwcZiPZnpNXDJPfI0kQEJbjVM5PiIgW3nhlkQQILH9LGWnV/iIAK0ts8TngREwDchVKrnKRwRobckVnwcIKFcq4ONrkY8IWBT2SHUq5eEE3Khs/CRm6Z1+8V5sqVQ26/M5gHuhSJ79TqUFmIhOj/ppwQ8/Rshqb5yiWXFQFhsaWeU352UU0KaXlc2mBI1+Y3OzjyO/Gm2kSAIKFQ2awfQ+v3oP23gL/K5oUhh0GPiEZG8KxP97FHULgsqwtTUFCDioqHsGCRipaHA8BQjQrAcyg4roj5KVAgSMUtRNDyqVj0wBAlQ2koBuRf3xKUBAvqJuN1eCrYpAiHNAltNjpyFYDfL47oix38wdmDA5AvYr+kjzWRgcLVcqnKfsJwGNyk5u9TEBtyjrNwaVgRClTPKA/Db8aVOZslkDG2nD2vEuOkqGlLmYpHcGJLlJu8LjtvJFgx06Jvnq8xC33gUBeUE4waWjduua5wdVPrr6VS6cr6PvoXv5Ixed3g3mH/fB1V9OW1w07fM5IEouUEZR4bIWWJzsTRJ55r8I3ONSRRFs3hsIU8hkgkkulf0CPAx8qElQcuk4beYp9Epgoks138LOvqSPgfyAzIwMZlnFSobgIegc4H3gH6AkxmKDub9Mjb0DeoYDrZ1dne0eO14AvfPx8RXgAYaycahbBvt+GLgFpIM0md3PjqrMTMxpYKxB6p1v+s/n7bbSuMCqldmZyc+fRh9ND+IsAxrmG3C3qtj0J1uP84hLrnwnwJbjEQRIxzw0XB2jER93C9Bog9TjsRgzLpzuJr0BzHV6e8gwf9XoziqdCv1YE/oSTQBHwfem/3w+5syPxuukLtfdO0zk+WIs+YuPKLQ7ohzyWTIix3joPPMTLg1d/Yg5gIL7ogf32U/4WGGhYDr+34J6bUALPpPA62w6XYMOP9BaCv3HoD/PeJubODN6U/eEq4cKTIurttpBAZ4L+87TmKdtOt0ah8FbPXS+WnyLEKskqUy5FaweM5dA2e6w+pNkZuajhfMD3/zYBfDKb3Y6+cWwgytOL7bh98nQ73BEgHReIvd4Roy/a6Cs3CRYJOnq7zjV8HWcybC33mpLLKZIA84FPRYhcSokUNL2Civnjd0MjoZbUCy0+PtNkDDD5wQsFB8sxWm2+GJZd8eSt4HnZXnZ66Nb4CHYYxuxat4XmI1inbHeczskq77DMrK4z8AgK3+Q/L5EEMBn/PzQos0zAsQgvg5XY3TpNKOTSAD3NsrQX63TBqq9PVHM9NgvfXi/06ZSjfNqAoQEHj9Pled+pw8cpw2co6aKbSoJxDlJnYniKdP/sqSVrrEw7IBL/TnG+rSXEy7fYVoG/S1uffDkzVEYypB1qewJRCdb5rp9yxN6mQDZFmOS2wisCIXo8Yin7w7LiKiQEcFYfhOMnBmnzo1CLIO09Qyt47niJxDQ29trTmY56Qn4X4ABAFR7IoDmVT5NAAAAAElFTkSuQmCC",he="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFyzg3////IltC9QAAAAFiS0dEAf8CLd4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkSURBVEjHY2AYBYMV/IeDUQG4AJgeFRgVGBUYFSBNYBQMPgAARjtdvxo6xaMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDUtMzBUMjM6MTA6NDQtMDc6MDCm4GvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTEyLTA2VDEyOjIwOjEyLTA4OjAwpIGEmQAAADJ0RVh0UE5HOmNIUk0AY2h1bmsgd2FzIGZvdW5kIChzZWUgQ2hyb21hdGljaXR5LCBhYm92ZSkH0UjaAAAAKXRFWHRQTkc6Z0FNQQBnYW1tYT0wLjQ1NDU1IChTZWUgR2FtbWEsIGFib3ZlKRISLKcAAAAUdEVYdFBORzpJSERSLmJpdF9kZXB0aAA4KYV+UAAAABV0RVh0UE5HOklIRFIuY29sb3JfdHlwZQA2BkqnKwAAABt0RVh0UE5HOklIRFIuaW50ZXJsYWNlX21ldGhvZAAw+zsHjAAAABx0RVh0UE5HOklIRFIud2lkdGgsaGVpZ2h0ADE2LCAxNjjVBg0AAAAodEVYdFBORzpwSFlzAHhfcmVzPTI4MzUsIHlfcmVzPTI4MzUsIHVuaXRzPTGCKXI+AAAAKHRFWHRQTkc6c1JHQgBpbnRlbnQ9MCAoU2VlIFJlbmRlcmluZyBpbnRlbnQp8hEU9QAAAABJRU5ErkJggg==",A=(t,n)=>{const e=t.__vccOpts||t;for(const[s,i]of n)e[s]=i;return e},pe={class:"header"};function ge(t,n,e,s,i,o){return c(),u("div",pe,n[0]||(n[0]=[ne('

GimmeHTTP

',1)]))}const fe=A(de,[["render",ge]]),me=y({name:"Footer",data(){return{year:new Date().getFullYear()}}}),ye={class:"section footer"};function Ae(t,n,e,s,i,o){return c(),u("footer",ye,[w(" © "+C(t.year)+" ",1),n[0]||(n[0]=a("a",{href:"http://webiswhatido.com",target:"_blank"},"Brian Voelker",-1)),n[1]||(n[1]=w(". ")),n[2]||(n[2]=a("br",null,null,-1)),n[3]||(n[3]=w(" GimmeHTTP is under the MIT license. "))])}const be=A(me,[["render",Ae]]),k=[];function X(){return k}function U(){return k.map(t=>t.language).filter((t,n,e)=>e.indexOf(t)===n)}function ke(t,n){if(t===""||t===void 0)return new Error("Language is required");const e=k.filter(o=>o.language.toLowerCase()===t.toLowerCase());if(e.length===0)return new Error("No client found for "+t);const s=e.find(o=>o.default)||e[0];if(!n)return s;const i=e.find(o=>o.client.toLowerCase()===n.toLowerCase());return i||s}function h(t){if(!t)return new Error("Client is required");if(Array.isArray(t)){t.forEach(s=>h(s));return}const n=k.filter(s=>s.language.toLowerCase()===t.language.toLowerCase()),e=n.find(s=>s.client.toLowerCase()===t.client.toLowerCase());if(t.default===void 0&&(t.default=n.length===0),e){const s=k.indexOf(t);k[s]=t;return}k.push(t)}function R(t){let n=je(t);if(n)return{error:n.message};t.config=$e(t.config);const e=ke(t.language,t.client);if(e instanceof Error)return{error:e.message};const s=e.generate(t.config,t.http);return{language:e.language,client:e.client,code:s}}function je(t){if(!t)return new Error("Request is required");if(!t.language)return new Error("language is required");if(!t.http)return new Error("http is required");if(!t.http.method)return new Error("http.method is required");if(!t.http.url)return new Error("http.url is required")}function $e(t){return t=t||{},t.indent||(t.indent=" "),t.join||(t.join=` +`),t.handleErrors===void 0&&(t.handleErrors=!1),t}class p{constructor(n={}){this.code=[],this.currentDepth=0,this.jsonConfig={objOpen:"{",objClose:"}",arrOpen:"[",arrClose:"]",separator:": ",endComma:!1},this.indentChar=n.indent||" ",this.lineJoin=n.join||` +`,this.jsonConfig=n.json||this.jsonConfig}getIndent(){return this.indentChar}getJoin(){return this.lineJoin}line(n=""){this.code.push({depth:n===""?0:this.currentDepth,line:n})}append(n){this.code.length>0?this.code[this.code.length-1].line+=n:this.line(n)}json(n,e=!1){if(!n){this.append("null");return}switch(typeof n){case"object":if(Array.isArray(n))this.append(this.jsonConfig.arrOpen),this.indent(),n.forEach((s,i)=>{this.json(s,typeof n=="object"||Array.isArray(n)),(i{this.line(`"${i}"`+this.jsonConfig.separator),this.json(n[i],typeof i=="object"||Array.isArray(i)),(o0&&(this.currentDepth-=1)}output(){return this.code.map(({depth:n,line:e})=>`${this.indentChar.repeat(n)}${e}`).join(this.lineJoin).trimEnd()}}function K(t){let n,e,s,i,o;try{const r=new URL(t);n=r.hostname,e=r.pathname,o=r.search,s=r.port?parseInt(r.port):r.protocol==="https:"?443:80,i=r.protocol}catch{const l=t.split("/");n=l[0];const d="/"+l.slice(1).join("/"),[f,j]=d.split("?");e=f,o=j?"?"+j:"",s=80,i="http:"}return e.startsWith("/")||(e="/"+e),{hostname:n,path:e,port:s,protocol:i,params:o}}function Ce(t,n){return t.toUpperCase()==="POST"&&n!==void 0&&Object.keys(n).some(e=>e.toLowerCase()==="content-type"&&n[e].toLowerCase()==="application/json")}const ve={default:!0,language:"c",client:"libcurl",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("#include "),e.line("#include "),e.line(),e.line("int main(void) {"),e.indent(),e.line("CURL *curl;"),e.line("CURLcode res;"),e.line(),e.line("curl_global_init(CURL_GLOBAL_DEFAULT);"),e.line("curl = curl_easy_init();"),e.line("if(curl) {"),e.indent(),e.line(`curl_easy_setopt(curl, CURLOPT_URL, "${n.url}");`),n.method.toUpperCase()==="POST"?e.line("curl_easy_setopt(curl, CURLOPT_POST, 1L);"):n.method.toUpperCase()!=="GET"&&e.line(`curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "${n.method.toUpperCase()}");`),n.headers&&Object.keys(n.headers).length>0){e.line(),e.line("struct curl_slist *headers = NULL;");for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`headers = curl_slist_append(headers, "${s}: ${o}");`)):e.line(`headers = curl_slist_append(headers, "${s}: ${i}");`);e.line("curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);")}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const s=Object.entries(n.cookies).map(([i,o])=>`${i}=${o}`).join("; ");e.line(`curl_easy_setopt(curl, CURLOPT_COOKIE, "${s}");`)}return n.body&&(e.line(),e.line('curl_easy_setopt(curl, CURLOPT_POSTFIELDS, R"('),e.json(n.body),e.append(')");')),e.line(),e.line("res = curl_easy_perform(curl);"),e.line("if(res != CURLE_OK)"),e.indent(),e.line('fprintf(stderr, "failed: %s", curl_easy_strerror(res));'),e.outdent(),n.headers&&Object.keys(n.headers).length>0&&e.line("curl_slist_free_all(headers);"),e.line("curl_easy_cleanup(curl);"),e.outdent(),e.line("}"),e.line(),e.line("curl_global_cleanup();"),e.line("return 0;"),e.outdent(),e.line("}"),e.output()}},we={default:!0,language:"csharp",client:"http",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("using System;"),e.line("using System.Net.Http;"),e.line("using System.Threading.Tasks;"),e.line(),e.line("namespace HttpClientExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static async Task Main(string[] args)"),e.line("{"),e.indent(),e.line("using (HttpClient client = new HttpClient())"),e.line("{"),e.indent(),e.line(`HttpRequestMessage request = new HttpRequestMessage(HttpMethod.${n.method.toUpperCase()}, "${n.url}");`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`request.Headers.Add("${s}", "${o}");`)):e.line(`request.Headers.Add("${s}", "${i}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const s=Object.entries(n.cookies).map(([i,o])=>`${i}=${o}`).join("; ");e.line(`request.Headers.Add("Cookie", "${s}");`)}return n.body&&(e.line(),e.line("request.Content = new StringContent("),e.json(n.body),e.append(', System.Text.Encoding.UTF8, "application/json");')),e.line(),e.line("HttpResponseMessage response = await client.SendAsync(request);"),e.line("response.EnsureSuccessStatusCode();"),e.line("string responseBody = await response.Content.ReadAsStringAsync();"),e.line("Console.WriteLine(responseBody);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},Oe={language:"csharp",client:"restsharp",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("using RestSharp;"),e.line(),e.line("namespace RestSharpExample"),e.line("{"),e.indent(),e.line("class Program"),e.line("{"),e.indent(),e.line("static void Main(string[] args)"),e.line("{"),e.indent(),e.line(`var client = new RestClient("${n.url}");`),e.line(`var request = new RestRequest(Method.${n.method.toUpperCase()});`),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`request.AddHeader("${s}", "${o}");`)):e.line(`request.AddHeader("${s}", "${i}");`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();const s=Object.entries(n.cookies).map(([i,o])=>`${i}=${o}`).join("; ");e.line(`request.AddHeader("Cookie", "${s}");`)}return n.body&&(e.line(),e.line("request.AddJsonBody("),e.json(n.body),e.append(");")),e.line(),e.line("IRestResponse response = client.Execute(request);"),e.line("Console.WriteLine(response.Content);"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.output()}},Te={default:!0,language:"go",client:"http",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`}),s=Ce(n.method,n.headers)&&n.body;e.line("package main"),e.line(),e.line("import ("),e.indent(),e.line('"fmt"'),e.line('"net/http"'),e.line('"io"'),s&&(e.line('"bytes"'),e.line('"encoding/json"')),t.handleErrors&&e.line('"log"'),e.outdent(),e.line(")"),e.line(),e.line("func main() {"),e.indent(),e.line(`url := "${n.url}"`),e.line();let i="nil";if(s&&(e.line("jsonBodyMap := map[string]any"),e.json(n.body),t.handleErrors?(e.line("jsonBodyBytes, err := json.Marshal(jsonBodyMap)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("jsonBodyBytes, _ := json.Marshal(jsonBodyMap)"),i="bytes.NewBuffer(jsonBodyBytes)",e.line()),t.handleErrors?(e.line(`req, err := http.NewRequest("${n.method.toUpperCase()}", url, ${i})`),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}"),e.line()):(e.line(`req, _ := http.NewRequest("${n.method.toUpperCase()}", url, ${i})`),e.line()),n.headers){for(const[o,r]of Object.entries(n.headers))if(Array.isArray(r))for(const l of r)e.line(`req.Header.Add("${o}", "${l}")`);else e.line(`req.Header.Set("${o}", "${r}")`);e.line()}if(n.cookies){for(const[o,r]of Object.entries(n.cookies))if(Array.isArray(r))for(const l of r)e.line(`req.AddCookie(&http.Cookie{Name: "${o}", Value: "${l}"})`);else e.line(`req.AddCookie(&http.Cookie{Name: "${o}", Value: "${r}"})`);e.line()}return t.handleErrors?(e.line("resp, err := http.DefaultClient.Do(req)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("resp, _ := http.DefaultClient.Do(req)"),e.line("defer resp.Body.Close()"),e.line(),t.handleErrors?(e.line("body, err := io.ReadAll(resp.Body)"),e.line("if err != nil {"),e.indent(),e.line("log.Fatal(err)"),e.outdent(),e.line("}")):e.line("body, _ := io.ReadAll(resp.Body)"),e.line(),e.line("fmt.Println(string(body))"),e.outdent(),e.line("}"),e.output()}},Ee={default:!0,language:"javascript",client:"fetch",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line('fetch("'+n.url+'", {'),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?e.line(`"${s}": "${i.join(", ")}",`):e.line(`"${s}": "${i}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("Network response was not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("There was a problem with the fetch operation:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data));")),e.output()}},Re={language:"javascript",client:"axios",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("axios({"),e.indent(),e.line(`method: "${n.method.toLowerCase()}",`),e.line(`url: "${n.url}",`),n.headers){e.line("headers: {"),e.indent();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?e.line(`"${s}": "${i.join(", ")}",`):e.line(`"${s}": "${i}",`);e.outdent(),e.line("},")}if(n.cookies){e.line("cookies: {"),e.indent();for(const[s,i]of Object.entries(n.cookies))e.line(`"${s}": "${i}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body)),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("console.log(response.data);"),e.outdent(),e.line("})"),e.line(".catch(error => {"),e.indent(),e.line('console.error("There was an error:", error);'),e.outdent(),e.line("});")):e.line(".then(response => console.log(response.data));"),e.output()}},Le={language:"javascript",client:"jquery",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("$.ajax({"),e.indent(),e.line(`url: "${n.url}",`),e.line(`type: "${n.method.toUpperCase()}",`),n.headers){e.line("headers: {"),e.indent();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?e.line(`"${s}": "${i.join(", ")}",`):e.line(`"${s}": "${i}",`);e.outdent(),e.line("},")}return n.body&&(e.line("data: "),e.json(n.body),e.append(","),e.line('contentType: "application/json",')),e.line("success: function(data) {"),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("},"),t.handleErrors&&(e.line("error: function(jqXHR, textStatus, errorThrown) {"),e.indent(),e.line('console.error("Request failed:", textStatus, errorThrown);'),e.outdent(),e.line("},")),e.outdent(),e.line("});"),e.output()}},Se={language:"node",client:"http",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});e.line('const http = require("http");'),e.line();const{hostname:s,path:i,port:o,protocol:r}=K(n.url);if(e.line("const options = {"),e.indent(),e.line(`method: "${n.method.toUpperCase()}",`),e.line(`hostname: "${s}",`),e.line(`path: "${i}",`),n.headers){e.line("headers: {"),e.indent();for(const[l,d]of Object.entries(n.headers))Array.isArray(d)?e.line(`"${l}": "${d.join(", ")}",`):e.line(`"${l}": "${d}",`);e.outdent(),e.line("},")}return e.outdent(),e.line("};"),e.line(),e.line("const req = http.request(options, (res) => {"),e.indent(),e.line('let data = "";'),e.line(),e.line('res.on("data", (chunk) => {'),e.indent(),e.line("data += chunk;"),e.outdent(),e.line("});"),e.line(),e.line('res.on("end", () => {'),e.indent(),e.line("console.log(data);"),e.outdent(),e.line("});"),e.outdent(),e.line("});"),t.handleErrors&&(e.line(),e.line('req.on("error", (error) => {'),e.indent(),e.line("console.error(error);"),e.outdent(),e.line("});")),e.line(),n.body&&(e.line("req.write("),e.json(n.body),e.append(");")),e.line("req.end();"),e.output()}},Ue={language:"node",client:"fetch",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line('const fetch = require("node-fetch");'),e.line(),e.line('fetch("'+n.url+'", {'),e.indent(),e.line('method: "'+n.method.toUpperCase()+'",'),n.headers){e.line("headers: {"),e.indent();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?e.line(`"${s}": "${i.join(", ")}",`):e.line(`"${s}": "${i}",`);e.outdent(),e.line("},")}return n.body&&(e.line("body: "),e.json(n.body)),e.outdent(),e.line("})"),t.handleErrors?(e.line(".then(response => {"),e.indent(),e.line("if (!response.ok) {"),e.indent(),e.line('throw new Error("response not ok");'),e.outdent(),e.line("}"),e.line("return response.text();"),e.outdent(),e.line("})"),e.line(".then(data => console.log(data))"),e.line('.catch(error => console.error("error:", error));')):(e.line(".then(response => response.text())"),e.line(".then(data => console.log(data))")),e.output()}},_e={default:!0,language:"php",client:"curl",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("e.line(`$headers[] = "${s}: ${o}";`)):e.line(`$headers[] = "${s}: ${i}";`);e.line("curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")}if(n.cookies){e.line(),e.line("$cookies = [];");for(const[s,i]of Object.entries(n.cookies))e.line(`$cookies[] = "${s}=${i}";`);e.line('curl_setopt($ch, CURLOPT_COOKIE, implode("; ", $cookies));')}return n.body&&(e.line(),e.line("curl_setopt($ch, CURLOPT_POSTFIELDS,"),e.line("<<<'JSON'"),e.line(),e.json(n.body),e.line("JSON"),e.line(");"),e.outdent()),e.line(),e.line("$response = curl_exec($ch);"),t.handleErrors&&(e.line("if (curl_errno($ch)) {"),e.indent(),e.line('echo "Error: " . curl_error($ch);'),e.outdent(),e.line("}")),e.line("curl_close($ch);"),e.line(),e.line("echo $response;"),e.output()}},He={language:"php",client:"guzzle",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`,json:{objOpen:"[",objClose:"]",arrOpen:"[",arrClose:"]",separator:" => ",endComma:!0}});if(e.line("request("),e.indent(),e.line('"'+n.method.toUpperCase()+'",'),e.line('"'+n.url+'",'),n.headers||n.cookies||n.body){if(e.line("["),n.headers){e.indent(),e.line('"headers" => ['),e.indent();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`"${s}" => "${o}",`)):e.line(`"${s}" => "${i}",`);e.outdent(),e.line("],"),e.outdent()}if(n.cookies){e.indent(),e.line('"cookies" => ['),e.indent();for(const[s,i]of Object.entries(n.cookies))e.line(`"${s}" => "${i}",`);e.outdent(),e.line("],"),e.outdent()}n.body&&(e.indent(),e.line('"json" => '),e.json(n.body),e.append(","),e.outdent()),e.line("],")}return e.outdent(),e.line(");"),e.line(),e.line("echo $response->getBody();"),e.output()}},Me={default:!0,language:"python",client:"http",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`}),s=n.method.toUpperCase(),i=s!=="GET"&&n.body,o=n.headers&&Object.keys(n.headers).length>0,r=n.cookies&&Object.keys(n.cookies).length>0;let l=[];e.line("import http.client"),e.line("import json"),e.line();const{hostname:d,path:f,port:j,protocol:S}=K(n.url);if(e.line(`conn = http.client.HTTPSConnection("${d}", ${j})`),o){e.line(),l.push("headers"),e.line("headers = {"),e.indent();for(const[E,v]of Object.entries(n.headers))Array.isArray(v)?e.line(`"${E}": "${v.join(", ")}",`):e.line(`"${E}": "${v}",`);e.outdent(),e.line("}")}if(r){e.line(),l.push("cookies"),e.line("cookies = {"),e.indent();for(const[E,v]of Object.entries(n.cookies))e.line(`"${E}": "${v}",`);e.outdent(),e.line("}")}return i&&(e.line(),l.push("payload"),e.line("payload = "),e.json(n.body)),e.line(),e.line(`conn.request("${s}", "${f}"`+(l.length>0?`, ${l.join(", ")}`:"")+")"),e.line("res = conn.getresponse()"),e.line("data = res.read()"),e.line(),e.line('print(data.decode("utf-8"))'),e.output()}},qe={language:"python",client:"requests",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`}),i=n.method.toUpperCase()!=="GET"&&n.body,o=n.headers&&Object.keys(n.headers).length>0,r=n.cookies&&Object.keys(n.cookies).length>0;let l=[];if(e.line("import requests"),e.line(),e.line('url = "'+n.url+'"'),o){e.line(),l.push("headers=headers"),e.line("headers = {"),e.indent();for(const[d,f]of Object.entries(n.headers))e.line(`"${d}": "${f}"`),Object.keys(n.headers).indexOf(d)!==Object.keys(n.headers).length-1&&e.append(",");e.outdent(),e.line("}")}if(r){e.line(),l.push("cookies=cookies"),e.line("cookies = {"),e.indent();for(const[d,f]of Object.entries(n.cookies))e.line(`"${d}": "${f}"`),Object.keys(n.cookies).indexOf(d)!==Object.keys(n.cookies).length-1&&e.append(",");e.outdent(),e.line("}")}return i&&(e.line(),l.push("data=data"),e.line("data = "),e.json(n.body)),e.line(),e.line("response = requests."+n.method.toLowerCase()+"(url"+(l.length>0?`, ${l.join(", ")}`:"")+")"),e.line("print(response.text)"),e.output()}},Pe={default:!0,language:"ruby",client:"nethttp",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line('require "net/http"'),e.line('require "uri"'),e.line(),e.line('uri = URI.parse("'+n.url+'")'),n.method.toUpperCase()==="GET"?e.line("request = Net::HTTP::Get.new(uri)"):n.method.toUpperCase()==="POST"?e.line("request = Net::HTTP::Post.new(uri)"):n.method.toUpperCase()==="PUT"?e.line("request = Net::HTTP::Put.new(uri)"):n.method.toUpperCase()==="DELETE"?e.line("request = Net::HTTP::Delete.new(uri)"):e.line('request = Net::HTTP::GenericRequest.new("'+n.method.toUpperCase()+'", uri.path, nil, nil)'),n.headers&&Object.keys(n.headers).length>0)for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`request["${s}"] = "${o}"`)):e.line(`request["${s}"] = "${i}"`);if(n.cookies&&Object.keys(n.cookies).length>0)for(const[s,i]of Object.entries(n.cookies))e.line(`request["Cookie"] = "${s}=${i}"`);return n.body&&(e.line("request.body = "),e.json(n.body)),e.line(),e.line('response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|'),e.indent(),e.line("http.request(request)"),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},Be={language:"ruby",client:"faraday",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line('require "faraday"'),e.line(),e.line('conn = Faraday.new(url: "'+n.url+'") do |f|'),e.indent(),e.line("f.adapter Faraday.default_adapter"),e.outdent(),e.line("end"),e.line(),e.line("response = conn."+n.method.toLowerCase()+" do |req|"),e.indent(),e.line('req.url "'+n.url+'"'),n.headers){e.line();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`req.headers["${s}"] = "${o}"`)):e.line(`req.headers["${s}"] = "${i}"`)}if(n.cookies){e.line();for(const[s,i]of Object.entries(n.cookies))e.line(`req.headers["Cookie"] = "${s}=${i}"`)}return n.body&&(e.line(),e.line("req.body = "),e.json(n.body)),e.outdent(),e.line("end"),e.line(),e.line("puts response.body"),e.output()}},Ie={language:"rust",client:"reqwest",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("use reqwest::blocking::Client;"),e.line("use std::error::Error;"),e.line(),e.line("fn main() -> Result<(), Box> {"),e.indent(),e.line("let client = Client::new();"),e.line(),e.line("let res = client.request(reqwest::Method::"+n.method.toUpperCase()+', "'+n.url+'")'),e.indent(),n.headers)for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`.header("${s}", "${o}")`)):e.line(`.header("${s}", "${i}")`);if(n.cookies)for(const[s,i]of Object.entries(n.cookies))Array.isArray(i)?i.forEach(o=>e.line(`.cookie("${s}", "${o}")`)):e.line(`.cookie("${s}", "${i}")`);return n.body&&(e.line(".body("),e.json(n.body),e.append(")")),e.line(".send()?;"),e.outdent(),e.line(),t.handleErrors?(e.line("if res.status().is_success() {"),e.indent(),e.line('println!("{}", res.text()?);'),e.outdent(),e.line("} else {"),e.indent(),e.line('eprintln!("Request failed with status: {}", res.status());'),e.outdent(),e.line("}")):e.line('println!("{}", res.text()?);'),e.line("Ok(())"),e.outdent(),e.line("}"),e.output()}},De={default:!0,language:"shell",client:"curl",generate(t,n){var i,o;const e=new p({indent:t.indent||" ",join:t.join||` \\ +`});if(e.line(`curl -X ${n.method} "${n.url}"`),e.indent(),n.headers)for(const[r,l]of Object.entries(n.headers))if(Array.isArray(l))for(const d of l)e.line(`-H "${r}: ${d.replace(/"/g,'\\"')}"`);else e.line(`-H "${r}: ${l.replace(/"/g,'\\"')}"`);if(n.cookies){const r=Object.entries(n.cookies).flatMap(([l,d])=>Array.isArray(d)?d.map(f=>`${l}=${f}`):`${l}=${d}`).join("; ");e.line(`-b "${r}"`)}if(n.body){const r=((i=n.headers)==null?void 0:i["content-type"])||((o=n.headers)==null?void 0:o["Content-Type"])||"application/json";if(r.includes("application/json"))e.line("-d $'"),e.json(n.body),e.append("'");else if(r==="application/x-www-form-urlencoded"){const l=new URLSearchParams(n.body).toString().replace(/'/g,"'\\''");e.line(`-d '${l}'`)}else if(typeof n.body=="string"){const l=n.body.replace(/'/g,"'\\''");e.line(`-d '${l}'`)}}let s=e.output();return s=s.replace(/\\\s*$/,"").trim(),s}},Ge={default:!0,language:"swift",client:"nsurlsession",generate(t,n){const e=new p({indent:t.indent||" ",join:t.join||` +`});if(e.line("import Foundation"),e.line(),e.line('let url = URL(string: "'+n.url+'")!'),e.line("var request = URLRequest(url: url)"),e.line('request.httpMethod = "'+n.method.toUpperCase()+'"'),n.headers&&Object.keys(n.headers).length>0){e.line();for(const[s,i]of Object.entries(n.headers))Array.isArray(i)?i.forEach(o=>e.line(`request.addValue("${o}", forHTTPHeaderField: "${s}")`)):e.line(`request.addValue("${i}", forHTTPHeaderField: "${s}")`)}if(n.cookies&&Object.keys(n.cookies).length>0){e.line();for(const[s,i]of Object.entries(n.cookies))e.line(`request.addValue("${s}=${i}", forHTTPHeaderField: "Cookie")`)}return n.body&&(e.line(),e.line("let body = "),e.json(n.body),e.line("request.httpBody = body")),e.line(),e.line("let task = URLSession.shared.dataTask(with: request) { data, response, error in"),e.indent(),e.line("if let error = error {"),e.indent(),e.line('print("Error: \\(error)")'),e.line("return"),e.outdent(),e.line("}"),e.line(),e.line("if let httpResponse = response as? HTTPURLResponse {"),e.indent(),e.line("if httpResponse.statusCode == 200, let data = data {"),e.indent(),e.line("let responseString = String(data: data, encoding: .utf8)"),e.line('print(responseString ?? "No response data")'),e.outdent(),e.line("} else {"),e.indent(),e.line('print("Request failed with status code: \\(httpResponse.statusCode)")'),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.outdent(),e.line("}"),e.line(),e.line("task.resume()"),e.output()}};h(ve);h(we);h(Oe);h(Te);h(Ee);h(Re);h(Le);h(Se);h(Ue);h(_e);h(He);h(Me);h(qe);h(Pe);h(Be);h(Ie);h(De);h(Ge);const _="php",Ne="https://raw.githubusercontent.com/brianvoe/gimmeHTTP/refs/heads/master/src/gimmeHTTP/logos/",Ve=y({name:"GimmeHttp",emits:["update:language","update:client"],props:{theme:{type:String,required:!1,default:"github-dark"},language:{type:String,required:!1,default:_},client:{type:String,required:!1,default:""},config:{type:Object,required:!1},http:{type:Object,required:!0}},data(){return{highlighter:null,logoUrl:Ne,codes:X(),openModal:!1,output:"",internalLanguage:this.language,internalClient:this.client}},async created(){const t=await H({themes:[M,q],langs:[P,B,I,D,G,N,V,F,J,x,Y,Q,z],langAlias:{ts:"typescript",node:"javascript",nodejs:"javascript"},engine:W(Z)});this.highlighter=t,this.code()},unmounted(){this.highlighter&&this.highlighter.dispose()},watch:{theme(){this.code()},language(t){this.internalLanguage=t||_,this.code()},client(t){this.internalClient=t||"",this.code()},config:{handler(){this.code()},deep:!0},http:{handler(){this.code()},deep:!0}},computed:{languages(){const t=this.codes.map(e=>e.language);return t.filter((e,s)=>t.indexOf(e)===s)},clients(){return this.codes.filter(t=>t.language===this.internalLanguage).map(t=>t.client)}},methods:{code(){if(!this.highlighter)return;const{code:t,error:n}=R({language:this.internalLanguage,client:this.internalClient,config:this.config,http:this.http});if(n){this.output=n;return}this.output=this.highlighter.codeToHtml(t,{lang:this.internalLanguage,theme:this.theme})},toggleModal(){this.openModal=!this.openModal,this.openModal?document.addEventListener("click",this.clickModalBg):document.removeEventListener("click",this.clickModalBg)},clickModalBg(t){t.target.classList.contains("modal")&&this.toggleModal()},clickModalLang(t){this.internalLanguage=t,this.$emit("update:language",t),this.toggleModal(),this.code()},clickModalClient(t){this.internalClient=t,this.$emit("update:client",t),this.toggleModal(),this.code()}}}),Fe={class:"gimmehttp"},Je=["src"],xe=["innerHTML"],Ye={class:"content"},Qe={class:"langs"},ze=["onClick"],We=["alt","src"],Ze=["onClick"];function Xe(t,n,e,s,i,o){return c(),u("div",Fe,[a("div",{onClick:n[0]||(n[0]=r=>t.toggleModal()),class:"selector"},[a("img",{src:t.logoUrl+t.internalLanguage+".svg",class:"select"},null,8,Je),n[2]||(n[2]=a("svg",{class:"arrows",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"m3.707 2.293 5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L6.586 8 2.293 3.707a1 1 0 0 1 1.414-1.414m5 0 5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L11.586 8 7.293 3.707a1 1 0 0 1 1.414-1.414"})],-1))]),a("div",{class:O("output language-"+t.internalLanguage+(t.openModal?" modalOpen":"")),innerHTML:t.output},null,10,xe),te(a("div",{class:"modal",onClick:n[1]||(n[1]=(...r)=>t.clickModalBg&&t.clickModalBg(...r))},[a("div",Ye,[a("div",Qe,[(c(!0),u($,null,T(t.languages,r=>(c(),u("div",{class:O(["lang",{selected:t.internalLanguage===r}]),key:r,onClick:l=>t.clickModalLang(r)},[a("img",{alt:r,src:t.logoUrl+r+".svg"},null,8,We)],10,ze))),128))]),n[3]||(n[3]=a("div",{class:"separator"},null,-1)),g(se,{name:"fade",tag:"div",class:"clients"},{default:b(()=>[(c(!0),u($,null,T(t.clients,r=>(c(),u("div",{class:"client",key:r,onClick:l=>t.clickModalClient(r)},C(r),9,Ze))),128))]),_:1})])],512),[[ie,t.openModal]])])}const Ke=A(Ve,[["render",Xe]]),en="https://raw.githubusercontent.com/brianvoe/gimmeHTTP/refs/heads/master/src/gimmeHTTP/logos/",nn=y({name:"Intro",components:{VueShiki:Ke},data(){const t={method:"GET",url:"https://example.com"},n={method:"POST",url:"https://example.com",headers:{"Content-Type":"application/json"},body:{first_name:"Billy",email:"billyboy@gmail.com",user_id:8675309}},e={method:"POST",url:"https://example.com",headers:{"Content-Type":"application/json"},cookies:{user_id:"1234567890"},body:{first_name:"Billy",email:"billyboy@gmail.com",user_id:8675309,address:{street:"123 Elm St",city:"Springfield",state:"IL",zip:"62701"},hobbies:["fishing","hiking","camping"]}},s=U(),i=s[Math.floor(Math.random()*s.length)];return{logoUrl:en,selectedLanguage:i,selectedClient:"",selectedHttp:"",https:{simple_get:t,simple_post:n,advanced_post:e}}},computed:{languages(){return U()},clients(){return X().filter(t=>t.language===this.selectedLanguage)},http(){const t=this.selectedHttp!==""?this.selectedHttp:Object.keys(this.https)[Math.floor(Math.random()*Object.keys(this.https).length)];return this.https[t]}},methods:{setLanguage(t){this.selectedLanguage=t},setClient(t){this.selectedClient=t},setExample(t){this.selectedHttp=t}}}),tn={class:"section intro"},sn={class:"available_languages"},on={class:"langs"},rn=["onClick"],ln=["src"],an={class:"clients"},dn=["onClick"],cn={class:"select_example"},un=["onClick"];function hn(t,n,e,s,i,o){const r=m("VueShiki");return c(),u("div",tn,[n[1]||(n[1]=a("p",null,"Easily output http request in many languages",-1)),a("div",sn,[n[0]||(n[0]=a("div",{class:"text"},[w("Available Languages: "),a("small",null,"click to see")],-1)),a("div",on,[(c(!0),u($,null,T(t.languages,l=>(c(),u("div",{class:O({lang:!0,selected:l===t.selectedLanguage}),key:l,onClick:d=>t.setLanguage(l)},[a("img",{src:t.logoUrl+l+".svg"},null,8,ln)],10,rn))),128))])]),a("div",an,[(c(!0),u($,null,T(t.clients,l=>(c(),u("div",{class:O({client:!0,selected:l.client===t.selectedClient}),key:l.client,onClick:d=>t.setClient(l.client)},C(l.client),11,dn))),128))]),a("div",cn,[(c(!0),u($,null,T(t.https,(l,d)=>(c(),u("button",{key:d,class:O({selected:d===t.selectedHttp}),onClick:f=>t.setExample(d)},C(d),11,un))),128))]),g(r,{language:t.selectedLanguage,client:t.selectedClient,http:t.http},null,8,["language","client","http"])])}const pn=A(nn,[["render",hn]]),gn=y({name:"ShikiStyle",props:{language:{type:String,default:"javascript"}},data(){return{highlighter:null,highlightedCode:""}},async created(){const t=await H({themes:[M,q],langs:[P,B,I,D,G,N,V,F,J,x,Y,Q,z],langAlias:{ts:"typescript",node:"javascript",nodejs:"javascript"},engine:W(Z)});this.highlighter=t,this.highlightCode(),this.$watch(()=>{var n,e,s,i;return(i=(s=(e=(n=this.$slots).default)==null?void 0:e.call(n)[0])==null?void 0:s.children)==null?void 0:i.toString()},(n,e)=>{n!==e&&this.highlightCode()})},unmounted(){this.highlighter&&this.highlighter.dispose()},watch:{language(){this.highlightCode()}},methods:{highlightCode(){var n,e,s,i;if(!this.highlighter)return;let t=((i=(s=(e=(n=this.$slots).default)==null?void 0:e.call(n)[0])==null?void 0:s.children)==null?void 0:i.toString())||"";t=t.replace(/^
/,"").replace(/<\/pre>$/,""),t=this.normalizeIndentation(t),this.highlightedCode=this.highlighter.codeToHtml(t,{lang:this.language,theme:"github-dark"})},normalizeIndentation(t){const n=t.split(`
+`),e=Math.min(...n.filter(s=>s.trim()).map(s=>s.match(/^ */)[0].length));return n.map(s=>s.slice(e)).join(`
+`)}}}),fn=["innerHTML"];function mn(t,n,e,s,i,o){return c(),u("div",{class:"shiki-style",innerHTML:t.highlightedCode},null,8,fn)}const L=A(gn,[["render",mn]]),yn=y({components:{ShikiStyle:L},name:"Install"}),An={class:"section install"};function bn(t,n,e,s,i,o){const r=m("ShikiStyle");return c(),u("div",An,[n[1]||(n[1]=a("a",{href:"#install"},[a("h2",{id:"install"},"Installation")],-1)),g(r,{language:"shell"},{default:b(()=>n[0]||(n[0]=[a("pre",null,`        npm i gimmehttp
+      `,-1)])),_:1})])}const kn=A(yn,[["render",bn]]),jn=y({components:{ShikiStyle:L},name:"Settings"}),$n={class:"section settings"};function Cn(t,n,e,s,i,o){const r=m("ShikiStyle");return c(),u("div",$n,[n[1]||(n[1]=a("a",{href:"#settings"},[a("h2",{id:"settings"},"Settings")],-1)),n[2]||(n[2]=a("div",{class:"alert info"},[a("strong",null,"Info:"),w(" The only required fields are language, http.method and http.url")],-1)),g(r,{language:"javascript"},{default:b(()=>n[0]||(n[0]=[a("pre",null,`        const settings = {
           // Required
           language: 'javascript', // Programming Language
           client: 'axios',        // Client - default set by language
@@ -74,7 +60,7 @@ import{d as y,o as g,e as p,f as K,g as v,t as C,j as l,k as E,l as ee,v as ne,F
             }
           }
         }
-      `,-1)])),_:1})])}const Bn=A(Rn,[["render",Un]]),_n=y({components:{ShikiStyle:T},name:"Examples",data(){return{simpleGetCode:"",simplePostCode:""}},mounted(){const t=b({language:"javascript",client:"axios",http:{method:"GET",url:"https://example.com"}});this.simpleGetCode=t.code;const n=b({language:"go",http:{method:"POST",url:"https://example.com",body:{key:"value"}}});this.simplePostCode=n.code}}),qn={class:"section examples"},Hn={class:"example"},In={class:"example"};function Mn(t,n,e,i,o,s){const r=m("ShikiStyle");return g(),p("div",qn,[n[6]||(n[6]=l("a",{href:"#examples"},[l("h2",{id:"examples"},"Usage Examples")],-1)),l("div",Hn,[n[1]||(n[1]=l("h3",null,"Simple GET Request",-1)),f(r,{language:"javascript"},{default:k(()=>n[0]||(n[0]=[l("pre",null,`        // Settings
+      `,-1)])),_:1})])}const vn=A(jn,[["render",Cn]]),wn=y({components:{ShikiStyle:L},name:"Examples",data(){return{simpleGetCode:"",simplePostCode:""}},mounted(){const t=R({language:"javascript",client:"axios",http:{method:"GET",url:"https://example.com"}});this.simpleGetCode=t.code;const n=R({language:"go",http:{method:"POST",url:"https://example.com",body:{key:"value"}}});this.simplePostCode=n.code}}),On={class:"section examples"},Tn={class:"example"},En={class:"example"};function Rn(t,n,e,s,i,o){const r=m("ShikiStyle");return c(),u("div",On,[n[6]||(n[6]=a("a",{href:"#examples"},[a("h2",{id:"examples"},"Usage Examples")],-1)),a("div",Tn,[n[1]||(n[1]=a("h3",null,"Simple GET Request",-1)),g(r,{language:"javascript"},{default:b(()=>n[0]||(n[0]=[a("pre",null,`        // Settings
         const settings = {
           language: 'javascript',
           client: 'axios',
@@ -92,7 +78,7 @@ import{d as y,o as g,e as p,f as K,g as v,t as C,j as l,k as E,l as ee,v as ne,F
 
         // Output
         console.log(code)
-      `,-1)])),_:1}),n[2]||(n[2]=l("h4",null,"Output",-1)),f(r,{language:"javascript"},{default:k(()=>[l("pre",null,C(t.simpleGetCode),1)]),_:1})]),l("div",In,[n[4]||(n[4]=l("h3",null,"Simple POST Request",-1)),f(r,{language:"javascript"},{default:k(()=>n[3]||(n[3]=[l("pre",null,`        // Settings
+      `,-1)])),_:1}),n[2]||(n[2]=a("h4",null,"Output",-1)),g(r,{language:"javascript"},{default:b(()=>[a("pre",null,C(t.simpleGetCode),1)]),_:1})]),a("div",En,[n[4]||(n[4]=a("h3",null,"Simple POST Request",-1)),g(r,{language:"javascript"},{default:b(()=>n[3]||(n[3]=[a("pre",null,`        // Settings
         const settings = {
           language: 'go',
           http: {
@@ -112,4 +98,4 @@ import{d as y,o as g,e as p,f as K,g as v,t as C,j as l,k as E,l as ee,v as ne,F
 
         // Output
         console.log(code)
-      `,-1)])),_:1}),n[5]||(n[5]=l("h4",null,"Output",-1)),f(r,{language:"javascript"},{default:k(()=>[l("pre",null,C(t.simplePostCode),1)]),_:1})])])}const Pn=A(_n,[["render",Mn]]),Jn=y({name:"App",components:{Header:pe,Intro:vn,Install:Sn,Settings:Bn,Examples:Pn,Footer:ye},data(){return{}}}),Nn={class:"content"};function Dn(t,n,e,i,o,s){const r=m("Header"),a=m("Intro"),d=m("Install"),h=m("Settings"),$=m("Examples"),X=m("Footer");return g(),p(O,null,[f(r),l("div",Nn,[f(a),f(d),f(h),f($),f(X)])],64)}const Gn=A(Jn,[["render",Dn]]),W=ie(Gn);W.use(re);W.mount("#app");
+      `,-1)])),_:1}),n[5]||(n[5]=a("h4",null,"Output",-1)),g(r,{language:"javascript"},{default:b(()=>[a("pre",null,C(t.simplePostCode),1)]),_:1})])])}const Ln=A(wn,[["render",Rn]]),Sn=y({name:"App",components:{Header:fe,Intro:pn,Install:kn,Settings:vn,Examples:Ln,Footer:be},data(){return{}}}),Un={class:"content"};function _n(t,n,e,s,i,o){const r=m("Header"),l=m("Intro"),d=m("Install"),f=m("Settings"),j=m("Examples"),S=m("Footer");return c(),u($,null,[g(r),a("div",Un,[g(l),g(d),g(f),g(j),g(S)])],64)}const Hn=A(Sn,[["render",_n]]),ee=oe(Hn);ee.use(ae);ee.mount("#app");