@goast/kotlin 0.5.11 → 0.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/src/generators/services/spring-reactive-web-clients/args.d.ts +10 -0
- package/esm/src/generators/services/spring-reactive-web-clients/args.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/models.d.ts +14 -0
- package/esm/src/generators/services/spring-reactive-web-clients/models.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/models.js +1 -0
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts +8 -0
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +57 -20
- package/package.json +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/args.d.ts +10 -0
- package/script/src/generators/services/spring-reactive-web-clients/args.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/models.d.ts +14 -0
- package/script/src/generators/services/spring-reactive-web-clients/models.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/models.js +1 -0
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts +8 -0
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +57 -20
- package/src/src/generators/services/spring-reactive-web-clients/args.ts +9 -0
- package/src/src/generators/services/spring-reactive-web-clients/models.ts +16 -0
- package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts +84 -38
|
@@ -43,6 +43,16 @@ export type GetEndpointFunctionWithHandlerBody = {
|
|
|
43
43
|
parameters: ApiParameterWithMultipartInfo[];
|
|
44
44
|
responseSchema: ApiSchema | undefined;
|
|
45
45
|
};
|
|
46
|
+
export type GetEndpointUriCall = {
|
|
47
|
+
endpoint: ApiEndpoint;
|
|
48
|
+
parameters: ApiParameterWithMultipartInfo[];
|
|
49
|
+
};
|
|
50
|
+
export type GetUriPathVariablesValue = {
|
|
51
|
+
endpoint: ApiEndpoint;
|
|
52
|
+
};
|
|
53
|
+
export type GetUriQueryParameterCalls = {
|
|
54
|
+
endpoint: ApiEndpoint;
|
|
55
|
+
};
|
|
46
56
|
export type GetEndpointUriFunctionName = {
|
|
47
57
|
endpoint: ApiEndpoint;
|
|
48
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,6BAA6B,EAAE,CAAA;CAAE,CAAC;AAExG,MAAM,MAAM,uBAAuB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,6BAA6B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,6BAA6B,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,aAAa,IAAI;IACzD,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,yBAAyB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,6BAA6B,EAAE,CAAA;CAAE,CAAC;AAExG,MAAM,MAAM,uBAAuB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,0BAA0B,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,6BAA6B,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,6BAA6B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,6BAA6B,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,aAAa,IAAI;IACzD,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,yBAAyB,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
|
|
@@ -13,6 +13,20 @@ export type KotlinSpringReactiveWebClientsGeneratorConfig = KotlinGeneratorConfi
|
|
|
13
13
|
basePath?: string | RegExp | ((basePath: string, service: ApiService) => string);
|
|
14
14
|
pathModifier?: RegExp | ((path: string, endpoint: ApiEndpoint) => string);
|
|
15
15
|
serializerJsonInclude: 'always' | 'non-null' | 'non-absent' | 'non-default' | 'non-empty' | 'use-defaults';
|
|
16
|
+
/**
|
|
17
|
+
* Whether the generated request functions pass the URI template (e.g. `pets/{id}`) to `WebClient` instead of an
|
|
18
|
+
* already expanded URI string. Only with the template does Spring populate
|
|
19
|
+
* `ClientRequestObservationContext.uriTemplate`, which keeps the `uri` tag of `http.client.requests` bounded by the
|
|
20
|
+
* number of endpoints instead of by the number of distinct path parameter values.
|
|
21
|
+
*
|
|
22
|
+
* Note that path parameter values are then encoded as URI variables, i.e. reserved characters (`/`, `?`, `#`, `%`)
|
|
23
|
+
* inside a value are percent-encoded. Values consisting of unreserved characters are unaffected, so for those the
|
|
24
|
+
* request is byte-identical to the expanded form.
|
|
25
|
+
*
|
|
26
|
+
* The `<endpoint>Uri(...)` helper functions are generated either way.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
preserveUriTemplate: boolean;
|
|
16
30
|
};
|
|
17
31
|
export declare const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenerationProviderConfig<KotlinSpringReactiveWebClientsGeneratorConfig>;
|
|
18
32
|
export type KotlinSpringReactiveWebClientsGeneratorInput = KotlinModelsGeneratorOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;IAE3G;;;;;;;;;;;;OAYG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,oDAAoD,EAAE,+BAA+B,CAChG,6CAA6C,CAS9C,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,2BAA2B,CAAC;AAEvF,MAAM,MAAM,6CAA6C,GAAG;IAC1D,MAAM,EAAE;QACN,OAAO,EAAE;YACP,CAAC,SAAS,EAAE,MAAM,GAAG,4CAA4C,CAAC;SACnE,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC;AAExE,MAAM,MAAM,8CAA8C,GACtD,wCAAwC,CACxC,4CAA4C,EAC5C,6CAA6C,EAC7C,6CAA6C,EAC7C,4CAA4C,CAC7C,GACC;IACA,yBAAyB,EAAE,MAAM,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAChD,CAAC;AAEJ,MAAM,MAAM,6CAA6C,GAAG,8CAA8C,GAAG;IAC3G,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC"}
|
|
@@ -24,6 +24,14 @@ export declare class DefaultKotlinSpringReactiveWebClientGenerator extends Kotli
|
|
|
24
24
|
protected getEndpointRequestFunctionName(ctx: Context, args: Args.GetEndpointRequestFunctionName): string;
|
|
25
25
|
protected getEndpointRequestFunction(ctx: Context, args: Args.GetEndpointRequestFunction): kt.Function<Builder>;
|
|
26
26
|
protected getEndpointRequestFunctionBody(ctx: Context, args: Args.GetEndpointRequestFunctionBody): AppendValueGroup<Builder>;
|
|
27
|
+
/**
|
|
28
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
29
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
30
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
31
|
+
*/
|
|
32
|
+
protected getEndpointUriCall(ctx: Context, args: Args.GetEndpointUriCall): kt.Value<Builder>;
|
|
33
|
+
protected getUriPathVariablesValue(ctx: Context, args: Args.GetUriPathVariablesValue): kt.Value<Builder> | null;
|
|
34
|
+
protected getUriQueryParameterCalls(ctx: Context, args: Args.GetUriQueryParameterCalls): AppendValueGroup<Builder> | null;
|
|
27
35
|
protected getEndpointUriFunctionName(ctx: Context, args: Args.GetEndpointUriFunctionName): string;
|
|
28
36
|
protected getEndpointUriFunction(ctx: Context, args: Args.GetEndpointUriFunction): kt.Function<Builder>;
|
|
29
37
|
protected getEndpointUriFunctionBody(ctx: Context, args: Args.GetEndpointUriFunctionBody): AppendValueGroup<Builder>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iDAAiD,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EACV,6CAA6C,EAC7C,4CAA4C,EAC7C,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,6CAA6C,CAAC;AAC7D,KAAK,MAAM,GAAG,4CAA4C,CAAC;AAC3D,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sCAAsC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrF,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6CAA8C,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpG,YAAW,sCAAsC;IAC1C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAoBnD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAKxG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAS3F,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAYrG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAK3F,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAoBjG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA6B9G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IA8BvB,SAAS,CAAC,kCAAkC,CAC1C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,kCAAkC,GAC5C,gBAAgB,CAAC,OAAO,CAAC;IAiB5B,SAAS,CAAC,8BAA8B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,GAAG,MAAM;IAKzG,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAmB/G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,gBAAgB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,7 +127,7 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
127
127
|
const { endpoint, parameters, responseSchema } = args;
|
|
128
128
|
const result = appendValueGroup([], '\n');
|
|
129
129
|
const callChain = [];
|
|
130
|
-
callChain.push(s `return this.method(${kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`,
|
|
130
|
+
callChain.push(s `return this.method(${kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`, this.getEndpointUriCall(ctx, { endpoint, parameters }));
|
|
131
131
|
if (responseSchema) {
|
|
132
132
|
callChain.push(s `accept(${kt.refs.spring.mediaType()}.APPLICATION_JSON)`);
|
|
133
133
|
}
|
|
@@ -201,6 +201,57 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
201
201
|
result.values.push(kt.call(callChain));
|
|
202
202
|
return result;
|
|
203
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
206
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
207
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
208
|
+
*/
|
|
209
|
+
getEndpointUriCall(ctx, args) {
|
|
210
|
+
const { endpoint, parameters } = args;
|
|
211
|
+
if (!ctx.config.preserveUriTemplate) {
|
|
212
|
+
return kt.call('uri', [kt.call([this.getEndpointUriFunctionName(ctx, { endpoint })], parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) => toCasing(p.name, ctx.config.parameterNameCasing)))]);
|
|
213
|
+
}
|
|
214
|
+
const uriTemplate = kt.string(this.getEndpointPath(ctx, { endpoint }));
|
|
215
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
216
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
217
|
+
// Without query parameters the template and its variables can be handed to `uri` directly.
|
|
218
|
+
if (!queryParameterCalls) {
|
|
219
|
+
return kt.call('uri', [uriTemplate, pathVariables]);
|
|
220
|
+
}
|
|
221
|
+
// Query parameters need a `UriBuilder`, which the `uri(String, Function<UriBuilder, URI>)` overload provides
|
|
222
|
+
// while still recording the template.
|
|
223
|
+
return kt.call('uri', [
|
|
224
|
+
uriTemplate,
|
|
225
|
+
kt.lambda(['uriBuilder'], kt.call([
|
|
226
|
+
'uriBuilder',
|
|
227
|
+
kt.call('apply', [kt.lambda([], queryParameterCalls)]),
|
|
228
|
+
kt.call('build', [pathVariables]),
|
|
229
|
+
])),
|
|
230
|
+
]);
|
|
231
|
+
}
|
|
232
|
+
getUriPathVariablesValue(ctx, args) {
|
|
233
|
+
const { endpoint } = args;
|
|
234
|
+
const pathParameters = endpoint.parameters.filter((p) => p.target === 'path');
|
|
235
|
+
if (pathParameters.length === 0)
|
|
236
|
+
return null;
|
|
237
|
+
return kt.call([kt.refs.mapOf.infer()], pathParameters.map((p) => s `${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`));
|
|
238
|
+
}
|
|
239
|
+
getUriQueryParameterCalls(ctx, args) {
|
|
240
|
+
const { endpoint } = args;
|
|
241
|
+
const queryParameters = endpoint.parameters.filter((p) => p.target === 'query');
|
|
242
|
+
if (queryParameters.length === 0)
|
|
243
|
+
return null;
|
|
244
|
+
return appendValueGroup(queryParameters.map((p) => {
|
|
245
|
+
var _a;
|
|
246
|
+
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
247
|
+
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
248
|
+
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
249
|
+
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
250
|
+
: kt.call([`${parameterName}?`, 'also'], [
|
|
251
|
+
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
252
|
+
]);
|
|
253
|
+
}), '\n');
|
|
254
|
+
}
|
|
204
255
|
getEndpointUriFunctionName(ctx, args) {
|
|
205
256
|
const { endpoint } = args;
|
|
206
257
|
return toCasing(`${this.getEndpointFunctionName(ctx, { endpoint })}_uri`, ctx.config.functionNameCasing);
|
|
@@ -219,26 +270,12 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
219
270
|
const result = appendValueGroup([], '\n');
|
|
220
271
|
const callChain = [];
|
|
221
272
|
callChain.push(s `${kt.refs.spring.uriComponentsBuilder()}.fromPath(${kt.string(this.getEndpointPath(ctx, { endpoint }))})`);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
226
|
-
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
227
|
-
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
228
|
-
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
229
|
-
: kt.call([`${parameterName}?`, 'also'], [
|
|
230
|
-
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
231
|
-
]);
|
|
232
|
-
}), '\n'))]));
|
|
233
|
-
}
|
|
234
|
-
if (endpoint.parameters.some((x) => x.target === 'path')) {
|
|
235
|
-
callChain.push(kt.call('buildAndExpand', [
|
|
236
|
-
kt.call([kt.refs.mapOf.infer()], endpoint.parameters.filter((p) => p.target === 'path').map((p) => s `${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`)),
|
|
237
|
-
]));
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
callChain.push(kt.call('build', []));
|
|
273
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
274
|
+
if (queryParameterCalls) {
|
|
275
|
+
callChain.push(kt.call('apply', [kt.lambda([], queryParameterCalls)]));
|
|
241
276
|
}
|
|
277
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
278
|
+
callChain.push(pathVariables ? kt.call('buildAndExpand', [pathVariables]) : kt.call('build', []));
|
|
242
279
|
callChain.push('toUriString');
|
|
243
280
|
result.values.push(s `return ${kt.call(callChain, [])}`);
|
|
244
281
|
return result;
|
package/package.json
CHANGED
|
@@ -43,6 +43,16 @@ export type GetEndpointFunctionWithHandlerBody = {
|
|
|
43
43
|
parameters: ApiParameterWithMultipartInfo[];
|
|
44
44
|
responseSchema: ApiSchema | undefined;
|
|
45
45
|
};
|
|
46
|
+
export type GetEndpointUriCall = {
|
|
47
|
+
endpoint: ApiEndpoint;
|
|
48
|
+
parameters: ApiParameterWithMultipartInfo[];
|
|
49
|
+
};
|
|
50
|
+
export type GetUriPathVariablesValue = {
|
|
51
|
+
endpoint: ApiEndpoint;
|
|
52
|
+
};
|
|
53
|
+
export type GetUriQueryParameterCalls = {
|
|
54
|
+
endpoint: ApiEndpoint;
|
|
55
|
+
};
|
|
46
56
|
export type GetEndpointUriFunctionName = {
|
|
47
57
|
endpoint: ApiEndpoint;
|
|
48
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,20 @@ export type KotlinSpringReactiveWebClientsGeneratorConfig = KotlinGeneratorConfi
|
|
|
13
13
|
basePath?: string | RegExp | ((basePath: string, service: ApiService) => string);
|
|
14
14
|
pathModifier?: RegExp | ((path: string, endpoint: ApiEndpoint) => string);
|
|
15
15
|
serializerJsonInclude: 'always' | 'non-null' | 'non-absent' | 'non-default' | 'non-empty' | 'use-defaults';
|
|
16
|
+
/**
|
|
17
|
+
* Whether the generated request functions pass the URI template (e.g. `pets/{id}`) to `WebClient` instead of an
|
|
18
|
+
* already expanded URI string. Only with the template does Spring populate
|
|
19
|
+
* `ClientRequestObservationContext.uriTemplate`, which keeps the `uri` tag of `http.client.requests` bounded by the
|
|
20
|
+
* number of endpoints instead of by the number of distinct path parameter values.
|
|
21
|
+
*
|
|
22
|
+
* Note that path parameter values are then encoded as URI variables, i.e. reserved characters (`/`, `?`, `#`, `%`)
|
|
23
|
+
* inside a value are percent-encoded. Values consisting of unreserved characters are unaffected, so for those the
|
|
24
|
+
* request is byte-identical to the expanded form.
|
|
25
|
+
*
|
|
26
|
+
* The `<endpoint>Uri(...)` helper functions are generated either way.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
preserveUriTemplate: boolean;
|
|
16
30
|
};
|
|
17
31
|
export declare const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenerationProviderConfig<KotlinSpringReactiveWebClientsGeneratorConfig>;
|
|
18
32
|
export type KotlinSpringReactiveWebClientsGeneratorInput = KotlinModelsGeneratorOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;IAE3G;;;;;;;;;;;;OAYG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,oDAAoD,EAAE,+BAA+B,CAChG,6CAA6C,CAS9C,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,2BAA2B,CAAC;AAEvF,MAAM,MAAM,6CAA6C,GAAG;IAC1D,MAAM,EAAE;QACN,OAAO,EAAE;YACP,CAAC,SAAS,EAAE,MAAM,GAAG,4CAA4C,CAAC;SACnE,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC;AAExE,MAAM,MAAM,8CAA8C,GACtD,wCAAwC,CACxC,4CAA4C,EAC5C,6CAA6C,EAC7C,6CAA6C,EAC7C,4CAA4C,CAC7C,GACC;IACA,yBAAyB,EAAE,MAAM,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAChD,CAAC;AAEJ,MAAM,MAAM,6CAA6C,GAAG,8CAA8C,GAAG;IAC3G,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC"}
|
|
@@ -24,6 +24,14 @@ export declare class DefaultKotlinSpringReactiveWebClientGenerator extends Kotli
|
|
|
24
24
|
protected getEndpointRequestFunctionName(ctx: Context, args: Args.GetEndpointRequestFunctionName): string;
|
|
25
25
|
protected getEndpointRequestFunction(ctx: Context, args: Args.GetEndpointRequestFunction): kt.Function<Builder>;
|
|
26
26
|
protected getEndpointRequestFunctionBody(ctx: Context, args: Args.GetEndpointRequestFunctionBody): AppendValueGroup<Builder>;
|
|
27
|
+
/**
|
|
28
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
29
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
30
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
31
|
+
*/
|
|
32
|
+
protected getEndpointUriCall(ctx: Context, args: Args.GetEndpointUriCall): kt.Value<Builder>;
|
|
33
|
+
protected getUriPathVariablesValue(ctx: Context, args: Args.GetUriPathVariablesValue): kt.Value<Builder> | null;
|
|
34
|
+
protected getUriQueryParameterCalls(ctx: Context, args: Args.GetUriQueryParameterCalls): AppendValueGroup<Builder> | null;
|
|
27
35
|
protected getEndpointUriFunctionName(ctx: Context, args: Args.GetEndpointUriFunctionName): string;
|
|
28
36
|
protected getEndpointUriFunction(ctx: Context, args: Args.GetEndpointUriFunction): kt.Function<Builder>;
|
|
29
37
|
protected getEndpointUriFunctionBody(ctx: Context, args: Args.GetEndpointUriFunctionBody): AppendValueGroup<Builder>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iDAAiD,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EACV,6CAA6C,EAC7C,4CAA4C,EAC7C,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,6CAA6C,CAAC;AAC7D,KAAK,MAAM,GAAG,4CAA4C,CAAC;AAC3D,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sCAAsC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrF,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6CAA8C,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpG,YAAW,sCAAsC;IAC1C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAoBnD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAKxG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAS3F,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAYrG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAK3F,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAoBjG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA6B9G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IA8BvB,SAAS,CAAC,kCAAkC,CAC1C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,kCAAkC,GAC5C,gBAAgB,CAAC,OAAO,CAAC;IAiB5B,SAAS,CAAC,8BAA8B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,GAAG,MAAM;IAKzG,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAmB/G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,gBAAgB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -130,7 +130,7 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
130
130
|
const { endpoint, parameters, responseSchema } = args;
|
|
131
131
|
const result = (0, core_1.appendValueGroup)([], '\n');
|
|
132
132
|
const callChain = [];
|
|
133
|
-
callChain.push((0, core_1.builderTemplate) `return this.method(${index_js_1.kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`,
|
|
133
|
+
callChain.push((0, core_1.builderTemplate) `return this.method(${index_js_1.kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`, this.getEndpointUriCall(ctx, { endpoint, parameters }));
|
|
134
134
|
if (responseSchema) {
|
|
135
135
|
callChain.push((0, core_1.builderTemplate) `accept(${index_js_1.kt.refs.spring.mediaType()}.APPLICATION_JSON)`);
|
|
136
136
|
}
|
|
@@ -204,6 +204,57 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
204
204
|
result.values.push(index_js_1.kt.call(callChain));
|
|
205
205
|
return result;
|
|
206
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
209
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
210
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
211
|
+
*/
|
|
212
|
+
getEndpointUriCall(ctx, args) {
|
|
213
|
+
const { endpoint, parameters } = args;
|
|
214
|
+
if (!ctx.config.preserveUriTemplate) {
|
|
215
|
+
return index_js_1.kt.call('uri', [index_js_1.kt.call([this.getEndpointUriFunctionName(ctx, { endpoint })], parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) => (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)))]);
|
|
216
|
+
}
|
|
217
|
+
const uriTemplate = index_js_1.kt.string(this.getEndpointPath(ctx, { endpoint }));
|
|
218
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
219
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
220
|
+
// Without query parameters the template and its variables can be handed to `uri` directly.
|
|
221
|
+
if (!queryParameterCalls) {
|
|
222
|
+
return index_js_1.kt.call('uri', [uriTemplate, pathVariables]);
|
|
223
|
+
}
|
|
224
|
+
// Query parameters need a `UriBuilder`, which the `uri(String, Function<UriBuilder, URI>)` overload provides
|
|
225
|
+
// while still recording the template.
|
|
226
|
+
return index_js_1.kt.call('uri', [
|
|
227
|
+
uriTemplate,
|
|
228
|
+
index_js_1.kt.lambda(['uriBuilder'], index_js_1.kt.call([
|
|
229
|
+
'uriBuilder',
|
|
230
|
+
index_js_1.kt.call('apply', [index_js_1.kt.lambda([], queryParameterCalls)]),
|
|
231
|
+
index_js_1.kt.call('build', [pathVariables]),
|
|
232
|
+
])),
|
|
233
|
+
]);
|
|
234
|
+
}
|
|
235
|
+
getUriPathVariablesValue(ctx, args) {
|
|
236
|
+
const { endpoint } = args;
|
|
237
|
+
const pathParameters = endpoint.parameters.filter((p) => p.target === 'path');
|
|
238
|
+
if (pathParameters.length === 0)
|
|
239
|
+
return null;
|
|
240
|
+
return index_js_1.kt.call([index_js_1.kt.refs.mapOf.infer()], pathParameters.map((p) => (0, core_1.builderTemplate) `${index_js_1.kt.string(p.name)} to ${(0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`));
|
|
241
|
+
}
|
|
242
|
+
getUriQueryParameterCalls(ctx, args) {
|
|
243
|
+
const { endpoint } = args;
|
|
244
|
+
const queryParameters = endpoint.parameters.filter((p) => p.target === 'query');
|
|
245
|
+
if (queryParameters.length === 0)
|
|
246
|
+
return null;
|
|
247
|
+
return (0, core_1.appendValueGroup)(queryParameters.map((p) => {
|
|
248
|
+
var _a;
|
|
249
|
+
const parameterName = (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing);
|
|
250
|
+
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
251
|
+
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
252
|
+
? index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), parameterName + toString])
|
|
253
|
+
: index_js_1.kt.call([`${parameterName}?`, 'also'], [
|
|
254
|
+
index_js_1.kt.lambda([], index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
255
|
+
]);
|
|
256
|
+
}), '\n');
|
|
257
|
+
}
|
|
207
258
|
getEndpointUriFunctionName(ctx, args) {
|
|
208
259
|
const { endpoint } = args;
|
|
209
260
|
return (0, core_1.toCasing)(`${this.getEndpointFunctionName(ctx, { endpoint })}_uri`, ctx.config.functionNameCasing);
|
|
@@ -222,26 +273,12 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
222
273
|
const result = (0, core_1.appendValueGroup)([], '\n');
|
|
223
274
|
const callChain = [];
|
|
224
275
|
callChain.push((0, core_1.builderTemplate) `${index_js_1.kt.refs.spring.uriComponentsBuilder()}.fromPath(${index_js_1.kt.string(this.getEndpointPath(ctx, { endpoint }))})`);
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const parameterName = (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing);
|
|
229
|
-
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
230
|
-
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
231
|
-
? index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), parameterName + toString])
|
|
232
|
-
: index_js_1.kt.call([`${parameterName}?`, 'also'], [
|
|
233
|
-
index_js_1.kt.lambda([], index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
234
|
-
]);
|
|
235
|
-
}), '\n'))]));
|
|
236
|
-
}
|
|
237
|
-
if (endpoint.parameters.some((x) => x.target === 'path')) {
|
|
238
|
-
callChain.push(index_js_1.kt.call('buildAndExpand', [
|
|
239
|
-
index_js_1.kt.call([index_js_1.kt.refs.mapOf.infer()], endpoint.parameters.filter((p) => p.target === 'path').map((p) => (0, core_1.builderTemplate) `${index_js_1.kt.string(p.name)} to ${(0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`)),
|
|
240
|
-
]));
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
callChain.push(index_js_1.kt.call('build', []));
|
|
276
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
277
|
+
if (queryParameterCalls) {
|
|
278
|
+
callChain.push(index_js_1.kt.call('apply', [index_js_1.kt.lambda([], queryParameterCalls)]));
|
|
244
279
|
}
|
|
280
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
281
|
+
callChain.push(pathVariables ? index_js_1.kt.call('buildAndExpand', [pathVariables]) : index_js_1.kt.call('build', []));
|
|
245
282
|
callChain.push('toUriString');
|
|
246
283
|
result.values.push((0, core_1.builderTemplate) `return ${index_js_1.kt.call(callChain, [])}`);
|
|
247
284
|
return result;
|
|
@@ -48,6 +48,15 @@ export type GetEndpointFunctionWithHandlerBody = {
|
|
|
48
48
|
responseSchema: ApiSchema | undefined;
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
+
export type GetEndpointUriCall = {
|
|
52
|
+
endpoint: ApiEndpoint;
|
|
53
|
+
parameters: ApiParameterWithMultipartInfo[];
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export type GetUriPathVariablesValue = { endpoint: ApiEndpoint };
|
|
57
|
+
|
|
58
|
+
export type GetUriQueryParameterCalls = { endpoint: ApiEndpoint };
|
|
59
|
+
|
|
51
60
|
export type GetEndpointUriFunctionName = { endpoint: ApiEndpoint };
|
|
52
61
|
|
|
53
62
|
export type GetEndpointUriFunction = {
|
|
@@ -20,6 +20,21 @@ export type KotlinSpringReactiveWebClientsGeneratorConfig = KotlinGeneratorConfi
|
|
|
20
20
|
basePath?: string | RegExp | ((basePath: string, service: ApiService) => string);
|
|
21
21
|
pathModifier?: RegExp | ((path: string, endpoint: ApiEndpoint) => string);
|
|
22
22
|
serializerJsonInclude: 'always' | 'non-null' | 'non-absent' | 'non-default' | 'non-empty' | 'use-defaults';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Whether the generated request functions pass the URI template (e.g. `pets/{id}`) to `WebClient` instead of an
|
|
26
|
+
* already expanded URI string. Only with the template does Spring populate
|
|
27
|
+
* `ClientRequestObservationContext.uriTemplate`, which keeps the `uri` tag of `http.client.requests` bounded by the
|
|
28
|
+
* number of endpoints instead of by the number of distinct path parameter values.
|
|
29
|
+
*
|
|
30
|
+
* Note that path parameter values are then encoded as URI variables, i.e. reserved characters (`/`, `?`, `#`, `%`)
|
|
31
|
+
* inside a value are percent-encoded. Values consisting of unreserved characters are unaffected, so for those the
|
|
32
|
+
* request is byte-identical to the expanded form.
|
|
33
|
+
*
|
|
34
|
+
* The `<endpoint>Uri(...)` helper functions are generated either way.
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
preserveUriTemplate: boolean;
|
|
23
38
|
};
|
|
24
39
|
|
|
25
40
|
export const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenerationProviderConfig<
|
|
@@ -31,6 +46,7 @@ export const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenera
|
|
|
31
46
|
packageSuffix: '.api.client',
|
|
32
47
|
infrastructurePackageName: { mode: 'append-full-package-name', value: '.infrastructure' },
|
|
33
48
|
serializerJsonInclude: 'non-absent',
|
|
49
|
+
preserveUriTemplate: true,
|
|
34
50
|
};
|
|
35
51
|
|
|
36
52
|
export type KotlinSpringReactiveWebClientsGeneratorInput = KotlinModelsGeneratorOutput;
|
|
@@ -223,12 +223,7 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
223
223
|
const callChain: KtValue<Builder>[] = [];
|
|
224
224
|
callChain.push(
|
|
225
225
|
s`return this.method(${kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`,
|
|
226
|
-
|
|
227
|
-
[this.getEndpointUriFunctionName(ctx, { endpoint })],
|
|
228
|
-
parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) =>
|
|
229
|
-
toCasing(p.name, ctx.config.parameterNameCasing)
|
|
230
|
-
),
|
|
231
|
-
)]),
|
|
226
|
+
this.getEndpointUriCall(ctx, { endpoint, parameters }),
|
|
232
227
|
);
|
|
233
228
|
|
|
234
229
|
if (responseSchema) {
|
|
@@ -331,6 +326,84 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
331
326
|
return result;
|
|
332
327
|
}
|
|
333
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
331
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
332
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
333
|
+
*/
|
|
334
|
+
protected getEndpointUriCall(ctx: Context, args: Args.GetEndpointUriCall): kt.Value<Builder> {
|
|
335
|
+
const { endpoint, parameters } = args;
|
|
336
|
+
|
|
337
|
+
if (!ctx.config.preserveUriTemplate) {
|
|
338
|
+
return kt.call('uri', [kt.call(
|
|
339
|
+
[this.getEndpointUriFunctionName(ctx, { endpoint })],
|
|
340
|
+
parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) =>
|
|
341
|
+
toCasing(p.name, ctx.config.parameterNameCasing)
|
|
342
|
+
),
|
|
343
|
+
)]);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const uriTemplate = kt.string(this.getEndpointPath(ctx, { endpoint }));
|
|
347
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
348
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
349
|
+
|
|
350
|
+
// Without query parameters the template and its variables can be handed to `uri` directly.
|
|
351
|
+
if (!queryParameterCalls) {
|
|
352
|
+
return kt.call('uri', [uriTemplate, pathVariables]);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Query parameters need a `UriBuilder`, which the `uri(String, Function<UriBuilder, URI>)` overload provides
|
|
356
|
+
// while still recording the template.
|
|
357
|
+
return kt.call('uri', [
|
|
358
|
+
uriTemplate,
|
|
359
|
+
kt.lambda(
|
|
360
|
+
['uriBuilder'],
|
|
361
|
+
kt.call([
|
|
362
|
+
'uriBuilder',
|
|
363
|
+
kt.call('apply', [kt.lambda([], queryParameterCalls)]),
|
|
364
|
+
kt.call('build', [pathVariables]),
|
|
365
|
+
]),
|
|
366
|
+
),
|
|
367
|
+
]);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
protected getUriPathVariablesValue(ctx: Context, args: Args.GetUriPathVariablesValue): kt.Value<Builder> | null {
|
|
371
|
+
const { endpoint } = args;
|
|
372
|
+
const pathParameters = endpoint.parameters.filter((p) => p.target === 'path');
|
|
373
|
+
if (pathParameters.length === 0) return null;
|
|
374
|
+
|
|
375
|
+
return kt.call(
|
|
376
|
+
[kt.refs.mapOf.infer()],
|
|
377
|
+
pathParameters.map((p) =>
|
|
378
|
+
s`${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${
|
|
379
|
+
this.getParameterToString(ctx, { endpoint, parameter: p })
|
|
380
|
+
}`
|
|
381
|
+
),
|
|
382
|
+
);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
protected getUriQueryParameterCalls(
|
|
386
|
+
ctx: Context,
|
|
387
|
+
args: Args.GetUriQueryParameterCalls,
|
|
388
|
+
): AppendValueGroup<Builder> | null {
|
|
389
|
+
const { endpoint } = args;
|
|
390
|
+
const queryParameters = endpoint.parameters.filter((p) => p.target === 'query');
|
|
391
|
+
if (queryParameters.length === 0) return null;
|
|
392
|
+
|
|
393
|
+
return appendValueGroup(
|
|
394
|
+
queryParameters.map((p) => {
|
|
395
|
+
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
396
|
+
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
397
|
+
return p.required && !p.schema?.nullable
|
|
398
|
+
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
399
|
+
: kt.call([`${parameterName}?`, 'also'], [
|
|
400
|
+
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
401
|
+
]);
|
|
402
|
+
}),
|
|
403
|
+
'\n',
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
334
407
|
protected getEndpointUriFunctionName(ctx: Context, args: Args.GetEndpointUriFunctionName): string {
|
|
335
408
|
const { endpoint } = args;
|
|
336
409
|
return toCasing(`${this.getEndpointFunctionName(ctx, { endpoint })}_uri`, ctx.config.functionNameCasing);
|
|
@@ -362,40 +435,13 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
362
435
|
s`${kt.refs.spring.uriComponentsBuilder()}.fromPath(${kt.string(this.getEndpointPath(ctx, { endpoint }))})`,
|
|
363
436
|
);
|
|
364
437
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
[],
|
|
369
|
-
appendValueGroup(
|
|
370
|
-
endpoint.parameters.filter((x) => x.target === 'query').map((p) => {
|
|
371
|
-
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
372
|
-
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
373
|
-
return p.required && !p.schema?.nullable
|
|
374
|
-
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
375
|
-
: kt.call([`${parameterName}?`, 'also'], [
|
|
376
|
-
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
377
|
-
]);
|
|
378
|
-
}),
|
|
379
|
-
'\n',
|
|
380
|
-
),
|
|
381
|
-
)]),
|
|
382
|
-
);
|
|
438
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
439
|
+
if (queryParameterCalls) {
|
|
440
|
+
callChain.push(kt.call('apply', [kt.lambda([], queryParameterCalls)]));
|
|
383
441
|
}
|
|
384
442
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
kt.call(
|
|
388
|
-
[kt.refs.mapOf.infer()],
|
|
389
|
-
endpoint.parameters.filter((p) => p.target === 'path').map((p) =>
|
|
390
|
-
s`${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${
|
|
391
|
-
this.getParameterToString(ctx, { endpoint, parameter: p })
|
|
392
|
-
}`
|
|
393
|
-
),
|
|
394
|
-
),
|
|
395
|
-
]));
|
|
396
|
-
} else {
|
|
397
|
-
callChain.push(kt.call('build', []));
|
|
398
|
-
}
|
|
443
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
444
|
+
callChain.push(pathVariables ? kt.call('buildAndExpand', [pathVariables]) : kt.call('build', []));
|
|
399
445
|
|
|
400
446
|
callChain.push('toUriString');
|
|
401
447
|
result.values.push(s`return ${kt.call(callChain, [])}`);
|