|
1 | 1 | import ts from "typescript"; |
2 | 2 |
|
3 | | -import { Factory } from "../../CodeGenerator"; |
4 | | -import * as Name from "./Name"; |
| 3 | +import * as ConverterContext from "./ConverterContext"; |
5 | 4 | import { Store } from "./store"; |
6 | 5 | import { CodeGeneratorParams, OpenApi, PickedParameter } from "./types"; |
7 | 6 |
|
@@ -52,24 +51,31 @@ const hasQueryParameters = (parameters?: OpenApi.Parameter[]): boolean => { |
52 | 51 | return parameters.filter(parameter => parameter.in === "query").length > 0; |
53 | 52 | }; |
54 | 53 |
|
55 | | -const generateCodeGeneratorParamsList = (store: Store.Type): CodeGeneratorParams[] => { |
| 54 | +const generateCodeGeneratorParamsList = (store: Store.Type, converterContext: ConverterContext.Types): CodeGeneratorParams[] => { |
56 | 55 | const operationState = store.getNoReferenceOperationState(); |
57 | 56 | const params: CodeGeneratorParams[] = []; |
58 | 57 | Object.entries(operationState).forEach(([operationId, item]) => { |
59 | | - const responseSuccessNames = extractSuccessStatusCode(item.responses).map(statusCode => Name.responseName(operationId, statusCode)); |
| 58 | + const responseSuccessNames = extractSuccessStatusCode(item.responses).map(statusCode => |
| 59 | + converterContext.generateResponseName(operationId, statusCode), |
| 60 | + ); |
60 | 61 | const requestContentTypeList = item.requestBody ? getRequestContentTypeList(item.requestBody) : []; |
61 | 62 | const responseSuccessContentTypes = getSuccessResponseContentTypeList(item.responses); |
62 | 63 | const hasOver2RequestContentTypes = requestContentTypeList.length > 1; |
63 | 64 | const hasOver2SuccessNames = responseSuccessNames.length > 1; |
| 65 | + |
64 | 66 | const formatParams: CodeGeneratorParams = { |
65 | 67 | operationId: operationId, |
66 | 68 | rawRequestUri: item.requestUri, |
67 | 69 | httpMethod: item.httpMethod, |
68 | | - argumentParamsTypeDeclaration: Name.argumentParamsTypeDeclaration(operationId), |
| 70 | + argumentParamsTypeDeclaration: converterContext.generateArgumentParamsTypeDeclaration(operationId), |
69 | 71 | // function |
70 | | - functionName: operationId, |
| 72 | + functionName: converterContext.generateFunctionName(operationId), |
71 | 73 | comment: item.comment, |
72 | 74 | deprecated: item.deprecated, |
| 75 | + requestContentTypeName: converterContext.generateRequestContentTypeName(operationId), |
| 76 | + responseContentTypeName: converterContext.generateResponseContentTypeName(operationId), |
| 77 | + parameterName: converterContext.generateParameterName(operationId), |
| 78 | + requestBodyName: converterContext.generateRequestBodyName(operationId), |
73 | 79 | // |
74 | 80 | hasRequestBody: !!item.requestBody, |
75 | 81 | hasParameter: item.parameters ? item.parameters.length > 0 : false, |
@@ -99,7 +105,12 @@ const generateCodeGeneratorParamsList = (store: Store.Type): CodeGeneratorParams |
99 | 105 |
|
100 | 106 | export type MakeApiClientFunction = (context: ts.TransformationContext, codeGeneratorParamsList: CodeGeneratorParams[]) => ts.Statement[]; |
101 | 107 |
|
102 | | -export const generateApiClientCode = (store: Store.Type, context: ts.TransformationContext, makeApiClient: MakeApiClientFunction): void => { |
103 | | - const codeGeneratorParamsList = generateCodeGeneratorParamsList(store); |
| 108 | +export const generateApiClientCode = ( |
| 109 | + store: Store.Type, |
| 110 | + context: ts.TransformationContext, |
| 111 | + converterContext: ConverterContext.Types, |
| 112 | + makeApiClient: MakeApiClientFunction, |
| 113 | +): void => { |
| 114 | + const codeGeneratorParamsList = generateCodeGeneratorParamsList(store, converterContext); |
104 | 115 | store.addAdditionalStatement(makeApiClient(context, codeGeneratorParamsList)); |
105 | 116 | }; |
0 commit comments