Skip to content

Commit

Permalink
[typescript-axios] Fix multipart with file array (#7814)
Browse files Browse the repository at this point in the history
* Force isCollectionFormatMulti in case of binary/file

* Manage multipartFormData in isCollectionFormatMulti

* Update petstore

Co-authored-by: Julien Herr <julien@nabu.io>
  • Loading branch information
juherr and juherr committed Oct 27, 2020
1 parent 4860eb6 commit 5d27799
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,14 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
operations.stream()
.filter(op -> op.hasConsumes)
.filter(op -> op.consumes.stream().anyMatch(opc -> opc.values().stream().anyMatch("multipart/form-data"::equals)))
.forEach(op -> op.vendorExtensions.putIfAbsent("multipartFormData", true));
.forEach(op -> {
op.vendorExtensions.putIfAbsent("multipartFormData", true);
op.allParams.stream()
.filter(param -> param.isFormParam)
.filter(param -> param.isArray)
.filter(param -> param.dataFormat.equals("binary"))
.forEach(param -> param.isCollectionFormatMulti = true);
});
return objs;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,18 +161,17 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
if ({{paramName}}) {
{{#isCollectionFormatMulti}}
{{paramName}}.forEach((element) => {
localVarFormParams.append('{{baseName}}', element as any);
localVarFormParams.{{#multipartFormData}}append{{/multipartFormData}}{{^multipartFormData}}set{{/multipartFormData}}('{{baseName}}', element as any);
})
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}{{^multipartFormData}}
localVarFormParams.set('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS.{{collectionFormat}}));{{/multipartFormData}}{{#multipartFormData}}
localVarFormParams.append('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS.{{collectionFormat}}));{{/multipartFormData}}
{{^isCollectionFormatMulti}}
localVarFormParams.{{#multipartFormData}}append{{/multipartFormData}}{{^multipartFormData}}set{{/multipartFormData}}({{paramName}}.join(COLLECTION_FORMATS.{{collectionFormat}});
{{/isCollectionFormatMulti}}
}{{/isArray}}
}
{{/isArray}}
{{^isArray}}
if ({{paramName}} !== undefined) { {{^multipartFormData}}
localVarFormParams.set('{{baseName}}', {{paramName}} as any);{{/multipartFormData}}{{#multipartFormData}}
localVarFormParams.append('{{baseName}}', {{paramName}} as any);{{/multipartFormData}}
if ({{paramName}} !== undefined) {
localVarFormParams.{{#multipartFormData}}append{{/multipartFormData}}{{^multipartFormData}}set{{/multipartFormData}}('{{baseName}}', {{paramName}} as any);
}
{{/isArray}}
{{/formParams}}{{/vendorExtensions}}
Expand Down
12 changes: 4 additions & 8 deletions samples/client/petstore/typescript-axios/builds/default/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -617,12 +617,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -683,12 +681,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -617,12 +617,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -683,12 +681,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -666,12 +666,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -732,12 +730,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -617,12 +617,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -683,12 +681,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,12 +393,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -459,12 +457,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -617,12 +617,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -683,12 +681,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -617,12 +617,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (name !== undefined) {
if (name !== undefined) {
localVarFormParams.set('name', name as any);
}

if (status !== undefined) {
if (status !== undefined) {
localVarFormParams.set('status', status as any);
}

Expand Down Expand Up @@ -683,12 +681,10 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration)
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}


if (additionalMetadata !== undefined) {
if (additionalMetadata !== undefined) {
localVarFormParams.append('additionalMetadata', additionalMetadata as any);
}

if (file !== undefined) {
if (file !== undefined) {
localVarFormParams.append('file', file as any);
}

Expand Down

0 comments on commit 5d27799

Please sign in to comment.