Skip to content

Commit 12c46cf

Browse files
committed
- Fixed reusable request body issue ferdikoomen#359
1 parent e0c2b79 commit 12c46cf

File tree

4 files changed

+45
-41
lines changed

4 files changed

+45
-41
lines changed

src/openApi/v2/parser/getOperationParameters.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,41 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
1919

2020
// Iterate over the parameters
2121
parameters.forEach(parameterOrReference => {
22-
const parameter = getRef<OpenApiParameter>(openApi, parameterOrReference);
23-
const param = getOperationParameter(openApi, parameter);
22+
const parameterDef = getRef<OpenApiParameter>(openApi, parameterOrReference);
23+
const parameter = getOperationParameter(openApi, parameterDef);
2424

2525
// We ignore the "api-version" param, since we do not want to add this
2626
// as the first / default parameter for each of the service calls.
27-
if (param.prop !== 'api-version') {
27+
if (parameter.prop !== 'api-version') {
2828
switch (parameter.in) {
2929
case 'path':
30-
operationParameters.parametersPath.push(param);
31-
operationParameters.parameters.push(param);
32-
operationParameters.imports.push(...param.imports);
30+
operationParameters.parametersPath.push(parameter);
31+
operationParameters.parameters.push(parameter);
32+
operationParameters.imports.push(...parameter.imports);
3333
break;
3434

3535
case 'query':
36-
operationParameters.parametersQuery.push(param);
37-
operationParameters.parameters.push(param);
38-
operationParameters.imports.push(...param.imports);
36+
operationParameters.parametersQuery.push(parameter);
37+
operationParameters.parameters.push(parameter);
38+
operationParameters.imports.push(...parameter.imports);
3939
break;
4040

4141
case 'header':
42-
operationParameters.parametersHeader.push(param);
43-
operationParameters.parameters.push(param);
44-
operationParameters.imports.push(...param.imports);
42+
operationParameters.parametersHeader.push(parameter);
43+
operationParameters.parameters.push(parameter);
44+
operationParameters.imports.push(...parameter.imports);
4545
break;
4646

4747
case 'formData':
48-
operationParameters.parametersForm.push(param);
49-
operationParameters.parameters.push(param);
50-
operationParameters.imports.push(...param.imports);
48+
operationParameters.parametersForm.push(parameter);
49+
operationParameters.parameters.push(parameter);
50+
operationParameters.imports.push(...parameter.imports);
5151
break;
5252

5353
case 'body':
54-
operationParameters.parametersBody = param;
55-
operationParameters.parameters.push(param);
56-
operationParameters.imports.push(...param.imports);
54+
operationParameters.parametersBody = parameter;
55+
operationParameters.parameters.push(parameter);
56+
operationParameters.imports.push(...parameter.imports);
5757
break;
5858
}
5959
}

src/openApi/v3/parser/getOperation.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Operation } from '../../../client/interfaces/Operation';
22
import { OperationParameters } from '../../../client/interfaces/OperationParameters';
33
import { OpenApi } from '../interfaces/OpenApi';
44
import { OpenApiOperation } from '../interfaces/OpenApiOperation';
5+
import { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';
56
import { getComment } from './getComment';
67
import { getOperationErrors } from './getOperationErrors';
78
import { getOperationName } from './getOperationName';
@@ -11,6 +12,7 @@ import { getOperationRequestBody } from './getOperationRequestBody';
1112
import { getOperationResponseHeader } from './getOperationResponseHeader';
1213
import { getOperationResponses } from './getOperationResponses';
1314
import { getOperationResults } from './getOperationResults';
15+
import { getRef } from './getRef';
1416
import { getServiceClassName } from './getServiceClassName';
1517
import { sortByRequired } from './sortByRequired';
1618

@@ -57,7 +59,8 @@ export function getOperation(openApi: OpenApi, url: string, method: string, op:
5759
}
5860

5961
if (op.requestBody) {
60-
const requestBody = getOperationRequestBody(openApi, op.requestBody);
62+
const requestBodyDef = getRef<OpenApiRequestBody>(openApi, op.requestBody);
63+
const requestBody = getOperationRequestBody(openApi, requestBodyDef);
6164
operation.imports.push(...requestBody.imports);
6265
operation.parameters.push(requestBody);
6366
operation.parameters = operation.parameters.sort(sortByRequired);

src/openApi/v3/parser/getOperationParameters.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,46 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
1414
parametersForm: [],
1515
parametersCookie: [],
1616
parametersHeader: [],
17-
parametersBody: null,
17+
parametersBody: null, // Not used in V3 -> @see requestBody
1818
};
1919

2020
// Iterate over the parameters
2121
parameters.forEach(parameterOrReference => {
22-
const parameter = getRef<OpenApiParameter>(openApi, parameterOrReference);
23-
const param = getOperationParameter(openApi, parameter);
22+
const parameterDef = getRef<OpenApiParameter>(openApi, parameterOrReference);
23+
const parameter = getOperationParameter(openApi, parameterDef);
2424

2525
// We ignore the "api-version" param, since we do not want to add this
2626
// as the first / default parameter for each of the service calls.
27-
if (param.prop !== 'api-version') {
28-
switch (parameter.in) {
27+
if (parameter.prop !== 'api-version') {
28+
switch (parameterDef.in) {
2929
case 'path':
30-
operationParameters.parametersPath.push(param);
31-
operationParameters.parameters.push(param);
32-
operationParameters.imports.push(...param.imports);
30+
operationParameters.parametersPath.push(parameter);
31+
operationParameters.parameters.push(parameter);
32+
operationParameters.imports.push(...parameter.imports);
3333
break;
3434

3535
case 'query':
36-
operationParameters.parametersQuery.push(param);
37-
operationParameters.parameters.push(param);
38-
operationParameters.imports.push(...param.imports);
36+
operationParameters.parametersQuery.push(parameter);
37+
operationParameters.parameters.push(parameter);
38+
operationParameters.imports.push(...parameter.imports);
3939
break;
4040

4141
case 'formData':
42-
operationParameters.parametersForm.push(param);
43-
operationParameters.parameters.push(param);
44-
operationParameters.imports.push(...param.imports);
42+
operationParameters.parametersForm.push(parameter);
43+
operationParameters.parameters.push(parameter);
44+
operationParameters.imports.push(...parameter.imports);
4545
break;
4646

4747
case 'cookie':
48-
operationParameters.parametersCookie.push(param);
49-
operationParameters.parameters.push(param);
50-
operationParameters.imports.push(...param.imports);
48+
operationParameters.parametersCookie.push(parameter);
49+
operationParameters.parameters.push(parameter);
50+
operationParameters.imports.push(...parameter.imports);
5151
break;
5252

5353
case 'header':
54-
operationParameters.parametersHeader.push(param);
55-
operationParameters.parameters.push(param);
56-
operationParameters.imports.push(...param.imports);
54+
operationParameters.parametersHeader.push(parameter);
55+
operationParameters.parameters.push(parameter);
56+
operationParameters.imports.push(...parameter.imports);
5757
break;
5858
}
5959
}

test/__snapshots__/index.spec.js.snap

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4937,18 +4937,19 @@ exports[`v3 should generate: ./test/result/v3/services/RequestBodyService.ts 1`]
49374937
/* tslint:disable */
49384938
/* eslint-disable */
49394939

4940+
import { ModelWithString } from '../models/ModelWithString';
49404941
import { catchGenericError } from '../core/ApiError';
49414942
import { request as __request } from '../core/request';
49424943
import { OpenAPI } from '../core/OpenAPI';
49434944

49444945
export class RequestBodyService {
49454946

49464947
/**
4947-
* @param requestBody
4948+
* @param requestBody A reusable request body
49484949
* @throws ApiError
49494950
*/
49504951
public static async postRequestBodyService(
4951-
requestBody?: any,
4952+
requestBody?: ModelWithString,
49524953
): Promise<void> {
49534954

49544955
const result = await __request({

0 commit comments

Comments
 (0)