@@ -14,10 +14,11 @@ const extractPickedParameter = (parameter: OpenApi.Parameter): CodeGenerator.Pic
14
14
15
15
const extractResponseNamesByStatusCode = ( type : "success" | "error" , responses : { [ statusCode : string ] : OpenApi . Response } ) : string [ ] => {
16
16
const statusCodeList : string [ ] = [ ] ;
17
- Object . entries ( responses || { } ) . forEach ( ( [ statusCodeLike , response ] ) => {
17
+ for ( const [ statusCodeLike , response ] of Object . entries ( responses || { } ) ) {
18
+ const hasValidMediaType = Object . values ( response . content || { } ) . filter ( mediaType => Object . values ( mediaType ) . length > 0 ) . length > 0 ;
18
19
// ContentTypeの定義が存在しない場合はstatusCodeを読み取らない
19
- if ( Object . keys ( response . content || { } ) . length === 0 ) {
20
- return ;
20
+ if ( ! hasValidMediaType ) {
21
+ continue ;
21
22
}
22
23
if ( typeof statusCodeLike === "string" ) {
23
24
const statusCodeNumberValue = parseInt ( statusCodeLike , 10 ) ;
@@ -31,7 +32,7 @@ const extractResponseNamesByStatusCode = (type: "success" | "error", responses:
31
32
}
32
33
}
33
34
}
34
- } ) ;
35
+ }
35
36
return statusCodeList ;
36
37
} ;
37
38
@@ -46,11 +47,21 @@ const getRequestContentTypeList = (requestBody: OpenApi.RequestBody): string[] =
46
47
} ;
47
48
48
49
const getSuccessResponseContentTypeList = ( responses : { [ statusCode : string ] : OpenApi . Response } ) : string [ ] => {
49
- let contentTypeList : string [ ] = [ ] ;
50
- extractResponseNamesByStatusCode ( "success" , responses ) . forEach ( statusCode => {
50
+ const contentTypeList : string [ ] = [ ] ;
51
+ for ( const statusCode of extractResponseNamesByStatusCode ( "success" , responses ) ) {
51
52
const response = responses [ statusCode ] ;
52
- contentTypeList = contentTypeList . concat ( Object . keys ( response . content || { } ) ) ;
53
- } ) ;
53
+ /**
54
+ * responses:
55
+ * 200:
56
+ * content:
57
+ * application/json: {}
58
+ */
59
+ for ( const [ key , mediaType ] of Object . entries ( response . content || { } ) ) {
60
+ if ( Object . values ( mediaType ) . length > 0 ) {
61
+ contentTypeList . push ( key ) ;
62
+ }
63
+ }
64
+ }
54
65
return Array . from ( new Set ( contentTypeList ) ) ;
55
66
} ;
56
67
@@ -68,9 +79,9 @@ export const generateCodeGeneratorParamsArray = (
68
79
) : CodeGenerator . Params [ ] => {
69
80
const operationState = store . getNoReferenceOperationState ( ) ;
70
81
const params : CodeGenerator . Params [ ] = [ ] ;
71
- Object . entries ( operationState ) . forEach ( ( [ operationId , item ] ) => {
82
+ for ( const [ operationId , item ] of Object . entries ( operationState ) ) {
72
83
if ( allowOperationIds && ! allowOperationIds . includes ( operationId ) ) {
73
- return ;
84
+ continue ;
74
85
}
75
86
const responseSuccessNames = extractResponseNamesByStatusCode ( "success" , item . responses ) . map ( statusCode =>
76
87
converterContext . generateResponseName ( operationId , statusCode ) ,
@@ -114,7 +125,7 @@ export const generateCodeGeneratorParamsArray = (
114
125
operationParams : item ,
115
126
} ;
116
127
params . push ( formatParams ) ;
117
- } ) ;
128
+ }
118
129
119
130
return params ;
120
131
} ;
0 commit comments