@scalar/snippetz 0.7.4 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/clients/index.js +168 -169
  2. package/dist/httpsnippet-lite/helpers/code-builder.js +86 -74
  3. package/dist/httpsnippet-lite/helpers/escape.js +69 -44
  4. package/dist/httpsnippet-lite/helpers/headers.js +17 -14
  5. package/dist/httpsnippet-lite/helpers/reducer.js +1 -1
  6. package/dist/httpsnippet-lite/helpers/shell.js +13 -13
  7. package/dist/httpsnippet-lite/helpers/snippet-request.js +1 -1
  8. package/dist/httpsnippet-lite/helpers/url.js +4 -8
  9. package/dist/httpsnippet-lite/targets/c/libcurl/client.js +69 -67
  10. package/dist/httpsnippet-lite/targets/clojure/clj_http/client.js +165 -154
  11. package/dist/httpsnippet-lite/targets/csharp/restsharp/client.js +35 -38
  12. package/dist/httpsnippet-lite/targets/go/native/client.js +151 -147
  13. package/dist/httpsnippet-lite/targets/java/asynchttp/client.js +32 -35
  14. package/dist/httpsnippet-lite/targets/java/nethttp/client.js +40 -39
  15. package/dist/httpsnippet-lite/targets/java/okhttp/client.js +83 -73
  16. package/dist/httpsnippet-lite/targets/java/unirest/client.js +41 -34
  17. package/dist/httpsnippet-lite/targets/javascript/axios/client.js +81 -76
  18. package/dist/httpsnippet-lite/targets/javascript/jquery/client.js +77 -71
  19. package/dist/httpsnippet-lite/targets/javascript/xhr/client.js +73 -71
  20. package/dist/httpsnippet-lite/targets/kotlin/okhttp/client.js +83 -73
  21. package/dist/httpsnippet-lite/targets/node/axios/client.js +74 -69
  22. package/dist/httpsnippet-lite/targets/objc/helpers.js +52 -33
  23. package/dist/httpsnippet-lite/targets/objc/nsurlsession/client.js +123 -121
  24. package/dist/httpsnippet-lite/targets/ocaml/cohttp/client.js +60 -49
  25. package/dist/httpsnippet-lite/targets/powershell/common.js +46 -56
  26. package/dist/httpsnippet-lite/targets/powershell/restmethod/client.js +9 -13
  27. package/dist/httpsnippet-lite/targets/powershell/webrequest/client.js +9 -13
  28. package/dist/httpsnippet-lite/targets/python/python3/client.js +85 -68
  29. package/dist/httpsnippet-lite/targets/r/httr/client.js +114 -95
  30. package/dist/httpsnippet-lite/targets/ruby/native/client.js +66 -70
  31. package/dist/httpsnippet-lite/targets/shell/httpie/client.js +121 -107
  32. package/dist/httpsnippet-lite/targets/shell/wget/client.js +48 -43
  33. package/dist/httpsnippet-lite/targets/swift/helpers.js +62 -44
  34. package/dist/httpsnippet-lite/targets/swift/nsurlsession/client.js +126 -112
  35. package/dist/httpsnippet-lite/targets/target.js +1 -1
  36. package/dist/index.js +2 -9
  37. package/dist/libs/http.js +68 -56
  38. package/dist/libs/javascript.js +77 -60
  39. package/dist/libs/php.js +59 -49
  40. package/dist/libs/rust.js +60 -33
  41. package/dist/libs/shell.js +14 -5
  42. package/dist/plugins/c/libcurl/index.js +1 -5
  43. package/dist/plugins/c/libcurl/libcurl.js +13 -13
  44. package/dist/plugins/clojure/clj_http/clj_http.js +13 -13
  45. package/dist/plugins/clojure/clj_http/index.js +1 -5
  46. package/dist/plugins/csharp/httpclient/httpclient.js +206 -150
  47. package/dist/plugins/csharp/httpclient/index.js +1 -5
  48. package/dist/plugins/csharp/restsharp/index.js +1 -5
  49. package/dist/plugins/csharp/restsharp/restsharp.js +13 -13
  50. package/dist/plugins/dart/http/http.js +95 -93
  51. package/dist/plugins/dart/http/index.js +1 -5
  52. package/dist/plugins/fsharp/httpclient/httpclient.js +169 -122
  53. package/dist/plugins/fsharp/httpclient/index.js +1 -5
  54. package/dist/plugins/go/native/index.js +1 -5
  55. package/dist/plugins/go/native/native.js +13 -13
  56. package/dist/plugins/http/http11/http11.d.ts.map +1 -1
  57. package/dist/plugins/http/http11/http11.js +104 -85
  58. package/dist/plugins/http/http11/index.js +1 -5
  59. package/dist/plugins/java/asynchttp/asynchttp.js +13 -13
  60. package/dist/plugins/java/asynchttp/index.js +1 -5
  61. package/dist/plugins/java/nethttp/index.js +1 -5
  62. package/dist/plugins/java/nethttp/nethttp.js +13 -13
  63. package/dist/plugins/java/okhttp/index.js +1 -5
  64. package/dist/plugins/java/okhttp/okhttp.js +13 -13
  65. package/dist/plugins/java/unirest/index.js +1 -5
  66. package/dist/plugins/java/unirest/unirest.js +13 -13
  67. package/dist/plugins/js/axios/axios.js +13 -13
  68. package/dist/plugins/js/axios/index.js +1 -5
  69. package/dist/plugins/js/fetch/fetch.js +82 -68
  70. package/dist/plugins/js/fetch/index.js +1 -5
  71. package/dist/plugins/js/jquery/index.js +1 -5
  72. package/dist/plugins/js/jquery/jquery.js +13 -13
  73. package/dist/plugins/js/ofetch/index.js +1 -5
  74. package/dist/plugins/js/ofetch/ofetch.js +61 -48
  75. package/dist/plugins/js/xhr/index.js +1 -5
  76. package/dist/plugins/js/xhr/xhr.js +13 -13
  77. package/dist/plugins/kotlin/okhttp/index.js +1 -5
  78. package/dist/plugins/kotlin/okhttp/okhttp.js +13 -13
  79. package/dist/plugins/node/axios/axios.js +13 -13
  80. package/dist/plugins/node/axios/index.js +1 -5
  81. package/dist/plugins/node/fetch/fetch.js +86 -74
  82. package/dist/plugins/node/fetch/index.js +1 -5
  83. package/dist/plugins/node/ofetch/index.js +1 -5
  84. package/dist/plugins/node/ofetch/ofetch.js +61 -48
  85. package/dist/plugins/node/undici/index.js +1 -5
  86. package/dist/plugins/node/undici/undici.js +60 -47
  87. package/dist/plugins/objc/nsurlsession/index.js +1 -5
  88. package/dist/plugins/objc/nsurlsession/nsurlsession.js +13 -13
  89. package/dist/plugins/ocaml/cohttp/cohttp.js +13 -13
  90. package/dist/plugins/ocaml/cohttp/index.js +1 -5
  91. package/dist/plugins/php/curl/curl.js +143 -101
  92. package/dist/plugins/php/curl/index.js +1 -5
  93. package/dist/plugins/php/guzzle/guzzle.d.ts.map +1 -1
  94. package/dist/plugins/php/guzzle/guzzle.js +109 -83
  95. package/dist/plugins/php/guzzle/index.js +1 -5
  96. package/dist/plugins/powershell/restmethod/index.js +1 -5
  97. package/dist/plugins/powershell/restmethod/restmethod.js +13 -13
  98. package/dist/plugins/powershell/webrequest/index.js +1 -5
  99. package/dist/plugins/powershell/webrequest/webrequest.js +13 -13
  100. package/dist/plugins/python/httpx/async.js +17 -15
  101. package/dist/plugins/python/httpx/index.js +2 -7
  102. package/dist/plugins/python/httpx/sync.js +11 -12
  103. package/dist/plugins/python/python3/index.js +1 -5
  104. package/dist/plugins/python/python3/python3.js +13 -13
  105. package/dist/plugins/python/requests/index.js +1 -5
  106. package/dist/plugins/python/requests/requests.js +11 -12
  107. package/dist/plugins/python/requestsLike.d.ts.map +1 -1
  108. package/dist/plugins/python/requestsLike.js +145 -112
  109. package/dist/plugins/r/httr/httr.js +13 -13
  110. package/dist/plugins/r/httr/index.js +1 -5
  111. package/dist/plugins/ruby/native/index.js +1 -5
  112. package/dist/plugins/ruby/native/native.js +13 -13
  113. package/dist/plugins/rust/reqwest/index.js +1 -5
  114. package/dist/plugins/rust/reqwest/reqwest.js +126 -83
  115. package/dist/plugins/shell/curl/curl.d.ts.map +1 -1
  116. package/dist/plugins/shell/curl/curl.js +129 -97
  117. package/dist/plugins/shell/curl/index.js +1 -5
  118. package/dist/plugins/shell/httpie/httpie.js +13 -13
  119. package/dist/plugins/shell/httpie/index.js +1 -5
  120. package/dist/plugins/shell/wget/index.js +1 -5
  121. package/dist/plugins/shell/wget/wget.js +13 -13
  122. package/dist/plugins/swift/nsurlsession/index.js +1 -5
  123. package/dist/plugins/swift/nsurlsession/nsurlsession.js +13 -13
  124. package/dist/snippetz.js +25 -28
  125. package/dist/utils/convertWithHttpSnippetLite.js +100 -96
  126. package/dist/utils/index.js +1 -5
  127. package/package.json +8 -12
  128. package/dist/clients/index.js.map +0 -7
  129. package/dist/httpsnippet-lite/helpers/code-builder.js.map +0 -7
  130. package/dist/httpsnippet-lite/helpers/escape.js.map +0 -7
  131. package/dist/httpsnippet-lite/helpers/headers.js.map +0 -7
  132. package/dist/httpsnippet-lite/helpers/reducer.js.map +0 -7
  133. package/dist/httpsnippet-lite/helpers/shell.js.map +0 -7
  134. package/dist/httpsnippet-lite/helpers/snippet-request.js.map +0 -7
  135. package/dist/httpsnippet-lite/helpers/url.js.map +0 -7
  136. package/dist/httpsnippet-lite/targets/c/libcurl/client.js.map +0 -7
  137. package/dist/httpsnippet-lite/targets/clojure/clj_http/client.js.map +0 -7
  138. package/dist/httpsnippet-lite/targets/csharp/restsharp/client.js.map +0 -7
  139. package/dist/httpsnippet-lite/targets/go/native/client.js.map +0 -7
  140. package/dist/httpsnippet-lite/targets/java/asynchttp/client.js.map +0 -7
  141. package/dist/httpsnippet-lite/targets/java/nethttp/client.js.map +0 -7
  142. package/dist/httpsnippet-lite/targets/java/okhttp/client.js.map +0 -7
  143. package/dist/httpsnippet-lite/targets/java/unirest/client.js.map +0 -7
  144. package/dist/httpsnippet-lite/targets/javascript/axios/client.js.map +0 -7
  145. package/dist/httpsnippet-lite/targets/javascript/jquery/client.js.map +0 -7
  146. package/dist/httpsnippet-lite/targets/javascript/xhr/client.js.map +0 -7
  147. package/dist/httpsnippet-lite/targets/kotlin/okhttp/client.js.map +0 -7
  148. package/dist/httpsnippet-lite/targets/node/axios/client.js.map +0 -7
  149. package/dist/httpsnippet-lite/targets/objc/helpers.js.map +0 -7
  150. package/dist/httpsnippet-lite/targets/objc/nsurlsession/client.js.map +0 -7
  151. package/dist/httpsnippet-lite/targets/ocaml/cohttp/client.js.map +0 -7
  152. package/dist/httpsnippet-lite/targets/powershell/common.js.map +0 -7
  153. package/dist/httpsnippet-lite/targets/powershell/restmethod/client.js.map +0 -7
  154. package/dist/httpsnippet-lite/targets/powershell/webrequest/client.js.map +0 -7
  155. package/dist/httpsnippet-lite/targets/python/python3/client.js.map +0 -7
  156. package/dist/httpsnippet-lite/targets/r/httr/client.js.map +0 -7
  157. package/dist/httpsnippet-lite/targets/ruby/native/client.js.map +0 -7
  158. package/dist/httpsnippet-lite/targets/shell/httpie/client.js.map +0 -7
  159. package/dist/httpsnippet-lite/targets/shell/wget/client.js.map +0 -7
  160. package/dist/httpsnippet-lite/targets/swift/helpers.js.map +0 -7
  161. package/dist/httpsnippet-lite/targets/swift/nsurlsession/client.js.map +0 -7
  162. package/dist/httpsnippet-lite/targets/target.js.map +0 -7
  163. package/dist/index.js.map +0 -7
  164. package/dist/libs/http.js.map +0 -7
  165. package/dist/libs/javascript.js.map +0 -7
  166. package/dist/libs/php.js.map +0 -7
  167. package/dist/libs/rust.js.map +0 -7
  168. package/dist/libs/shell.js.map +0 -7
  169. package/dist/plugins/c/libcurl/index.js.map +0 -7
  170. package/dist/plugins/c/libcurl/libcurl.js.map +0 -7
  171. package/dist/plugins/clojure/clj_http/clj_http.js.map +0 -7
  172. package/dist/plugins/clojure/clj_http/index.js.map +0 -7
  173. package/dist/plugins/csharp/httpclient/httpclient.js.map +0 -7
  174. package/dist/plugins/csharp/httpclient/index.js.map +0 -7
  175. package/dist/plugins/csharp/restsharp/index.js.map +0 -7
  176. package/dist/plugins/csharp/restsharp/restsharp.js.map +0 -7
  177. package/dist/plugins/dart/http/http.js.map +0 -7
  178. package/dist/plugins/dart/http/index.js.map +0 -7
  179. package/dist/plugins/fsharp/httpclient/httpclient.js.map +0 -7
  180. package/dist/plugins/fsharp/httpclient/index.js.map +0 -7
  181. package/dist/plugins/go/native/index.js.map +0 -7
  182. package/dist/plugins/go/native/native.js.map +0 -7
  183. package/dist/plugins/http/http11/http11.js.map +0 -7
  184. package/dist/plugins/http/http11/index.js.map +0 -7
  185. package/dist/plugins/java/asynchttp/asynchttp.js.map +0 -7
  186. package/dist/plugins/java/asynchttp/index.js.map +0 -7
  187. package/dist/plugins/java/nethttp/index.js.map +0 -7
  188. package/dist/plugins/java/nethttp/nethttp.js.map +0 -7
  189. package/dist/plugins/java/okhttp/index.js.map +0 -7
  190. package/dist/plugins/java/okhttp/okhttp.js.map +0 -7
  191. package/dist/plugins/java/unirest/index.js.map +0 -7
  192. package/dist/plugins/java/unirest/unirest.js.map +0 -7
  193. package/dist/plugins/js/axios/axios.js.map +0 -7
  194. package/dist/plugins/js/axios/index.js.map +0 -7
  195. package/dist/plugins/js/fetch/fetch.js.map +0 -7
  196. package/dist/plugins/js/fetch/index.js.map +0 -7
  197. package/dist/plugins/js/jquery/index.js.map +0 -7
  198. package/dist/plugins/js/jquery/jquery.js.map +0 -7
  199. package/dist/plugins/js/ofetch/index.js.map +0 -7
  200. package/dist/plugins/js/ofetch/ofetch.js.map +0 -7
  201. package/dist/plugins/js/xhr/index.js.map +0 -7
  202. package/dist/plugins/js/xhr/xhr.js.map +0 -7
  203. package/dist/plugins/kotlin/okhttp/index.js.map +0 -7
  204. package/dist/plugins/kotlin/okhttp/okhttp.js.map +0 -7
  205. package/dist/plugins/node/axios/axios.js.map +0 -7
  206. package/dist/plugins/node/axios/index.js.map +0 -7
  207. package/dist/plugins/node/fetch/fetch.js.map +0 -7
  208. package/dist/plugins/node/fetch/index.js.map +0 -7
  209. package/dist/plugins/node/ofetch/index.js.map +0 -7
  210. package/dist/plugins/node/ofetch/ofetch.js.map +0 -7
  211. package/dist/plugins/node/undici/index.js.map +0 -7
  212. package/dist/plugins/node/undici/undici.js.map +0 -7
  213. package/dist/plugins/objc/nsurlsession/index.js.map +0 -7
  214. package/dist/plugins/objc/nsurlsession/nsurlsession.js.map +0 -7
  215. package/dist/plugins/ocaml/cohttp/cohttp.js.map +0 -7
  216. package/dist/plugins/ocaml/cohttp/index.js.map +0 -7
  217. package/dist/plugins/php/curl/curl.js.map +0 -7
  218. package/dist/plugins/php/curl/index.js.map +0 -7
  219. package/dist/plugins/php/guzzle/guzzle.js.map +0 -7
  220. package/dist/plugins/php/guzzle/index.js.map +0 -7
  221. package/dist/plugins/powershell/restmethod/index.js.map +0 -7
  222. package/dist/plugins/powershell/restmethod/restmethod.js.map +0 -7
  223. package/dist/plugins/powershell/webrequest/index.js.map +0 -7
  224. package/dist/plugins/powershell/webrequest/webrequest.js.map +0 -7
  225. package/dist/plugins/python/httpx/async.js.map +0 -7
  226. package/dist/plugins/python/httpx/index.js.map +0 -7
  227. package/dist/plugins/python/httpx/sync.js.map +0 -7
  228. package/dist/plugins/python/python3/index.js.map +0 -7
  229. package/dist/plugins/python/python3/python3.js.map +0 -7
  230. package/dist/plugins/python/requests/index.js.map +0 -7
  231. package/dist/plugins/python/requests/requests.js.map +0 -7
  232. package/dist/plugins/python/requestsLike.js.map +0 -7
  233. package/dist/plugins/r/httr/httr.js.map +0 -7
  234. package/dist/plugins/r/httr/index.js.map +0 -7
  235. package/dist/plugins/ruby/native/index.js.map +0 -7
  236. package/dist/plugins/ruby/native/native.js.map +0 -7
  237. package/dist/plugins/rust/reqwest/index.js.map +0 -7
  238. package/dist/plugins/rust/reqwest/reqwest.js.map +0 -7
  239. package/dist/plugins/shell/curl/curl.js.map +0 -7
  240. package/dist/plugins/shell/curl/index.js.map +0 -7
  241. package/dist/plugins/shell/httpie/httpie.js.map +0 -7
  242. package/dist/plugins/shell/httpie/index.js.map +0 -7
  243. package/dist/plugins/shell/wget/index.js.map +0 -7
  244. package/dist/plugins/shell/wget/wget.js.map +0 -7
  245. package/dist/plugins/swift/nsurlsession/index.js.map +0 -7
  246. package/dist/plugins/swift/nsurlsession/nsurlsession.js.map +0 -7
  247. package/dist/snippetz.js.map +0 -7
  248. package/dist/utils/convertWithHttpSnippetLite.js.map +0 -7
  249. package/dist/utils/index.js.map +0 -7
