@@ -14,7 +14,7 @@ const extractPickedParameter = (parameter: OpenApi.Parameter): PickedParameter =
14
14
} ;
15
15
} ;
16
16
17
- const extractSuccessStatusCode = ( responses : { [ statusCode : string ] : OpenApi . Response } ) : string [ ] => {
17
+ const extractResponseNamesByStatusCode = ( type : "success" | "error" , responses : { [ statusCode : string ] : OpenApi . Response } ) : string [ ] => {
18
18
const statusCodeList : string [ ] = [ ] ;
19
19
Object . entries ( responses || { } ) . forEach ( ( [ statusCodeLike , response ] ) => {
20
20
// ContentTypeの定義が存在しない場合はstatusCodeを読み取らない
@@ -23,8 +23,14 @@ const extractSuccessStatusCode = (responses: { [statusCode: string]: OpenApi.Res
23
23
}
24
24
if ( typeof statusCodeLike === "string" ) {
25
25
const statusCodeNumberValue = parseInt ( statusCodeLike , 10 ) ;
26
- if ( 200 <= statusCodeNumberValue && statusCodeNumberValue < 300 ) {
27
- statusCodeList . push ( statusCodeNumberValue . toString ( ) ) ;
26
+ if ( type === "success" ) {
27
+ if ( 200 <= statusCodeNumberValue && statusCodeNumberValue < 300 ) {
28
+ statusCodeList . push ( statusCodeNumberValue . toString ( ) ) ;
29
+ }
30
+ } else if ( type === "error" ) {
31
+ if ( 400 <= statusCodeNumberValue && statusCodeNumberValue < 600 ) {
32
+ statusCodeList . push ( statusCodeNumberValue . toString ( ) ) ;
33
+ }
28
34
}
29
35
}
30
36
} ) ;
@@ -37,7 +43,7 @@ const getRequestContentTypeList = (requestBody: OpenApi.RequestBody): string[] =
37
43
38
44
const getSuccessResponseContentTypeList = ( responses : { [ statusCode : string ] : OpenApi . Response } ) : string [ ] => {
39
45
let contentTypeList : string [ ] = [ ] ;
40
- extractSuccessStatusCode ( responses ) . forEach ( statusCode => {
46
+ extractResponseNamesByStatusCode ( "success" , responses ) . forEach ( statusCode => {
41
47
const response = responses [ statusCode ] ;
42
48
contentTypeList = contentTypeList . concat ( Object . keys ( response . content || { } ) ) ;
43
49
} ) ;
@@ -55,7 +61,10 @@ const generateCodeGeneratorParamsList = (store: Store.Type, converterContext: Co
55
61
const operationState = store . getNoReferenceOperationState ( ) ;
56
62
const params : CodeGeneratorParams [ ] = [ ] ;
57
63
Object . entries ( operationState ) . forEach ( ( [ operationId , item ] ) => {
58
- const responseSuccessNames = extractSuccessStatusCode ( item . responses ) . map ( statusCode =>
64
+ const responseSuccessNames = extractResponseNamesByStatusCode ( "success" , item . responses ) . map ( statusCode =>
65
+ converterContext . generateResponseName ( operationId , statusCode ) ,
66
+ ) ;
67
+ const responseErrorNames = extractResponseNamesByStatusCode ( "error" , item . responses ) . map ( statusCode =>
59
68
converterContext . generateResponseName ( operationId , statusCode ) ,
60
69
) ;
61
70
const requestContentTypeList = item . requestBody ? getRequestContentTypeList ( item . requestBody ) : [ ] ;
@@ -65,6 +74,7 @@ const generateCodeGeneratorParamsList = (store: Store.Type, converterContext: Co
65
74
66
75
const formatParams : CodeGeneratorParams = {
67
76
operationId : operationId ,
77
+ escapedOperationId : converterContext . escapeOperationIdText ( operationId ) ,
68
78
rawRequestUri : item . requestUri ,
69
79
httpMethod : item . httpMethod ,
70
80
argumentParamsTypeDeclaration : converterContext . generateArgumentParamsTypeDeclaration ( operationId ) ,
@@ -88,6 +98,7 @@ const generateCodeGeneratorParamsList = (store: Store.Type, converterContext: Co
88
98
responseSuccessNames : responseSuccessNames ,
89
99
responseFirstSuccessName : responseSuccessNames . length === 1 ? responseSuccessNames [ 0 ] : undefined ,
90
100
has2OrMoreSuccessNames : hasOver2SuccessNames ,
101
+ responseErrorNames : responseErrorNames ,
91
102
// Response Success Content Type
92
103
successResponseContentTypes : responseSuccessContentTypes ,
93
104
successResponseFirstContentType : responseSuccessContentTypes . length === 1 ? responseSuccessContentTypes [ 0 ] : undefined ,
0 commit comments