2
2
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
3
3
*/
4
4
5
- import { parseParamDecorator , populateFromGlobals , valToString } from "./utils" ;
5
+ import { ParamDecorator , parseParamDecorator , populateFromGlobals , valToString } from "./utils" ;
6
6
7
- import { requestMetadataKey } from "./requestbody" ;
8
- import { ParamDecorator } from "./utils" ;
7
+ import { requestMetadataKey } from "./requestbody" ;
9
8
10
9
export const qpMetadataKey = "queryParam" ;
11
10
const queryStringPrefix = "?" ;
@@ -34,7 +33,7 @@ export function serializeQueryParams(queryParams: any, globals?: any): string {
34
33
fname
35
34
) ;
36
35
37
- if ( ! qpAnn ) return { serialize : ( ) => "" } ;
36
+ if ( ! qpAnn ) return { serialize : ( ) => "" } ;
38
37
39
38
const qpDecorator : ParamDecorator = parseParamDecorator (
40
39
qpAnn ,
@@ -49,27 +48,38 @@ export function serializeQueryParams(queryParams: any, globals?: any): string {
49
48
value = populateFromGlobals ( value , fname , "queryParam" , globals ) ;
50
49
51
50
if ( qpDecorator . Serialization === "json" )
52
- queryStringParts . push ( jsonSerializer ( { [ qpDecorator . ParamName ] : value } ) ) ;
51
+ queryStringParts . push ( jsonSerializer ( { [ qpDecorator . ParamName ] : value } ) ) ;
53
52
else {
54
53
switch ( qpDecorator . Style ) {
55
54
case "deepObject" :
56
55
queryStringParts . push (
57
- deepObjectSerializer ( { [ qpDecorator . ParamName ] : value } )
56
+ deepObjectSerializer ( { [ qpDecorator . ParamName ] : value } )
58
57
) ;
59
58
return ;
60
59
case "form" :
61
60
if ( ! qpDecorator . Explode )
62
61
queryStringParts . push (
63
- formSerializer ( { [ qpDecorator . ParamName ] : value } )
62
+ noExplodeSerializer ( { [ qpDecorator . ParamName ] : value } )
64
63
) ;
65
64
else
66
65
queryStringParts . push (
67
- formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
66
+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
68
67
) ;
69
68
return ;
69
+ case "pipeDelimited" :
70
+ if ( ! qpDecorator . Explode ) {
71
+ queryStringParts . push (
72
+ noExplodeSerializer ( { [ qpDecorator . ParamName ] : value } , "|" )
73
+ ) ;
74
+ } else {
75
+ queryStringParts . push (
76
+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
77
+ ) ;
78
+ }
79
+ return ;
70
80
default :
71
81
queryStringParts . push (
72
- formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
82
+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
73
83
) ;
74
84
}
75
85
}
@@ -88,15 +98,15 @@ function jsonSerializer(params: Record<string, any>): string {
88
98
}
89
99
90
100
// TODO: Add support for disabling percent encoding for reserved characters
91
- function formSerializer ( params : Record < string , any > ) : string {
101
+ function noExplodeSerializer ( params : Record < string , any > , delimiter = "," ) : string {
92
102
const query : string [ ] = [ ] ;
93
103
94
104
Object . entries ( Object . assign ( { } , params ) ) . forEach ( ( [ key , value ] ) => {
95
105
if ( ! value ) return ;
96
106
if ( value !== Object ( value ) )
97
107
query . push ( `${ key } =${ encodeURIComponent ( valToString ( value ) ) } ` ) ;
98
108
else if ( Array . isArray ( value ) ) {
99
- const values : string = value . map ( ( aValue ) => aValue ) . join ( "," ) ;
109
+ const values : string = value . map ( ( aValue ) => aValue ) . join ( delimiter ) ;
100
110
101
111
query . push ( `${ key } =${ encodeURIComponent ( values ) } ` ) ;
102
112
} else {
0 commit comments