Skip to content

Commit 0ac02c2

Browse files
committed
fix(parse): form-data of openapi v3
1 parent 7e962f3 commit 0ac02c2

File tree

8 files changed

+18
-8
lines changed

8 files changed

+18
-8
lines changed

src/client/interfaces/OperationParameters.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ export interface OperationParameters {
99
parametersCookie: OperationParameter[];
1010
parametersHeader: OperationParameter[];
1111
parametersBody: OperationParameter | null;
12+
parametersFormData: OperationParameter | null; // only for V3
1213
}

src/openApi/v2/parser/getOperation.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export function getOperation(openApi: OpenApi, url: string, method: string, op:
3535
parametersHeader: [...pathParams.parametersHeader],
3636
parametersCookie: [...pathParams.parametersCookie],
3737
parametersBody: pathParams.parametersBody,
38+
parametersFormData: null, // should not be touched in V2
3839
imports: [],
3940
errors: [],
4041
results: [],

src/openApi/v2/parser/getOperationParameters.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
1515
parametersCookie: [],
1616
parametersHeader: [],
1717
parametersBody: null,
18+
parametersFormData: null,
1819
};
1920

2021
// Iterate over the parameters

src/openApi/v3/interfaces/OpenApiParameter.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { OpenApiSchema } from './OpenApiSchema';
88
*/
99
export interface OpenApiParameter extends OpenApiReference {
1010
name: string;
11-
in: 'path' | 'query' | 'header' | 'formData' | 'cookie';
11+
in: 'path' | 'query' | 'header' | 'cookie';
1212
description?: string;
1313
required?: boolean;
1414
nullable?: boolean;

src/openApi/v3/parser/getContent.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,8 @@ export function getContent(openApi: OpenApi, content: Dictionary<OpenApiMediaTyp
2626
) || (
2727
content['multipart/batch'] &&
2828
content['multipart/batch'].schema
29+
) || (
30+
content['multipart/form-data'] &&
31+
content['multipart/form-data'].schema
2932
) || null;
3033
}

src/openApi/v3/parser/getOperation.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export function getOperation(openApi: OpenApi, url: string, method: string, op:
3939
parametersHeader: [...pathParams.parametersHeader],
4040
parametersCookie: [...pathParams.parametersCookie],
4141
parametersBody: pathParams.parametersBody,
42+
parametersFormData: pathParams.parametersFormData,
4243
imports: [],
4344
errors: [],
4445
results: [],
@@ -65,7 +66,12 @@ export function getOperation(openApi: OpenApi, url: string, method: string, op:
6566
operation.imports.push(...requestBody.imports);
6667
operation.parameters.push(requestBody);
6768
operation.parameters = operation.parameters.sort(sortByRequired);
68-
operation.parametersBody = requestBody;
69+
70+
if (op.requestBody.content['multipart/form-data']) {
71+
operation.parametersFormData = requestBody;
72+
} else {
73+
operation.parametersBody = requestBody;
74+
}
6975
}
7076

7177
// Parse the operation responses.

src/openApi/v3/parser/getOperationParameters.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
1515
parametersCookie: [],
1616
parametersHeader: [],
1717
parametersBody: null, // Not used in V3 -> @see requestBody
18+
parametersFormData: null,
1819
};
1920

2021
// Iterate over the parameters
@@ -38,12 +39,6 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
3839
operationParameters.imports.push(...parameter.imports);
3940
break;
4041

41-
case 'formData':
42-
operationParameters.parametersForm.push(parameter);
43-
operationParameters.parameters.push(parameter);
44-
operationParameters.imports.push(...parameter.imports);
45-
break;
46-
4742
case 'cookie':
4843
operationParameters.parametersCookie.push(parameter);
4944
operationParameters.parameters.push(parameter);

src/templates/exportService.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ export class {{{name}}} {
6767
{{/each}}
6868
},
6969
{{/if}}
70+
{{#if parametersFormData}}
71+
formData: {{{parametersFormData.name}}},
72+
{{/if}}
7073
{{#if parametersBody}}
7174
body: {{{parametersBody.name}}},
7275
{{#if parametersBody.mediaType}}

0 commit comments

Comments
 (0)