-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpathparams.ts
79 lines (67 loc) · 2.05 KB
/
pathparams.ts
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import {
ParamDecorator,
isBooleanRecord,
isEmpty,
isNumberRecord,
isStringRecord,
parseParamDecorator,
valToString,
} from "./utils";
export const ppMetadataKey = "pathParam";
export function getSimplePathParams(
paramName: string,
paramValue: any,
explode: boolean,
): Map<string, string> {
const pathParams: Map<string, string> = new Map<string, string>();
const ppVals: string[] = [];
if (Array.isArray(paramValue)) {
paramValue.forEach((param) => {
ppVals.push(encodeURIComponent(valToString(param)));
});
pathParams.set(paramName, ppVals.join(","));
} else if (
isStringRecord(paramValue) ||
isNumberRecord(paramValue) ||
isBooleanRecord(paramValue)
) {
Object.getOwnPropertyNames(paramValue).forEach((paramKey: string) => {
const paramFieldValue = encodeURIComponent(
valToString(paramValue[paramKey]),
);
if (explode) ppVals.push(`${paramKey}=${paramFieldValue}`);
else ppVals.push(`${paramKey},${paramFieldValue}`);
});
pathParams.set(paramName, ppVals.join(","));
} else if (paramValue instanceof Object) {
Object.getOwnPropertyNames(paramValue).forEach((paramKey: string) => {
const ppAnn: string = Reflect.getMetadata(
ppMetadataKey,
paramValue,
paramKey,
);
if (ppAnn == null) return;
const ppDecorator: ParamDecorator = parseParamDecorator(
ppAnn,
paramKey,
"simple",
explode,
);
if (ppDecorator == null) return;
const paramFieldValue = encodeURIComponent(
valToString(paramValue[paramKey]),
);
if (isEmpty(paramFieldValue)) return;
else if (explode)
ppVals.push(`${ppDecorator.ParamName}=${paramFieldValue}`);
else ppVals.push(`${ppDecorator.ParamName},${paramFieldValue}`);
});
pathParams.set(paramName, ppVals.join(","));
} else {
pathParams.set(paramName, encodeURIComponent(valToString(paramValue)));
}
return pathParams;
}