@@ -1,148 +1,195 @@
1
- const fsharpHttpclient = {
2
- target: "fsharp",
3
- client: "httpclient",
4
- title: "HttpClient",
5
- generate: (request, _) => {
6
- if (!request) {
7
- return "";
8
- }
9
- const finalUrl = buildUrlWithQueryString(request.url, request.queryString);
10
- let code = "";
11
- code += generateHttpRequestMessage(request.method, finalUrl);
12
- if (request.headers && request.headers.length > 0) {
13
- code += generateHeadersCode(request.headers);
14
- }
15
- if (request.postData) {
16
- code += generatePostDataCode(request.postData);
17
- }
18
- if (request.cookies && request.cookies.length > 0 && request.url) {
19
- code += generateCookiesCode(request.cookies, request.url);
20
- code += "let client = new HttpClient(handler)\n";
21
- } else {
22
- code += "let client = new HttpClient()\n";
23
- }
24
- code += "let! result = client.SendAsync(httpRequestMessage)\n";
25
- return code;
26
- }
1
+ /**
2
+ * F# HttpClient plugin for generating HTTP request code
3
+ */
4
+ export const fsharpHttpclient = {
5
+ target: 'fsharp',
6
+ client: 'httpclient',
7
+ title: 'HttpClient',
8
+ generate: (request, _) => {
9
+ if (!request) {
10
+ return '';
11
+ }
12
+ const finalUrl = buildUrlWithQueryString(request.url, request.queryString);
13
+ let code = '';
14
+ // Initialize HttpRequestMessage
15
+ code += generateHttpRequestMessage(request.method, finalUrl);
16
+ // Add headers if present
17
+ if (request.headers && request.headers.length > 0) {
18
+ code += generateHeadersCode(request.headers);
19
+ }
20
+ // Add request body if present
21
+ if (request.postData) {
22
+ code += generatePostDataCode(request.postData);
23
+ }
24
+ // Configure client with cookies if present
25
+ if (request.cookies && request.cookies.length > 0 && request.url) {
26
+ code += generateCookiesCode(request.cookies, request.url);
27
+ code += 'let client = new HttpClient(handler)\n';
28
+ }
29
+ else {
30
+ code += 'let client = new HttpClient()\n';
31
+ }
32
+ // Send the request
33
+ code += 'let! result = client.SendAsync(httpRequestMessage)\n';
34
+ return code;
35
+ },
27
36
  };
37
+ /**
38
+ * Builds a query string from an array of query parameters
39
+ */
28
40
  function buildQueryString(queryParams) {
29
- if (!queryParams || queryParams.length === 0) {
30
- return "";
31
- }
32
- const params = queryParams.map((param) => `${param.name}=${param.value}`);
33
- return "?" + params.join("&");
41
+ if (!queryParams || queryParams.length === 0) {
42
+ return '';
43
+ }
44
+ const params = queryParams.map((param) => `${param.name}=${param.value}`);
45
+ return '?' + params.join('&');
34
46
  }
47
+ /**
48
+ * Combines base URL with query string if present
49
+ */
35
50
  function buildUrlWithQueryString(baseUrl, queryParams) {
36
- if (!baseUrl) {
37
- return "";
38
- }
39
- if (!queryParams || queryParams.length === 0) {
40
- return baseUrl;
41
- }
42
- return baseUrl + buildQueryString(queryParams);
51
+ if (!baseUrl) {
52
+ return '';
53
+ }
54
+ if (!queryParams || queryParams.length === 0) {
55
+ return baseUrl;
56
+ }
57
+ return baseUrl + buildQueryString(queryParams);
43
58
  }
59
+ /**
60
+ * Generates the HttpRequestMessage initialization code
61
+ */
44
62
  function generateHttpRequestMessage(method, url) {
45
- return `let httpRequestMessage = new HttpRequestMessage(
63
+ return `let httpRequestMessage = new HttpRequestMessage(
46
64
  HttpMethod("${method}"),
47
65
  new Uri("${escapeString(url)}")
48
- )
49
-
50
- `;
66
+ )\n\n`;
51
67
  }
68
+ /**
69
+ * Generates code to add headers to the HttpRequestMessage
70
+ */
52
71
  function generateHeadersCode(headers) {
53
- let code = "";
54
- for (const header of headers) {
55
- code += `httpRequestMessage.Headers.Add("${escapeString(header.name ?? "")}", "${escapeString(header.value ?? "")}")
56
- `;
57
- }
58
- code += "\n";
59
- return code;
72
+ let code = '';
73
+ for (const header of headers) {
74
+ code += `httpRequestMessage.Headers.Add("${escapeString(header.name ?? '')}", "${escapeString(header.value ?? '')}")\n`;
75
+ }
76
+ code += '\n';
77
+ return code;
60
78
  }
79
+ /**
80
+ * Generates code to configure cookies for the HttpClient
81
+ */
61
82
  function generateCookiesCode(cookies, url) {
62
- let code = "let cookieContainer = CookieContainer()\n";
63
- for (const cookie of cookies) {
64
- code += `cookieContainer.Add(Uri("${escapeString(url)}"), Cookie("${escapeString(cookie.name ?? "")}", "${escapeString(cookie.value ?? "")}"))
65
- `;
66
- }
67
- code += "use handler = new HttpClientHandler()\n";
68
- code += "handler.CookieContainer <- cookieContainer\n\n";
69
- return code;
83
+ let code = 'let cookieContainer = CookieContainer()\n';
84
+ for (const cookie of cookies) {
85
+ code += `cookieContainer.Add(Uri("${escapeString(url)}"), Cookie("${escapeString(cookie.name ?? '')}", "${escapeString(cookie.value ?? '')}"))\n`;
86
+ }
87
+ code += 'use handler = new HttpClientHandler()\n';
88
+ code += 'handler.CookieContainer <- cookieContainer\n\n';
89
+ return code;
70
90
  }
91
+ /**
92
+ * Generates code to set the request content based on postData
93
+ */
71
94
  function generatePostDataCode(postData) {
72
- if (!postData) {
73
- return "";
74
- }
75
- let code = "";
76
- switch (postData.mimeType) {
77
- case "multipart/form-data":
78
- code += generateMultipartFormDataCode(postData);
79
- break;
80
- case "application/x-www-form-urlencoded":
81
- code += generateUrlEncodedFormDataCode(postData);
82
- break;
83
- case "application/json":
84
- code += generateJsonContentCode(postData);
85
- break;
86
- default:
87
- code += generateGenericContentCode(postData, postData.mimeType);
88
- break;
89
- }
90
- code += "httpRequestMessage.Content <- content\n\n";
91
- return code;
95
+ if (!postData) {
96
+ return '';
97
+ }
98
+ let code = '';
99
+ switch (postData.mimeType) {
100
+ case 'multipart/form-data':
101
+ code += generateMultipartFormDataCode(postData);
102
+ break;
103
+ case 'application/x-www-form-urlencoded':
104
+ code += generateUrlEncodedFormDataCode(postData);
105
+ break;
106
+ case 'application/json':
107
+ code += generateJsonContentCode(postData);
108
+ break;
109
+ default:
110
+ code += generateGenericContentCode(postData, postData.mimeType);
111
+ break;
112
+ }
113
+ code += 'httpRequestMessage.Content <- content\n\n';
114
+ return code;
92
115
  }
116
+ /**
117
+ * Generates code for generic content types
118
+ */
93
119
  function generateGenericContentCode(postData, contentType) {
94
- let code = `let content = new StringContent("${escapeString(postData.text ?? "")}", Encoding.UTF8, "${escapeString(contentType ?? "")}")
95
- `;
96
- code += `content.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(contentType ?? "")}")
97
- `;
98
- return code;
120
+ let code = `let content = new StringContent("${escapeString(postData.text ?? '')}", Encoding.UTF8, "${escapeString(contentType ?? '')}")\n`;
121
+ code += `content.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(contentType ?? '')}")\n`;
122
+ return code;
99
123
  }
124
+ /**
125
+ * Generates code for multipart/form-data content
126
+ */
100
127
  function generateMultipartFormDataCode(postData) {
101
- let code = "let content = new MultipartFormDataContent()\n";
102
- let fileIndex = 0;
103
- for (const param of postData.params) {
104
- if (param.value === "BINARY") {
105
- const escapedFileName = escapeString(param.fileName ?? "");
106
- code += `let fileStreamContent_${fileIndex} = new StreamContent(File.OpenRead("${escapedFileName}"))
107
- `;
108
- code += `fileStreamContent_${fileIndex}.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(param.contentType ?? "")}")
109
- `;
110
- code += `content.Add(fileStreamContent_${fileIndex}, "${escapedFileName}", "${escapedFileName}")
111
- `;
112
- fileIndex++;
113
- } else {
114
- code += `content.Add(new StringContent("${escapeString(param.value ?? "")}"), "${escapeString(param.name ?? "")}")
115
- `;
128
+ let code = 'let content = new MultipartFormDataContent()\n';
129
+ let fileIndex = 0;
130
+ let stringContentIndex = 0;
131
+ for (const param of postData.params) {
132
+ if (param.value === 'BINARY') {
133
+ const escapedFileName = escapeString(param.fileName ?? '');
134
+ code += `let fileStreamContent_${fileIndex} = new StreamContent(File.OpenRead("${escapedFileName}"))\n`;
135
+ if (param.contentType) {
136
+ code += `fileStreamContent_${fileIndex}.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(param.contentType)}")\n`;
137
+ }
138
+ code += `content.Add(fileStreamContent_${fileIndex}, "${escapedFileName}", "${escapedFileName}")\n`;
139
+ fileIndex++;
140
+ }
141
+ else {
142
+ const escapedName = escapeString(param.name ?? '');
143
+ const escapedValue = escapeString(param.value ?? '');
144
+ if (param.contentType) {
145
+ code += `let stringContent_${stringContentIndex} = new StringContent("${escapedValue}")\n`;
146
+ code += `stringContent_${stringContentIndex}.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(param.contentType)}")\n`;
147
+ code += `content.Add(stringContent_${stringContentIndex}, "${escapedName}")\n`;
148
+ stringContentIndex++;
149
+ }
150
+ else {
151
+ code += `content.Add(new StringContent("${escapedValue}"), "${escapedName}")\n`;
152
+ }
153
+ }
116
154
  }
117
- }
118
- return code;
155
+ return code;
119
156
  }
157
+ /**
158
+ * Generates code for JSON content
159
+ */
120
160
  function generateJsonContentCode(postData) {
121
- let prettyJson;
122
- try {
123
- prettyJson = JSON.stringify(JSON.parse(postData.text ?? "{}"), null, 2);
124
- } catch {
125
- prettyJson = postData.text ?? "{}";
126
- }
127
- return `let content = new StringContent("""${prettyJson}""", Encoding.UTF8, "application/json")
128
- `;
161
+ let prettyJson;
162
+ try {
163
+ prettyJson = JSON.stringify(JSON.parse(postData.text ?? '{}'), null, 2);
164
+ }
165
+ catch {
166
+ // If JSON parsing fails, use the raw text as-is
167
+ prettyJson = postData.text ?? '{}';
168
+ }
169
+ return `let content = new StringContent("""${prettyJson}""", Encoding.UTF8, "application/json")\n`;
129
170
  }
171
+ /**
172
+ * Generates code for application/x-www-form-urlencoded content
173
+ */
130
174
  function generateUrlEncodedFormDataCode(postData) {
131
- let code = "let formUrlEncodedContentDictionary = new Dictionary<string, string>()\n";
132
- for (const param of postData.params) {
133
- code += `formUrlEncodedContentDictionary.Add("${escapeString(param.name ?? "")}", "${escapeString(param.value ?? "")}")
134
- `;
135
- }
136
- code += "let content = new FormUrlEncodedContent(formUrlEncodedContentDictionary)\n";
137
- return code;
175
+ let code = 'let formUrlEncodedContentDictionary = new Dictionary<string, string>()\n';
176
+ for (const param of postData.params) {
177
+ code += `formUrlEncodedContentDictionary.Add("${escapeString(param.name ?? '')}", "${escapeString(param.value ?? '')}")\n`;
178
+ }
179
+ code += 'let content = new FormUrlEncodedContent(formUrlEncodedContentDictionary)\n';
180
+ return code;
138
181
  }
182
+ /**
183
+ * Escapes special characters for F# string literals
184
+ */
139
185
  function escapeString(str) {
140
- if (str == null) {
141
- return "";
142
- }
143
- return str.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");
186
+ if (str == null) {
187
+ return '';
188
+ }
189
+ return str
190
+ .replace(/\\/g, '\\\\') // Escape backslashes
191
+ .replace(/"/g, '\\"') // Escape double quotes
192
+ .replace(/\n/g, '\\n') // Escape newlines
193
+ .replace(/\r/g, '\\r') // Escape carriage returns
194
+ .replace(/\t/g, '\\t'); // Escape tabs
144
195
  }
145
- export {
146
- fsharpHttpclient
147
- };
148
- //# sourceMappingURL=httpclient.js.map
@@ -1,5 +1 @@
1
- import { fsharpHttpclient } from "./httpclient.js";
2
- export {
3
- fsharpHttpclient
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { fsharpHttpclient } from './httpclient.js';
@@ -1,5 +1 @@
1
- import { goNative } from "./native.js";
2
- export {
3
- goNative
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { goNative } from './native.js';
@@ -1,14 +1,14 @@
1
- import { native } from "../../../httpsnippet-lite/targets/go/native/client.js";
2
- import { convertWithHttpSnippetLite } from "../../../utils/convertWithHttpSnippetLite.js";
3
- const goNative = {
4
- target: "go",
5
- client: "native",
6
- title: "NewRequest",
7
- generate(request) {
8
- return convertWithHttpSnippetLite(native, request);
9
- }
1
+ import { native } from '../../../httpsnippet-lite/targets/go/native/client.js';
2
+ import { convertWithHttpSnippetLite } from '../../../utils/convertWithHttpSnippetLite.js';
3
+ /**
4
+ * go/native
5
+ */
6
+ export const goNative = {
7
+ target: 'go',
8
+ client: 'native',
9
+ title: 'NewRequest',
10
+ generate(request) {
11
+ // TODO: Write an own converter
12
+ return convertWithHttpSnippetLite(native, request);
13
+ },
10
14
  };
11
- export {
12
- goNative
13
- };
14
- //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http11.d.ts","sourceRoot":"","sources":["../../../../src/plugins/http/http11/http11.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAoHxB,CAAA"}
1
+ {"version":3,"file":"http11.d.ts","sourceRoot":"","sources":["../../../../src/plugins/http/http11/http11.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAsHxB,CAAA"}
@@ -1,86 +1,105 @@
1
- const httpHttp11 = {
2
- target: "http",
3
- client: "http1.1",
4
- title: "HTTP/1.1",
5
- generate(request) {
6
- const normalizedRequest = {
7
- method: "GET",
8
- headers: [],
9
- queryString: [],
10
- ...request
11
- };
12
- normalizedRequest.method = normalizedRequest.method.toUpperCase();
13
- let url;
14
- let path;
15
- try {
16
- url = new URL(normalizedRequest.url || "http://");
17
- path = url.pathname + (url.search || "");
18
- } catch (_error) {
19
- path = normalizedRequest.url || "/";
20
- }
21
- const hostname = url?.hostname || "UNKNOWN_HOSTNAME";
22
- let requestString = `${normalizedRequest.method} ${path} HTTP/1.1\r
23
- `;
24
- if (normalizedRequest.queryString.length) {
25
- const queryString = normalizedRequest.queryString.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`).join("&");
26
- requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r
27
- `;
28
- }
29
- const headers = /* @__PURE__ */ new Map();
30
- headers.set("Host", hostname);
31
- normalizedRequest.headers.forEach((header) => {
32
- if (headers.has(header.name)) {
33
- headers.set(header.name, `${headers.get(header.name)}, ${header.value}`);
34
- } else {
35
- headers.set(header.name, header.value);
36
- }
37
- });
38
- if (normalizedRequest.queryString.length) {
39
- const queryString = normalizedRequest.queryString.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`).join("&");
40
- requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r
41
- `;
42
- }
43
- let body = "";
44
- if (normalizedRequest.postData) {
45
- if (normalizedRequest.postData.mimeType === "application/json" && normalizedRequest.postData.text) {
46
- headers.set("Content-Type", "application/json");
47
- body = normalizedRequest.postData.text;
48
- } else if (normalizedRequest.postData.mimeType === "application/octet-stream" && normalizedRequest.postData.text) {
49
- headers.set("Content-Type", "application/octet-stream");
50
- body = normalizedRequest.postData.text;
51
- } else if (normalizedRequest.postData.mimeType === "application/x-www-form-urlencoded" && normalizedRequest.postData.params) {
52
- const formData = normalizedRequest.postData.params.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value ?? "")}`).join("&");
53
- headers.set("Content-Type", "application/x-www-form-urlencoded");
54
- body = formData;
55
- } else if (normalizedRequest.postData.mimeType === "multipart/form-data" && normalizedRequest.postData.params) {
56
- const boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
57
- headers.set("Content-Type", `multipart/form-data; boundary=${boundary}`);
58
- body = normalizedRequest.postData.params.map((param) => {
59
- if (param.fileName) {
60
- return `--${boundary}\r
61
- Content-Disposition: form-data; name="${param.name}"; filename="${param.fileName}"\r
62
- \r
63
- `;
64
- }
65
- return `--${boundary}\r
66
- Content-Disposition: form-data; name="${param.name}"\r
67
- \r
68
- ${param.value}\r
69
- `;
70
- }).join("") + `--${boundary}--\r
71
- `;
72
- }
73
- }
74
- headers.forEach((value, name) => {
75
- requestString += `${name}: ${value}\r
76
- `;
77
- });
78
- requestString += `\r
79
- ${body}`;
80
- return requestString;
81
- }
1
+ /**
2
+ * http/http1.1
3
+ */
4
+ export const httpHttp11 = {
5
+ target: 'http',
6
+ client: 'http1.1',
7
+ title: 'HTTP/1.1',
8
+ generate(request) {
9
+ // Defaults
10
+ const normalizedRequest = {
11
+ method: 'GET',
12
+ headers: [],
13
+ queryString: [],
14
+ ...request,
15
+ };
16
+ // Normalize method
17
+ normalizedRequest.method = normalizedRequest.method.toUpperCase();
18
+ // Parse URL with error handling
19
+ let url;
20
+ let path;
21
+ try {
22
+ url = new URL(normalizedRequest.url || 'http://');
23
+ path = url.pathname + (url.search || '');
24
+ }
25
+ catch (_error) {
26
+ // Oops, got an invalid URL, use the provided URL directly.
27
+ path = normalizedRequest.url || '/';
28
+ }
29
+ const hostname = url?.hostname || 'UNKNOWN_HOSTNAME';
30
+ // Start building the request
31
+ let requestString = `${normalizedRequest.method} ${path} HTTP/1.1\r\n`;
32
+ // Handle query string parameters
33
+ if (normalizedRequest.queryString.length) {
34
+ const queryString = normalizedRequest.queryString
35
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)
36
+ .join('&');
37
+ // Append query string to the path
38
+ requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r\n`;
39
+ }
40
+ // Store all headers
41
+ const headers = new Map();
42
+ // Host header
43
+ headers.set('Host', hostname);
44
+ // Passed headers
45
+ normalizedRequest.headers.forEach((header) => {
46
+ if (headers.has(header.name)) {
47
+ headers.set(header.name, `${headers.get(header.name)}, ${header.value}`);
48
+ }
49
+ else {
50
+ headers.set(header.name, header.value);
51
+ }
52
+ });
53
+ // Query string parameters
54
+ if (normalizedRequest.queryString.length) {
55
+ const queryString = normalizedRequest.queryString
56
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)
57
+ .join('&');
58
+ // Append query string to the path
59
+ requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r\n`;
60
+ }
61
+ // Request body
62
+ let body = '';
63
+ if (normalizedRequest.postData) {
64
+ // Always set the Content-Type header based on postData.mimeType
65
+ if (normalizedRequest.postData.mimeType === 'application/json' && normalizedRequest.postData.text) {
66
+ headers.set('Content-Type', 'application/json');
67
+ body = normalizedRequest.postData.text;
68
+ }
69
+ else if (normalizedRequest.postData.mimeType === 'application/octet-stream' &&
70
+ normalizedRequest.postData.text) {
71
+ headers.set('Content-Type', 'application/octet-stream');
72
+ body = normalizedRequest.postData.text;
73
+ }
74
+ else if (normalizedRequest.postData.mimeType === 'application/x-www-form-urlencoded' &&
75
+ normalizedRequest.postData.params) {
76
+ const formData = normalizedRequest.postData.params
77
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value ?? '')}`)
78
+ .join('&');
79
+ headers.set('Content-Type', 'application/x-www-form-urlencoded');
80
+ body = formData;
81
+ }
82
+ else if (normalizedRequest.postData.mimeType === 'multipart/form-data' && normalizedRequest.postData.params) {
83
+ const boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW';
84
+ headers.set('Content-Type', `multipart/form-data; boundary=${boundary}`);
85
+ body =
86
+ normalizedRequest.postData.params
87
+ .map((param) => {
88
+ const contentTypeHeader = param.contentType ? `Content-Type: ${param.contentType}\r\n` : '';
89
+ if (param.fileName) {
90
+ return `--${boundary}\r\nContent-Disposition: form-data; name="${param.name}"; filename="${param.fileName}"\r\n${contentTypeHeader}\r\n`;
91
+ }
92
+ return `--${boundary}\r\nContent-Disposition: form-data; name="${param.name}"\r\n${contentTypeHeader}\r\n${param.value ?? ''}\r\n`;
93
+ })
94
+ .join('') + `--${boundary}--\r\n`;
95
+ }
96
+ }
97
+ // Add headers to requestString
98
+ headers.forEach((value, name) => {
99
+ requestString += `${name}: ${value}\r\n`;
100
+ });
101
+ // Add body to requestString
102
+ requestString += `\r\n${body}`;
103
+ return requestString;
104
+ },
82
105
  };
83
- export {
84
- httpHttp11
85
- };
86
- //# sourceMappingURL=http11.js.map
@@ -1,5 +1 @@
1
- import { httpHttp11 } from "./http11.js";
2
- export {
3
- httpHttp11
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { httpHttp11 } from './http11.js';
@@ -1,14 +1,14 @@
1
- import { asynchttp } from "../../../httpsnippet-lite/targets/java/asynchttp/client.js";
2
- import { convertWithHttpSnippetLite } from "../../../utils/convertWithHttpSnippetLite.js";
3
- const javaAsynchttp = {
4
- target: "java",
5
- client: "asynchttp",
6
- title: "AsyncHttp",
7
- generate(request) {
8
- return convertWithHttpSnippetLite(asynchttp, request);
9
- }
1
+ import { asynchttp } from '../../../httpsnippet-lite/targets/java/asynchttp/client.js';
2
+ import { convertWithHttpSnippetLite } from '../../../utils/convertWithHttpSnippetLite.js';
3
+ /**
4
+ * java/asynchttp
5
+ */
6
+ export const javaAsynchttp = {
7
+ target: 'java',
8
+ client: 'asynchttp',
9
+ title: 'AsyncHttp',
10
+ generate(request) {
11
+ // TODO: Write an own converter
12
+ return convertWithHttpSnippetLite(asynchttp, request);
13
+ },
10
14
  };
11
- export {
12
- javaAsynchttp
13
- };
14
- //# sourceMappingURL=asynchttp.js.map
@@ -1,5 +1 @@
1
- import { javaAsynchttp } from "./asynchttp.js";
2
- export {
3
- javaAsynchttp
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { javaAsynchttp } from './asynchttp.js';
@@ -1,5 +1 @@
1
- import { javaNethttp } from "./nethttp.js";
2
- export {
3
- javaNethttp
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { javaNethttp } from './nethttp.js';