Skip to content

Commit 1f9dab3

Browse files
dramoturgsutarmin
authored andcommitted
feat: filter operations response
1 parent 409e3ad commit 1f9dab3

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

src/language/typescript/2.0/serializers/operation-object.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,12 @@ export const serializeOperationObject = combineReader(
234234
const parameters = getParameters(from, operation, pathItem);
235235
const operationName = getOperationName(url, operation, method);
236236

237-
const serializedResponses = serializeOperationResponses(from, operation.responses);
237+
const isSuccessResponse = (code: string) => {
238+
const status = parseInt(code, 10);
239+
return status >= 200 && status < 300;
240+
};
241+
242+
const serializedResponses = serializeOperationResponses(from, operation.responses, isSuccessResponse);
238243

239244
const deprecated = pipe(
240245
operation.deprecated,

src/language/typescript/2.0/serializers/responses-object.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,16 @@ import { fromString, Ref } from '../../../../utils/ref';
1818
import { ReferenceObjectCodec } from '../../../../schema/3.0/reference-object';
1919
import { some } from 'fp-ts/lib/Option';
2020

21-
export const serializeOperationResponses = (from: Ref, responses: ResponsesObject): Either<Error, SerializedType> =>
21+
export const serializeOperationResponses = (
22+
from: Ref,
23+
responses: ResponsesObject,
24+
filter: (code: string) => boolean = () => true,
25+
): Either<Error, SerializedType> =>
2226
pipe(
2327
responses,
28+
record.filterWithIndex(code => {
29+
return filter(code);
30+
}),
2431
record.collect((code, response) => {
2532
if (ReferenceObjectCodec.is(response)) {
2633
return pipe(fromString(response.$ref), either.map(getSerializedRefType(from)), some);

test/specs/2.0/json/common.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@
66
},
77
"paths": {},
88
"definitions": {
9+
"ErrorResponse":{
10+
"type":"object",
11+
"properties":{
12+
"message":{"type":"string"},
13+
"status":{
14+
"type":"integer",
15+
"format":"int32"
16+
}
17+
},
18+
"title":"ErrorResponse"
19+
},
920
"Order": {
1021
"type": "object",
1122
"properties": {

test/specs/2.0/json/swagger.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,20 @@
112112
}
113113
],
114114
"responses": {
115-
"400": {
116-
"description": "Invalid ID supplied"
115+
"200": {
116+
"description": "successful operation",
117+
"schema": {
118+
"type": "array",
119+
"items": {
120+
"$ref": "./common.json#/definitions/Pet"
121+
}
122+
}
123+
},
124+
"400":{
125+
"description":"Bad Request",
126+
"schema":{
127+
"$ref": "./common.json#/definitions/ErrorResponse"
128+
}
117129
},
118130
"404": {
119131
"description": "Pet not found"

0 commit comments

Comments
 (0)