Skip to content

Commit b4d4040

Browse files
committed
Apply changes to v3 parser too, fix formatting, reject with error results (not successes)
1 parent c4337df commit b4d4040

File tree

4 files changed

+115
-248
lines changed

4 files changed

+115
-248
lines changed

src/openApi/v3/parser/getOperation.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { getOperationParameters } from './getOperationParameters';
99
import { getOperationRequestBody } from './getOperationRequestBody';
1010
import { getOperationResponseHeader } from './getOperationResponseHeader';
1111
import { getOperationResponses } from './getOperationResponses';
12-
import { getOperationResults } from './getOperationResults';
12+
import { getOperationErrorResults, getOperationResults } from './getOperationResults';
1313
import { getRef } from './getRef';
1414
import { getServiceName } from './getServiceName';
1515
import { sortByRequired } from './sortByRequired';
@@ -73,13 +73,19 @@ export const getOperation = (
7373
if (op.responses) {
7474
const operationResponses = getOperationResponses(openApi, op.responses);
7575
const operationResults = getOperationResults(operationResponses);
76+
const operationErrorResults = getOperationErrorResults(operationResponses);
7677
operation.errors = getOperationErrors(operationResponses);
7778
operation.responseHeader = getOperationResponseHeader(operationResults);
7879

7980
operationResults.forEach(operationResult => {
8081
operation.results.push(operationResult);
8182
operation.imports.push(...operationResult.imports);
8283
});
84+
85+
operationErrorResults.forEach(operationResult => {
86+
operation.errorResults.push(operationResult);
87+
operation.imports.push(...operationResult.imports);
88+
});
8389
}
8490

8591
operation.parameters = operation.parameters.sort(sortByRequired);

src/openApi/v3/parser/getOperationResults.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,41 @@ const areEqual = (a: Model, b: Model): boolean => {
99
return equal;
1010
};
1111

12+
export const getOperationErrorResults = (operationResponses: OperationResponse[]): OperationResponse[] => {
13+
const operationResults: OperationResponse[] = [];
14+
15+
operationResponses.forEach(operationResponse => {
16+
const { code } = operationResponse;
17+
if (code && (code === 204 || code < 200 || code >= 300)) {
18+
operationResults.push(operationResponse);
19+
}
20+
});
21+
22+
if (!operationResults.length) {
23+
operationResults.push({
24+
in: 'response',
25+
name: '',
26+
code: 0,
27+
description: '',
28+
export: 'generic',
29+
type: 'any',
30+
base: 'any',
31+
template: null,
32+
link: null,
33+
isDefinition: false,
34+
isReadOnly: false,
35+
isRequired: false,
36+
isNullable: false,
37+
imports: [],
38+
enum: [],
39+
enums: [],
40+
properties: [],
41+
});
42+
}
43+
44+
return operationResults;
45+
};
46+
1247
export const getOperationResults = (operationResponses: OperationResponse[]): OperationResponse[] => {
1348
const operationResults: OperationResponse[] = [];
1449

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
{{~#if errorResults~}}
2-
{{#each results}}ApiError<
3-
{{#equals code 0}}number{{else}}{{{code}}}{{/equals}},
4-
{{type}}
5-
>{{#unless @last}} | {{/unless}}{{/each}}
2+
{{#each errorResults}}ApiError<{{#equals code 0}}number{{else}}{{{code}}}{{/equals}}, {{type}}>{{#unless @last}} | {{/unless}}{{/each}}
63
{{~else~}}
74
ApiError<number, any>
85
{{~/if~}}

0 commit comments

Comments
 (0)