@@ -185,6 +185,17 @@ function fromSdkHttpOperationParameter(
185
185
const parameterType = fromSdkType ( p . type , sdkContext , typeMap ) ;
186
186
const format = p . kind === "header" || p . kind === "query" ? p . collectionFormat : undefined ;
187
187
const serializedName = p . kind !== "body" ? p . serializedName : p . name ;
188
+ let explode = false ;
189
+
190
+ // TO-DO: In addition to checking if a path parameter is exploded, we should consider capturing the style for
191
+ // any path expansion to ensure the parameter values are delimited correctly during serialization.
192
+ if ( parameterType . kind === "array" || parameterType . kind === "dict" ) {
193
+ if ( format === "multi" ) {
194
+ explode = true ;
195
+ } else if ( isExplodedSdkQueryParameter ( p ) || isExplodedSdkPathParameter ( p ) ) {
196
+ explode = true ;
197
+ }
198
+ }
188
199
189
200
return {
190
201
Name : p . name ,
@@ -196,7 +207,7 @@ function fromSdkHttpOperationParameter(
196
207
p . name . toLocaleLowerCase ( ) === "apiversion" || p . name . toLocaleLowerCase ( ) === "api-version" ,
197
208
IsContentType : isContentType ,
198
209
IsEndpoint : false ,
199
- Explode : parameterType . kind === "array" && format === "multi" ? true : false ,
210
+ Explode : explode ,
200
211
ArraySerializationDelimiter : format ? collectionFormatToDelimMap [ format ] : undefined ,
201
212
IsRequired : ! p . optional ,
202
213
Kind : getParameterKind ( p , parameterType , rootApiVersions . length > 0 ) ,
@@ -418,3 +429,11 @@ function normalizeHeaderName(name: string): string {
418
429
return name ;
419
430
}
420
431
}
432
+
433
+ function isExplodedSdkQueryParameter ( p : any ) : p is SdkQueryParameter {
434
+ return ( p as SdkQueryParameter ) . explode === true && ( p as SdkQueryParameter ) . kind === "query" ;
435
+ }
436
+
437
+ function isExplodedSdkPathParameter ( p : any ) : p is SdkPathParameter {
438
+ return ( p as SdkPathParameter ) . explode === true && ( p as SdkPathParameter ) . kind === "path" ;
439
+ }
0 commit comments