forked from albertodeago/curl-generator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbody.ts
More file actions
55 lines (50 loc) · 1.85 KB
/
body.ts
File metadata and controls
55 lines (50 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { CurlFileBody, fileBodyToCommand, fileBodyToString, isCurlFileBody } from "./file-body";
import { CurlRawBody, isCurlRawBody, rawBodyToCommand, rawBodyToString } from "./raw-body";
import { CurlJsonBody, isCurlJsonBody, jsonBodyToCommand, jsonBodyToString, jsonContentToString } from "./json-body";
import { CurlFormBody, formBodyToCommand, formBodyToString, isCurlFormBody } from "./form-body";
export type CurlBody =
// Raw string, same as type: "raw"
| string
// JSON object, same as type: "json"
| Record<string | number | symbol, unknown>
| URLSearchParams
| CurlFileBody
| CurlRawBody
| CurlJsonBody
| CurlFormBody;
export function bodyToString(body: CurlBody): string {
if (typeof body === "string") {
return body;
} else if (body instanceof URLSearchParams) {
return body.toString();
} else if (isCurlFileBody(body)) {
return fileBodyToString(body);
} else if (isCurlRawBody(body)) {
return rawBodyToString(body);
} else if (isCurlJsonBody(body)) {
return jsonBodyToString(body);
} else if (isCurlFormBody(body)) {
return formBodyToString(body);
} else if (typeof body === "object") {
return jsonContentToString(body);
}
throw new Error(`Invalid body type: ${body}`);
}
export function bodyToCommand(body: CurlBody): string {
if (typeof body === "string") {
return `-d '${body}'`;
} else if (body instanceof URLSearchParams) {
return `-d '${body.toString()}'`;
} else if (isCurlFileBody(body)) {
return fileBodyToCommand(body);
} else if (isCurlRawBody(body)) {
return rawBodyToCommand(body);
} else if (isCurlJsonBody(body)) {
return jsonBodyToCommand(body);
} else if (isCurlFormBody(body)) {
return formBodyToCommand(body);
} else if (typeof body === "object") {
return `-d '${jsonContentToString(body)}'`;
}
throw new Error(`Invalid body type: ${body}`);
}