forked from loafle/openapi-generator-original
Compare commits
23 Commits
update-mus
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5cfef374a | ||
|
|
30ff0d7ca9 | ||
|
|
008c1a42ef | ||
|
|
511316a966 | ||
|
|
21093b78c6 | ||
|
|
f576f05eb2 | ||
|
|
e9c3c63732 | ||
|
|
071540f55a | ||
|
|
eb92eeb32e | ||
|
|
52610e026e | ||
|
|
266193f95f | ||
|
|
cfdb00a14c | ||
|
|
8c8f2f3521 | ||
|
|
695902cca1 | ||
|
|
ec98693da5 | ||
|
|
c8f2d2be1f | ||
|
|
fc161821a7 | ||
|
|
1248d7a103 | ||
|
|
c6dbf0870c | ||
|
|
f6c0b4ad6b | ||
|
|
dc3718cd5c | ||
|
|
ce09134b48 | ||
|
|
23bd50fea0 |
2
.github/workflows/gradle-test.yaml
vendored
2
.github/workflows/gradle-test.yaml
vendored
@@ -29,6 +29,8 @@ jobs:
|
||||
- samples/client/petstore/java/okhttp-gson
|
||||
- samples/client/petstore/java/okhttp-gson-group-parameter
|
||||
- samples/client/petstore/java/webclient-swagger2
|
||||
- samples/client/petstore/java/native
|
||||
- samples/client/petstore/java/native-jakarta
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
# - samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: 3.1.*
|
||||
- name: Build
|
||||
|
||||
2
.github/workflows/samples-dotnet.yaml
vendored
2
.github/workflows/samples-dotnet.yaml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
- samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
- name: Build
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
- samples/client/echo_api/csharp-restsharp/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
- name: Run echo server
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
- samples/client/petstore/csharp/restsharp/net6/ParameterMappings/
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
- name: Build
|
||||
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
- samples/server/petstore/aspnetcore-6.0-useSwashBuckle
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
- name: Build
|
||||
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
- samples/server/petstore/aspnetcore-8.0-useSwashBuckle
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-dotnet@v4.0.1
|
||||
- uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
- name: Build
|
||||
|
||||
26
.github/workflows/samples-typescript-typecheck.yaml
vendored
Normal file
26
.github/workflows/samples-typescript-typecheck.yaml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: TypeScript clients type checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/**
|
||||
- bin/ts-typecheck-all.sh
|
||||
- .github/workflows/samples-typescript-typecheck.yaml
|
||||
jobs:
|
||||
build:
|
||||
name: Typecheck TypeScript samples
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version:
|
||||
- 20
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Run type checker
|
||||
run: ./bin/ts-typecheck-all.sh
|
||||
@@ -2,6 +2,7 @@ generatorName: java-helidon-client
|
||||
library: mp
|
||||
outputDir: samples/client/petstore/java-helidon-client/v3/mp
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/client
|
||||
additionalProperties:
|
||||
helidonVersion: 3.2.7
|
||||
artifactId: petstore-helidon-client-mp
|
||||
|
||||
@@ -2,6 +2,7 @@ generatorName: java-helidon-client
|
||||
library: mp
|
||||
outputDir: samples/client/petstore/java-helidon-client/v4/mp
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/client
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-client-mp
|
||||
|
||||
@@ -2,6 +2,7 @@ generatorName: java-helidon-client
|
||||
library: se
|
||||
outputDir: samples/client/petstore/java-helidon-client/v3/se
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/client
|
||||
additionalProperties:
|
||||
helidonVersion: 3.2.7
|
||||
artifactId: petstore-helidon-client-se
|
||||
|
||||
@@ -2,6 +2,7 @@ generatorName: java-helidon-client
|
||||
library: se
|
||||
outputDir: samples/client/petstore/java-helidon-client/v4/se
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-helidon/client
|
||||
additionalProperties:
|
||||
helidonVersion: 4.0.11
|
||||
artifactId: petstore-helidon-client-se
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
generatorName: java-micronaut-client
|
||||
outputDir: samples/client/petstore/java-micronaut-client/
|
||||
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-micronaut/
|
||||
additionalProperties:
|
||||
artifactId: petstore-micronaut
|
||||
hideGenerationTimestamp: "true"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
generatorName: java-micronaut-server
|
||||
outputDir: samples/server/petstore/java-micronaut-server/
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/java-micronaut/
|
||||
additionalProperties:
|
||||
artifactId: petstore-micronaut-server
|
||||
hideGenerationTimestamp: "true"
|
||||
|
||||
@@ -6,4 +6,6 @@ generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: rust-axum-header-uui
|
||||
globalProperties:
|
||||
skipFormModel: "false"
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -7,4 +7,6 @@ additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
allowBlockingResponseSerialize: "true"
|
||||
packageName: multipart-v3
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -7,4 +7,6 @@ additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
allowBlockingValidator: "true"
|
||||
packageName: openapi-v3
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -6,4 +6,6 @@ generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: ops-v3
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -6,4 +6,6 @@ generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: ping-bearer-auth
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -6,4 +6,7 @@ generateAliasAsModel: true
|
||||
additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: rust-server-test
|
||||
modelNamePrefix: "Foo"
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
@@ -7,4 +7,6 @@ additionalProperties:
|
||||
hideGenerationTimestamp: "true"
|
||||
packageName: rust-axum-validation-test
|
||||
disableValidator: "true"
|
||||
globalProperties:
|
||||
skipFormModel: false
|
||||
enablePostProcessFile: true
|
||||
|
||||
11
bin/configs/rust-reqwest-petstore-model-name-prefix.yaml
Normal file
11
bin/configs/rust-reqwest-petstore-model-name-prefix.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
generatorName: rust
|
||||
outputDir: samples/client/petstore/rust/reqwest/petstore-model-name-prefix
|
||||
library: reqwest
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/rust
|
||||
additionalProperties:
|
||||
supportAsync: false
|
||||
packageName: petstore-reqwest-model-name-prefix
|
||||
modelNamePrefix: "Foo"
|
||||
enumNameMappings:
|
||||
delivered: shipped
|
||||
49
bin/ts-typecheck-all.sh
Executable file
49
bin/ts-typecheck-all.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
log() {
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
npm_install() {
|
||||
# --ignore-scripts because we don't want to run any pre- or postinstall scripts
|
||||
# --no-package-lock because we don't want to update or create the package-lock.json
|
||||
# --no-fund because we don't want to check for funding
|
||||
# --no-audit because we don't want to run an audit
|
||||
# --suppress-warnings because we don't want to see any warnings whilst type checking
|
||||
npm i \
|
||||
--suppress-warnings \
|
||||
--ignore-scripts \
|
||||
--no-package-lock \
|
||||
--no-fund \
|
||||
--no-audit \
|
||||
"$@"
|
||||
}
|
||||
|
||||
main() {
|
||||
local root_dir
|
||||
root_dir=$(git rev-parse --show-toplevel)
|
||||
local dir
|
||||
|
||||
for dir in $(git ls-files samples | grep 'tsconfig.json$' | xargs -n1 dirname | sort -u); do
|
||||
if [[ ! -f "${root_dir}/${dir}/.openapi-generator-ignore" ]]; then
|
||||
# This is not a generated sample; skip it
|
||||
continue
|
||||
fi
|
||||
if [[ ! -f "${root_dir}/${dir}/package.json" ]]; then
|
||||
# we can't really guarantee that all dependencies are there to do a typecheck...
|
||||
continue
|
||||
fi
|
||||
log "➤ ${dir}"
|
||||
pushd "${root_dir}/${dir}" > /dev/null
|
||||
npm_install \
|
||||
|| npm_install --force # --force because we have some incompatible peer-dependencies that can't be fixed
|
||||
npm exec --package=typescript@5.6.3 --yes -- tsc --noEmit
|
||||
log "✓ ${dir}"
|
||||
log
|
||||
popd > /dev/null
|
||||
done
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -51,6 +51,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|useSettingsGradle|Whether the project uses settings.gradle.| |false|
|
||||
|useSpringBoot3|Whether to use the Spring Boot 3 with the jvm-spring-webclient library.| |false|
|
||||
|
||||
## SUPPORTED VENDOR EXTENSIONS
|
||||
|
||||
| Extension name | Description | Applicable for | Default value |
|
||||
| -------------- | ----------- | -------------- | ------------- |
|
||||
|x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null
|
||||
|x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null
|
||||
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
| Type/Alias | Imports |
|
||||
|
||||
@@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|fileNaming|Naming convention for the output files: 'camelCase', 'kebab-case'.| |camelCase|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelFileSuffix|The suffix of the file of the generated model (model<suffix>.ts).| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|modelSuffix|The suffix of the generated model.| |null|
|
||||
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0|
|
||||
|
||||
@@ -28,6 +28,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPackage|package for generated models| |null|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url of your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -28,6 +28,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|fileNaming|Naming convention for the output files: 'PascalCase', 'camelCase', 'kebab-case'.| |PascalCase|
|
||||
|importFileExtension|File extension to use with relative imports. Set it to '.js' or '.mjs' when using [ESM](https://nodejs.org/api/esm.html).| ||
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -27,6 +27,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|jqueryAlreadyImported|When using this in legacy app using mix of typescript and javascript, this will only declare jquery and not import it| |false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |MIT|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -27,6 +27,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|fileNaming|Naming convention for the output files: 'camelCase', 'kebab-case'.| |camelCase|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelFileSuffix|The suffix of the file of the generated model (model<suffix>.ts).| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|modelSuffix|The suffix of the generated model.| |null|
|
||||
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -26,6 +26,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |null|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|framework|Specify the framework which should be used in the client code.|<dl><dt>**fetch-api**</dt><dd>fetch-api</dd><dt>**jquery**</dt><dd>jquery</dd></dl>|fetch-api|
|
||||
|importFileExtension|File extension to use with relative imports. Set it to '.js' or '.mjs' when using [ESM](https://nodejs.org/api/esm.html). Defaults to '.ts' when 'platform' is set to 'deno'.| |null|
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|licenseName|The name of the license| |Unlicense|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|
||||
@@ -245,8 +245,7 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
||||
} else if (!org.apache.commons.lang3.StringUtils.isEmpty(p.get$ref())) {
|
||||
String datatype;
|
||||
try {
|
||||
datatype = toModelName(ModelUtils.getSimpleRef(p.get$ref()));
|
||||
datatype = "models::" + toModelName(datatype);
|
||||
datatype = "models::" + toModelName(ModelUtils.getSimpleRef(p.get$ref()));
|
||||
} catch (Exception e) {
|
||||
LOGGER.warn("Error obtaining the datatype from schema (model):{}. Datatype default to Object", p);
|
||||
datatype = "Object";
|
||||
@@ -438,6 +437,6 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
||||
if (this.reservedWordsMappings().containsKey(name)) {
|
||||
return this.reservedWordsMappings().get(name);
|
||||
}
|
||||
return "r#"+ name;
|
||||
return "r#" + name;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.function.BiPredicate;
|
||||
@@ -236,6 +235,8 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
public static final String NULL_SAFE_ADDITIONAL_PROPS = "nullSafeAdditionalProps";
|
||||
public static final String NULL_SAFE_ADDITIONAL_PROPS_DESC = "Set to make additional properties types declare that their indexer may return undefined";
|
||||
|
||||
public static final String LICENSE_NAME_DEFAULT_VALUE = "Unlicense";
|
||||
|
||||
// NOTE: SimpleDateFormat is not thread-safe and may not be static unless it is thread-local
|
||||
@SuppressWarnings("squid:S5164")
|
||||
protected static final ThreadLocal<SimpleDateFormat> SNAPSHOT_SUFFIX_FORMAT = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyyMMddHHmm", Locale.ROOT));
|
||||
@@ -258,6 +259,9 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
|
||||
protected String classEnumSeparator = ".";
|
||||
|
||||
@Getter() @Setter
|
||||
protected String licenseName = getLicenseNameDefaultValue();
|
||||
|
||||
public AbstractTypeScriptClientCodegen() {
|
||||
super();
|
||||
|
||||
@@ -334,6 +338,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
typeMapping.put("Array", "Array");
|
||||
typeMapping.put("array", "Array");
|
||||
typeMapping.put("boolean", "boolean");
|
||||
typeMapping.put("decimal", "string");
|
||||
typeMapping.put("string", "string");
|
||||
typeMapping.put("int", "number");
|
||||
typeMapping.put("float", "number");
|
||||
@@ -370,6 +375,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
false));
|
||||
this.cliOptions.add(new CliOption(NULL_SAFE_ADDITIONAL_PROPS, NULL_SAFE_ADDITIONAL_PROPS_DESC).defaultValue(String.valueOf(this.getNullSafeAdditionalProps())));
|
||||
this.cliOptions.add(CliOption.newBoolean(ENUM_PROPERTY_NAMING_REPLACE_SPECIAL_CHAR, ENUM_PROPERTY_NAMING_REPLACE_SPECIAL_CHAR_DESC, false));
|
||||
cliOptions.add(new CliOption(CodegenConstants.LICENSE_NAME, CodegenConstants.LICENSE_NAME_DESC).defaultValue(this.licenseName));
|
||||
}
|
||||
|
||||
protected void supportModelPropertyNaming(MODEL_PROPERTY_NAMING_TYPE defaultModelPropertyNaming) {
|
||||
@@ -416,6 +422,10 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
if (additionalProperties.containsKey(NPM_NAME)) {
|
||||
this.setNpmName(additionalProperties.get(NPM_NAME).toString());
|
||||
}
|
||||
|
||||
if (additionalProperties.containsKey(CodegenConstants.LICENSE_NAME)) {
|
||||
this.setLicenseName(additionalProperties.get(CodegenConstants.LICENSE_NAME).toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -489,6 +499,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
|
||||
}
|
||||
|
||||
additionalProperties.put(CodegenConstants.LICENSE_NAME, licenseName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -736,6 +747,11 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
return p.getDefault().toString();
|
||||
}
|
||||
return UNDEFINED_VALUE;
|
||||
} else if (ModelUtils.isDecimalSchema(p)) {
|
||||
if (p.getDefault() != null) {
|
||||
return p.getDefault().toString();
|
||||
}
|
||||
return UNDEFINED_VALUE;
|
||||
} else if (ModelUtils.isDateSchema(p)) {
|
||||
if (p.getDefault() != null) {
|
||||
return p.getDefault().toString();
|
||||
@@ -1143,4 +1159,8 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
public GeneratorLanguage generatorLanguage() {
|
||||
return GeneratorLanguage.TYPESCRIPT;
|
||||
}
|
||||
|
||||
protected String getLicenseNameDefaultValue() {
|
||||
return LICENSE_NAME_DEFAULT_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.openapitools.codegen.CodegenParameter;
|
||||
import org.openapitools.codegen.CodegenProperty;
|
||||
import org.openapitools.codegen.CodegenType;
|
||||
import org.openapitools.codegen.SupportingFile;
|
||||
import org.openapitools.codegen.VendorExtension;
|
||||
import org.openapitools.codegen.meta.features.ClientModificationFeature;
|
||||
import org.openapitools.codegen.meta.features.DocumentationFeature;
|
||||
import org.openapitools.codegen.meta.features.GlobalFeature;
|
||||
@@ -1049,4 +1050,12 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
||||
System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #");
|
||||
System.out.println("################################################################################");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VendorExtension> getSupportedVendorExtensions() {
|
||||
var extensions = super.getSupportedVendorExtensions();
|
||||
extensions.add(VendorExtension.X_CLASS_EXTRA_ANNOTATION);
|
||||
extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION);
|
||||
return extensions;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,9 +422,12 @@ public class RustClientCodegen extends AbstractRustCodegen implements CodegenCon
|
||||
content = content.trim().replace("v", "");
|
||||
content = content.replace("V", "");
|
||||
|
||||
// convert 5.2 to 5.2.0 for example
|
||||
String[] contents = content.split("[.]");
|
||||
if (contents.length == 2) {
|
||||
if (contents.length == 1) {
|
||||
// convert 5 to 5.0.0 for example
|
||||
content += ".0.0";
|
||||
} else if (contents.length == 2) {
|
||||
// convert 5.2 to 5.2.0 for example
|
||||
content += ".0";
|
||||
}
|
||||
|
||||
|
||||
@@ -1605,4 +1605,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLicenseNameDefaultValue() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public class TypeScriptJqueryClientCodegen extends AbstractTypeScriptClientCodeg
|
||||
|
||||
public static final String NPM_REPOSITORY = "npmRepository";
|
||||
public static final String JQUERY_ALREADY_IMPORTED = "jqueryAlreadyImported";
|
||||
public static final String LICENSE_NAME_DEFAULT_VALUE = "MIT";
|
||||
|
||||
@Getter @Setter
|
||||
protected String npmRepository = null;
|
||||
@@ -159,4 +160,9 @@ public class TypeScriptJqueryClientCodegen extends AbstractTypeScriptClientCodeg
|
||||
String indexPackage = modelPackage.substring(0, Math.max(0, modelPackage.lastIndexOf('.')));
|
||||
return indexPackage.replace('.', File.separatorChar);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLicenseNameDefaultValue() {
|
||||
return LICENSE_NAME_DEFAULT_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
|
||||
protected boolean addedApiIndex = false;
|
||||
protected boolean addedModelIndex = false;
|
||||
|
||||
|
||||
public TypeScriptReduxQueryClientCodegen() {
|
||||
super();
|
||||
|
||||
@@ -283,4 +282,9 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
|
||||
private void setUseSingleRequestParameter(boolean useSingleRequestParameter) {
|
||||
this.useSingleRequestParameter = useSingleRequestParameter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLicenseNameDefaultValue() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,4 +421,9 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
|
||||
// import everything (including child schema of a composed schema)
|
||||
addImport(model, modelName);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLicenseNameDefaultValue() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ package body {{package}}.Clients is
|
||||
URI.Add_Param ("{{baseName}}", {{paramName}});{{/isLong}}{{#isContainer}}
|
||||
URI.Add_Param ("{{baseName}}", {{paramName}});{{/isContainer}}{{#isDateTime}}
|
||||
URI.Add_Param ("{{baseName}}", {{paramName}});{{/isDateTime}}{{/isQueryParam}}{{/queryParams}}
|
||||
URI.Set_Path ("{{path}}");{{#pathParams}}
|
||||
URI.Set_Path ("{{{path}}}");{{#pathParams}}
|
||||
URI.Set_Path_Param ("{{baseName}}", {{^isString}}{{#vendorExtensions.x-is-model-type}}{{package}}.Models{{/vendorExtensions.x-is-model-type}}{{^vendorExtensions.x-is-model-type}}{{openApiPackageName}}{{/vendorExtensions.x-is-model-type}}.To_String ({{/isString}}{{paramName}}{{^isString}}){{/isString}});{{/pathParams}}
|
||||
Client.Call ({{openApiPackageName}}.Clients.{{httpMethod}}, URI{{#hasBodyParam}}, Req{{/hasBodyParam}}{{#hasFormParams}}, Req{{/hasFormParams}}{{#returnType}}, Reply{{/returnType}});
|
||||
{{#returnProperty}}
|
||||
|
||||
@@ -27,7 +27,7 @@ package body {{package}}.Skeletons is
|
||||
new {{openApiPackageName}}.Servers.Operation
|
||||
(Handler => {{operationId}},
|
||||
Method => {{openApiPackageName}}.Servers.{{httpMethod}},
|
||||
URI => URI_Prefix & "{{path}}",
|
||||
URI => URI_Prefix & "{{{path}}}",
|
||||
{{#vendorExtensions.x-produces-media-index}}
|
||||
Mimes => Media_List_{{vendorExtensions.x-produces-media-index}}'Access);
|
||||
{{/vendorExtensions.x-produces-media-index}}
|
||||
@@ -259,7 +259,7 @@ package body {{package}}.Skeletons is
|
||||
new {{openApiPackageName}}.Servers.Operation
|
||||
(Handler => {{operationId}},
|
||||
Method => {{openApiPackageName}}.Servers.{{httpMethod}},
|
||||
URI => URI_Prefix & "{{path}}",
|
||||
URI => URI_Prefix & "{{{path}}}",
|
||||
{{#vendorExtensions.x-produces-media-index}}
|
||||
Mimes => Media_List_{{vendorExtensions.x-produces-media-index}}'Access);
|
||||
{{/vendorExtensions.x-produces-media-index}}
|
||||
|
||||
@@ -66,7 +66,7 @@ if(hasProperty('target') && target == 'android') {
|
||||
|
||||
task sourcesJar(type: Jar) {
|
||||
from android.sourceSets.main.java.srcDirs
|
||||
classifier = 'sources'
|
||||
archiveClassifier = 'sources'
|
||||
}
|
||||
|
||||
artifacts {
|
||||
@@ -97,12 +97,12 @@ if(hasProperty('target') && target == 'android') {
|
||||
}
|
||||
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = 'sources'
|
||||
archiveClassifier = 'sources'
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
archiveClassifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
{{/isDeprecated}}
|
||||
@RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{^-last}}&{{/-last}}{{/queryParams}}")
|
||||
@Headers({
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{vendorExtensions.x-content-type}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{.}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{{vendorExtensions.x-content-type}}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{{.}}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}},
|
||||
{{/-last}}{{/headerParams}}
|
||||
})
|
||||
@@ -77,8 +77,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
{{/isDeprecated}}
|
||||
@RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{^-last}}&{{/-last}}{{/queryParams}}")
|
||||
@Headers({
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{vendorExtensions.x-content-type}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{.}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{{vendorExtensions.x-content-type}}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{{.}}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}},
|
||||
{{/-last}}{{/headerParams}}
|
||||
})
|
||||
@@ -122,8 +122,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
{{/isDeprecated}}
|
||||
@RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{^-last}}&{{/-last}}{{/queryParams}}")
|
||||
@Headers({
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{vendorExtensions.x-content-type}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{.}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{{vendorExtensions.x-content-type}}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{{.}}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}},
|
||||
{{/-last}}{{/headerParams}}
|
||||
})
|
||||
@@ -162,8 +162,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
{{/isDeprecated}}
|
||||
@RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{^-last}}&{{/-last}}{{/queryParams}}")
|
||||
@Headers({
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{vendorExtensions.x-content-type}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{.}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-content-type}} "Content-Type: {{{vendorExtensions.x-content-type}}}",
|
||||
{{/vendorExtensions.x-content-type}} "Accept: {{#vendorExtensions.x-accepts}}{{{.}}}{{^-last}},{{/-last}}{{/vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}},
|
||||
{{/-last}}{{/headerParams}}
|
||||
})
|
||||
|
||||
@@ -195,7 +195,7 @@ public class {{classname}} {
|
||||
{{#returnType}}
|
||||
GenericType<{{{returnType}}}> localVarReturnType = new GenericType<{{{returnType}}}>() {};
|
||||
{{/returnType}}
|
||||
return apiClient.invokeAPI("{{classname}}.{{operationId}}", {{#hasPathParams}}localVarPath{{/hasPathParams}}{{^hasPathParams}}"{{path}}"{{/hasPathParams}}, "{{httpMethod}}", {{#queryParams}}{{#-first}}localVarQueryParams{{/-first}}{{/queryParams}}{{^queryParams}}new ArrayList<>(){{/queryParams}}, {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}},
|
||||
return apiClient.invokeAPI("{{classname}}.{{operationId}}", {{#hasPathParams}}localVarPath{{/hasPathParams}}{{^hasPathParams}}"{{{path}}}"{{/hasPathParams}}, "{{httpMethod}}", {{#queryParams}}{{#-first}}localVarQueryParams{{/-first}}{{/queryParams}}{{^queryParams}}new ArrayList<>(){{/queryParams}}, {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}},
|
||||
{{#headerParams}}{{#-first}}localVarHeaderParams{{/-first}}{{/headerParams}}{{^headerParams}}new LinkedHashMap<>(){{/headerParams}}, {{#cookieParams}}{{#-first}}localVarCookieParams{{/-first}}{{/cookieParams}}{{^cookieParams}}new LinkedHashMap<>(){{/cookieParams}}, {{#formParams}}{{#-first}}localVarFormParams{{/-first}}{{/formParams}}{{^formParams}}new LinkedHashMap<>(){{/formParams}}, localVarAccept, localVarContentType,
|
||||
{{#hasAuthMethods}}localVarAuthNames{{/hasAuthMethods}}{{^hasAuthMethods}}null{{/hasAuthMethods}}, {{#returnType}}localVarReturnType{{/returnType}}{{^returnType}}null{{/returnType}}, {{#bodyParam}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/bodyParam}}{{^bodyParam}}false{{/bodyParam}});
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ public class {{classname}} {
|
||||
{{#returnType}}
|
||||
GenericType<{{{returnType}}}> localVarReturnType = new GenericType<{{{returnType}}}>() {};
|
||||
{{/returnType}}
|
||||
return apiClient.invokeAPI("{{classname}}.{{operationId}}", {{#hasPathParams}}localVarPath{{/hasPathParams}}{{^hasPathParams}}"{{path}}"{{/hasPathParams}}, "{{httpMethod}}", {{#queryParams}}{{#-first}}localVarQueryParams{{/-first}}{{/queryParams}}{{^queryParams}}new ArrayList<>(){{/queryParams}}, {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}},
|
||||
return apiClient.invokeAPI("{{classname}}.{{operationId}}", {{#hasPathParams}}localVarPath{{/hasPathParams}}{{^hasPathParams}}"{{{path}}}"{{/hasPathParams}}, "{{httpMethod}}", {{#queryParams}}{{#-first}}localVarQueryParams{{/-first}}{{/queryParams}}{{^queryParams}}new ArrayList<>(){{/queryParams}}, {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}},
|
||||
{{#headerParams}}{{#-first}}localVarHeaderParams{{/-first}}{{/headerParams}}{{^headerParams}}new LinkedHashMap<>(){{/headerParams}}, {{#cookieParams}}{{#-first}}localVarCookieParams{{/-first}}{{/cookieParams}}{{^cookieParams}}new LinkedHashMap<>(){{/cookieParams}}, {{#formParams}}{{#-first}}localVarFormParams{{/-first}}{{/formParams}}{{^formParams}}new LinkedHashMap<>(){{/formParams}}, localVarAccept, localVarContentType,
|
||||
{{#hasAuthMethods}}localVarAuthNames{{/hasAuthMethods}}{{^hasAuthMethods}}null{{/hasAuthMethods}}, {{#returnType}}localVarReturnType{{/returnType}}{{^returnType}}null{{/returnType}}, {{#bodyParam}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/bodyParam}}{{^bodyParam}}false{{/bodyParam}});
|
||||
}
|
||||
|
||||
@@ -50,12 +50,12 @@ task execute(type:JavaExec) {
|
||||
}
|
||||
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = 'sources'
|
||||
archiveClassifier = 'sources'
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
archiveClassifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
@@ -73,7 +73,14 @@ ext {
|
||||
swagger_annotations_version = "2.2.9"
|
||||
{{/swagger2AnnotationLibrary}}
|
||||
jackson_version = "2.17.1"
|
||||
{{#useJakartaEe}}
|
||||
jakarta_annotation_version = "2.1.1"
|
||||
beanvalidation_version = "3.0.2"
|
||||
{{/useJakartaEe}}
|
||||
{{^useJakartaEe}}
|
||||
jakarta_annotation_version = "1.3.5"
|
||||
beanvalidation_version = "2.0.2"
|
||||
{{/useJakartaEe}}
|
||||
junit_version = "5.10.2"
|
||||
{{#hasFormParamsInSpec}}
|
||||
httpmime_version = "4.5.13"
|
||||
@@ -94,6 +101,9 @@ dependencies {
|
||||
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"
|
||||
implementation "org.openapitools:jackson-databind-nullable:0.2.1"
|
||||
implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
|
||||
{{#useBeanValidation}}
|
||||
implementation "jakarta.validation:jakarta.validation-api:$beanvalidation_version"
|
||||
{{/useBeanValidation}}
|
||||
{{#hasFormParamsInSpec}}
|
||||
implementation "org.apache.httpcomponents:httpmime:$httpmime_version"
|
||||
{{/hasFormParamsInSpec}}
|
||||
|
||||
@@ -146,7 +146,7 @@ public class {{classname}} {
|
||||
public static class {{operationIdCamelCase}}Oper implements Oper {
|
||||
|
||||
public static final Method REQ_METHOD = {{httpMethod}};
|
||||
public static final String REQ_URI = "{{path}}";
|
||||
public static final String REQ_URI = "{{{path}}}";
|
||||
|
||||
private RequestSpecBuilder reqSpec;
|
||||
private ResponseSpecBuilder respSpec;
|
||||
@@ -155,15 +155,15 @@ public class {{classname}} {
|
||||
this.reqSpec = reqSpec;
|
||||
{{#vendorExtensions}}
|
||||
{{#x-content-type}}
|
||||
reqSpec.setContentType("{{x-content-type}}");
|
||||
reqSpec.setContentType("{{{x-content-type}}}");
|
||||
{{/x-content-type}}
|
||||
reqSpec.setAccept("{{#x-accepts}}{{.}}{{^-last}},{{/-last}}{{/x-accepts}}");
|
||||
reqSpec.setAccept("{{#x-accepts}}{{{.}}}{{^-last}},{{/-last}}{{/x-accepts}}");
|
||||
{{/vendorExtensions}}
|
||||
this.respSpec = new ResponseSpecBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* {{httpMethod}} {{path}}
|
||||
* {{httpMethod}} {{{path}}}
|
||||
* @param handler handler
|
||||
* @param <T> type
|
||||
* @return type
|
||||
@@ -175,7 +175,7 @@ public class {{classname}} {
|
||||
{{#returnType}}
|
||||
|
||||
/**
|
||||
* {{httpMethod}} {{path}}
|
||||
* {{httpMethod}} {{{path}}}
|
||||
* @param handler handler
|
||||
* @return {{returnType}}
|
||||
*/
|
||||
|
||||
@@ -26,7 +26,7 @@ public class OAuth implements Authentication {
|
||||
/**
|
||||
* Sets the bearer access token used for Authorization.
|
||||
*
|
||||
* @param bearerToken The bearer token to send in the Authorization header
|
||||
* @param accessToken The bearer token to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(String accessToken) {
|
||||
setAccessToken(() -> accessToken);
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
<jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>
|
||||
{{/openApiNullable}}
|
||||
{{#useJakartaEe}}
|
||||
<spring-web-version>6.1.13</spring-web-version>
|
||||
<spring-web-version>6.1.14</spring-web-version>
|
||||
<jakarta-annotation-version>2.1.1</jakarta-annotation-version>
|
||||
<beanvalidation-version>3.0.2</beanvalidation-version>
|
||||
{{/useJakartaEe}}
|
||||
|
||||
@@ -233,7 +233,7 @@ public interface {{classname}} {
|
||||
@RequestMapping(
|
||||
method = RequestMethod.{{httpMethod}},
|
||||
value = "{{{path}}}"{{#singleContentTypes}}{{#hasProduces}},
|
||||
produces = { {{#vendorExtensions.x-accepts}}"{{.}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} }{{/hasProduces}}{{#hasConsumes}},
|
||||
produces = { {{#vendorExtensions.x-accepts}}"{{{.}}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} }{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = "{{{vendorExtensions.x-content-type}}}"{{/hasConsumes}}{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}},
|
||||
produces = { {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}} }{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = { {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}} }{{/hasConsumes}}{{/singleContentTypes}}{{#hasVersionHeaders}},
|
||||
|
||||
@@ -54,7 +54,7 @@ public interface {{classname}} {
|
||||
@HttpExchange(
|
||||
method = "{{{httpMethod}}}",
|
||||
value = "{{{path}}}",
|
||||
accept = { {{#vendorExtensions.x-accepts}}"{{.}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} }{{#vendorExtensions.x-content-type}},
|
||||
accept = { {{#vendorExtensions.x-accepts}}"{{{.}}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} }{{#vendorExtensions.x-content-type}},
|
||||
contentType = "{{{vendorExtensions.x-content-type}}}"{{/vendorExtensions.x-content-type}}
|
||||
)
|
||||
{{>responseType}} {{operationId}}(
|
||||
|
||||
@@ -54,7 +54,7 @@ export default class {{classname}} {
|
||||
{{operationId}}() {
|
||||
return {
|
||||
method: '{{httpMethod}}',
|
||||
url: this.basePath + '{{path}}'
|
||||
url: this.basePath + '{{{path}}}'
|
||||
{{#pathParams}}
|
||||
.replace('{' + '{{baseName}}' + '}', ':{{paramName}}')
|
||||
{{/pathParams}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
<Location "{{basePathWithoutHost}}{{path}}">
|
||||
<Location "{{{basePathWithoutHost}}}{{{path}}}">
|
||||
{{>authConf}}
|
||||
<LimitExcept GET POST PUT DELETE>
|
||||
Require valid-user
|
||||
|
||||
@@ -74,7 +74,7 @@ public class {{classname}} {
|
||||
{{/formParams}}
|
||||
|
||||
{{#returnType}}return ({{{.}}}) {{/returnType}}client.invoke(
|
||||
'{{httpMethod}}', '{{path}}',{{#bodyParam}}
|
||||
'{{httpMethod}}', '{{{path}}}',{{#bodyParam}}
|
||||
({{{dataType}}}) params.get('{{paramName}}'){{/bodyParam}}{{^bodyParam}} ''{{/bodyParam}},
|
||||
query, form,
|
||||
new Map<String, Object>{{#hasPathParams}}{
|
||||
|
||||
@@ -104,9 +104,9 @@ std::string convertMapResponse(const std::map<KEY_T, VAL_T>& map)
|
||||
|
||||
namespace {{classname}}Resources {
|
||||
{{#operation}}
|
||||
{{vendorExtensions.x-codegen-resource-name}}Resource::{{vendorExtensions.x-codegen-resource-name}}Resource(const std::string& context /* = "{{contextPath}}" */)
|
||||
{{vendorExtensions.x-codegen-resource-name}}Resource::{{vendorExtensions.x-codegen-resource-name}}Resource(const std::string& context /* = "{{{contextPath}}}" */)
|
||||
{
|
||||
this->set_path(context + "{{path}}");
|
||||
this->set_path(context + "{{{path}}}");
|
||||
this->set_method_handler("{{httpMethod}}",
|
||||
std::bind(&{{vendorExtensions.x-codegen-resource-name}}Resource::handler_{{httpMethod}}_internal, this,
|
||||
std::placeholders::_1));
|
||||
|
||||
@@ -380,7 +380,7 @@ namespace {{packageName}}.{{apiPackage}}
|
||||
uriBuilderLocalVar.Host = HttpClient.BaseAddress{{nrt!}}.Host;
|
||||
uriBuilderLocalVar.Port = HttpClient.BaseAddress.Port;
|
||||
uriBuilderLocalVar.Scheme = HttpClient.BaseAddress.Scheme;
|
||||
uriBuilderLocalVar.Path = ClientUtils.CONTEXT_PATH + "{{path}}";
|
||||
uriBuilderLocalVar.Path = ClientUtils.CONTEXT_PATH + "{{{path}}}";
|
||||
{{/servers}}
|
||||
{{#servers}}
|
||||
{{#-first}}
|
||||
@@ -621,7 +621,7 @@ namespace {{packageName}}.{{apiPackage}}
|
||||
|
||||
ILogger<{{operationId}}ApiResponse> apiResponseLoggerLocalVar = LoggerFactory.CreateLogger<{{operationId}}ApiResponse>();
|
||||
|
||||
{{operationId}}ApiResponse apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{path}}", requestedAtLocalVar, _jsonSerializerOptions);
|
||||
{{operationId}}ApiResponse apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{{path}}}", requestedAtLocalVar, _jsonSerializerOptions);
|
||||
|
||||
After{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}apiResponseLocalVar {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}});
|
||||
|
||||
@@ -674,7 +674,7 @@ namespace {{packageName}}.{{apiPackage}}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
OnError{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}e "{{path}}" uriBuilderLocalVar.Path {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}});
|
||||
OnError{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}e "{{{path}}}" uriBuilderLocalVar.Path {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}});
|
||||
Events.ExecuteOnError{{operationId}}(e);
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
-moduledoc """
|
||||
Exposes the following operation IDs:
|
||||
{{#operations}}{{#operation}}
|
||||
- `{{httpMethod}}` to `{{path}}`, OperationId: `{{operationIdOriginal}}`:
|
||||
- `{{httpMethod}}` to `{{{path}}}`, OperationId: `{{{operationIdOriginal}}}`:
|
||||
{{summary}}.
|
||||
{{notes}}
|
||||
{{/operation}}{{/operations}}
|
||||
|
||||
@@ -22,7 +22,7 @@ module {{classname}}Handlers =
|
||||
/// </summary>
|
||||
[<FunctionName("{{operationId}}")>]
|
||||
let {{operationId}}
|
||||
([<HttpTrigger(Extensions.Http.AuthorizationLevel.Anonymous, "{{httpMethod}}", Route = "{{contextPath}}{{path}}")>]
|
||||
([<HttpTrigger(Extensions.Http.AuthorizationLevel.Anonymous, "{{httpMethod}}", Route = "{{{contextPath}}}{{{path}}}")>]
|
||||
req:HttpRequest ) =
|
||||
|
||||
{{#hasBodyParam}}
|
||||
|
||||
@@ -54,7 +54,7 @@ module App =
|
||||
{{#apis}}
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
{{httpMethod}} >=> {{^hasPathParams}}route{{/hasPathParams}}{{#hasPathParams}}routeBind<{{operationId}}PathParams>{{/hasPathParams}} "{{contextPath}}{{path}}" {{^pathParams}}>=>{{/pathParams}} {{#pathParams}}(fun x -> {{/pathParams}}{{#authMethods}}{{#isOAuth}}requiresAuthentication authFailure{{/isOAuth}}{{#isApiKey}}challenge ApiKeyDefaults.AuthenticationScheme >=> requiresAuthentication authFailure{{/isApiKey}} >=> {{/authMethods}} {{classname}}Handler.{{operationId}}{{#pathParams}} x){{/pathParams}};
|
||||
{{httpMethod}} >=> {{^hasPathParams}}route{{/hasPathParams}}{{#hasPathParams}}routeBind<{{operationId}}PathParams>{{/hasPathParams}} "{{contextPath}}{{{path}}}" {{^pathParams}}>=>{{/pathParams}} {{#pathParams}}(fun x -> {{/pathParams}}{{#authMethods}}{{#isOAuth}}requiresAuthentication authFailure{{/isOAuth}}{{#isApiKey}}challenge ApiKeyDefaults.AuthenticationScheme >=> requiresAuthentication authFailure{{/isApiKey}} >=> {{/authMethods}} {{classname}}Handler.{{operationId}}{{#pathParams}} x){{/pathParams}};
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
{{/apis}}
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
-- /static StaticR Static appStatic
|
||||
|
||||
{{#routes}}
|
||||
{{path}} {{resource}}{{#methods}} {{this}}{{/methods}}
|
||||
{{{path}}} {{resource}}{{#methods}} {{this}}{{/methods}}
|
||||
{{/routes}}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class {{classname}} extends RouteBuilder {
|
||||
.endSecurityDefinition(){{/-last}}{{/isApiKey}}{{#isBasic}}{{#isBasicBasic}}
|
||||
.basicAuth("{{name}}"){{#-last}}.end(){{/-last}}{{/isBasicBasic}}{{#isBasicBearer}}
|
||||
.bearerToken("{{name}}"{{#bearerFormat}}, "{{bearerFormat}}"{{/bearerFormat}}){{#-last}}.end(){{/-last}}{{/isBasicBearer}}{{/isBasic}}{{/authMethods}}{{/hasAuthMethods}}{{/camelSecurityDefinitions}}
|
||||
.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}("{{path}}")
|
||||
.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}("{{{path}}}")
|
||||
.description("{{#summary}}{{{.}}}{{/summary}}")
|
||||
.id("{{operationId}}Api"){{#vendorExtensions}}{{#camelRestBindingMode}}
|
||||
.clientRequestValidation(false)
|
||||
|
||||
@@ -25,7 +25,7 @@ public class {{classname}}Test {
|
||||
public void {{operationId}}TestJson() throws Exception {
|
||||
String contentType = "application/json";
|
||||
String accept = "application/json";
|
||||
String url = API_URL + "{{path}}";
|
||||
String url = API_URL + "{{{path}}}";
|
||||
HttpRequest httpRequest = Unirest.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}(url);{{#hasConsumes}}
|
||||
httpRequest = httpRequest.header("Content-Type", contentType);{{/hasConsumes}}{{#hasProduces}}
|
||||
httpRequest = httpRequest.header("Accept", accept);{{/hasProduces}}{{#pathParams}}
|
||||
@@ -45,7 +45,7 @@ public class {{classname}}Test {
|
||||
public void {{operationId}}TestXml() throws Exception {
|
||||
String contentType = "application/xml";
|
||||
String accept = "application/xml";
|
||||
String url = API_URL + "{{path}}";
|
||||
String url = API_URL + "{{{path}}}";
|
||||
HttpRequest httpRequest = Unirest.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}(url);{{#hasConsumes}}
|
||||
httpRequest = httpRequest.header("Content-Type", contentType);{{/hasConsumes}}{{#hasProduces}}
|
||||
httpRequest = httpRequest.header("Accept", accept);{{/hasProduces}}{{#pathParams}}
|
||||
|
||||
@@ -139,10 +139,10 @@ class {{classname}}Spec extends Specification {
|
||||
MutableHttpRequest request = HttpRequest.{{httpMethod}}{{#vendorExtensions.methodAllowsBody}}{{#bodyParam}}(uri, body){{/bodyParam}}{{#isMultipart}}{{^formParams}}(uri, body){{/formParams}}{{/isMultipart}}{{#formParams.0}}(uri, form){{/formParams.0}}{{^bodyParam}}{{^isMultipart}}{{^formParams}}(uri, null){{/formParams}}{{/isMultipart}}{{/bodyParam}}{{/vendorExtensions.methodAllowsBody}}{{^vendorExtensions.methodAllowsBody}}(uri){{/vendorExtensions.methodAllowsBody}}
|
||||
{{!Fill in all the request parameters}}
|
||||
{{#vendorExtensions.x-content-type}}
|
||||
.contentType('{{vendorExtensions.x-content-type}}')
|
||||
.contentType('{{{vendorExtensions.x-content-type}}}')
|
||||
{{/vendorExtensions.x-content-type}}
|
||||
{{#vendorExtensions.x-accepts}}
|
||||
.accept('{{vendorExtensions.x-accepts}}')
|
||||
.accept('{{{vendorExtensions.x-accepts}}}')
|
||||
{{/vendorExtensions.x-accepts}}
|
||||
{{#headerParams}}
|
||||
.header('{{{baseName}}}', {{{vendorExtensions.groovyExample}}}{{^isString}}.toString(){{/isString}})
|
||||
|
||||
@@ -146,8 +146,8 @@ public class {{classname}}Test {
|
||||
{{closebrace}}{{closebrace}}{{/pathParams.0}});
|
||||
{{!Create the request with body and uri}}
|
||||
MutableHttpRequest<?> request = HttpRequest.{{httpMethod}}{{#vendorExtensions.methodAllowsBody}}{{#bodyParam}}(uri, body){{/bodyParam}}{{#isMultipart}}{{^formParams}}(uri, body){{/formParams}}{{/isMultipart}}{{#formParams.0}}(uri, form){{/formParams.0}}{{^bodyParam}}{{^isMultipart}}{{^formParams}}(uri, null){{/formParams}}{{/isMultipart}}{{/bodyParam}}{{/vendorExtensions.methodAllowsBody}}{{^vendorExtensions.methodAllowsBody}}(uri){{/vendorExtensions.methodAllowsBody}}{{!Fill in all the request parameters}}{{#vendorExtensions.x-contentType}}
|
||||
.contentType("{{vendorExtensions.x-contentType}}"){{/vendorExtensions.x-contentType}}{{#vendorExtensions.x-accepts}}
|
||||
.accept("{{vendorExtensions.x-accepts}}"){{/vendorExtensions.x-accepts}}{{#headerParams}}
|
||||
.contentType("{{{vendorExtensions.x-contentType}}}"){{/vendorExtensions.x-contentType}}{{#vendorExtensions.x-accepts}}
|
||||
.accept("{{{vendorExtensions.x-accepts}}}"){{/vendorExtensions.x-accepts}}{{#headerParams}}
|
||||
.header("{{{baseName}}}", {{^isString}}String.valueOf({{/isString}}{{{example}}}{{^isString}}){{/isString}}){{/headerParams}}{{#cookieParams}}
|
||||
.cookie(Cookie.of("{{{baseName}}}", {{{example}}})){{/cookieParams}};
|
||||
{{!Fill in the query parameters}}
|
||||
|
||||
@@ -58,7 +58,7 @@ public interface {{classname}} {
|
||||
@RequestMapping(
|
||||
method = RequestMethod.{{httpMethod}},
|
||||
value = "{{{path}}}"{{#singleContentTypes}},
|
||||
produces = { {{#vendorExtensions.x-accepts}}"{{.}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} },
|
||||
produces = { {{#vendorExtensions.x-accepts}}"{{{.}}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}} },
|
||||
consumes = "{{{vendorExtensions.x-content-type}}}"{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}},
|
||||
produces = { {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}} }{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = { {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}} }{{/hasConsumes}}{{/singleContentTypes}}
|
||||
|
||||
@@ -9,7 +9,7 @@ import cucumber.api.junit.Cucumber;
|
||||
@ActiveProfiles("test")
|
||||
@CucumberOptions(format = { "pretty", "html:target/cucumber-html-report",
|
||||
{{#resourcePaths}}
|
||||
"json:./report/{{path}}-report-json/{{path}}.json",
|
||||
"json:./report/{{{path}}}-report-json/{{{path}}}.json",
|
||||
{{/resourcePaths}} })
|
||||
public class {{serviceName}}Test {
|
||||
}
|
||||
@@ -24,9 +24,9 @@ public class ExecuteReport {
|
||||
Configuration configuration = null;
|
||||
ReportBuilder reportBuilder = null;
|
||||
{{#resourcePaths}}
|
||||
reportOutputDirectory = new File("./report/{{path}}-report-html/");
|
||||
reportOutputDirectory = new File("./report/{{{path}}}-report-html/");
|
||||
jsonFiles = new ArrayList();
|
||||
jsonFiles.add("./report/{{path}}-report-json/{{path}}.json");
|
||||
jsonFiles.add("./report/{{{path}}}-report-json/{{{path}}}.json");
|
||||
|
||||
configuration = new Configuration(reportOutputDirectory,projectName);
|
||||
// optionally only if you need
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.springframework.boot.SpringApplication
|
||||
import org.springframework.context.ConfigurableApplicationContext
|
||||
|
||||
|
||||
class get{{path}} extends Simulation {
|
||||
class get{{{path}}} extends Simulation {
|
||||
|
||||
|
||||
val app: ConfigurableApplicationContext = SpringApplication.run(classOf[{{basePackage}}.{{serviceName}}Application])
|
||||
|
||||
@@ -32,9 +32,9 @@ public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter
|
||||
{{#resourcePaths}}
|
||||
http.
|
||||
anonymous().disable()
|
||||
.requestMatchers().antMatchers(HttpMethod.GET, "/{{path}}/**")
|
||||
.requestMatchers().antMatchers(HttpMethod.GET, "/{{{path}}}/**")
|
||||
.and().authorizeRequests()
|
||||
.antMatchers(HttpMethod.GET, "/{{path}}/**").access("hasRole('ADMIN')")
|
||||
.antMatchers(HttpMethod.GET, "/{{{path}}}/**").access("hasRole('ADMIN')")
|
||||
.and().exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler());
|
||||
{{/resourcePaths}}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
{{#vendorExtensions.requests}}
|
||||
### {{#summary}}{{summary}}{{/summary}}
|
||||
## {{name}}
|
||||
{{httpMethod}} {{basePath}}{{#lambda.doubleMustache}}{{path}}{{/lambda.doubleMustache}}{{>queryParams}}
|
||||
{{httpMethod}} {{basePath}}{{#lambda.doubleMustache}}{{{path}}}{{/lambda.doubleMustache}}{{>queryParams}}
|
||||
{{#consumes}}
|
||||
Content-Type: {{{mediaType}}}
|
||||
{{/consumes}}
|
||||
|
||||
@@ -46,7 +46,7 @@ function _oacinternal_{{operationId}}(_api::{{classname}}{{#allParams}}{{#requir
|
||||
|
||||
{{/hasValidation}}
|
||||
{{/allParams}}
|
||||
_ctx = OpenAPI.Clients.Ctx(_api.client, "{{httpMethod}}", _returntypes_{{operationId}}_{{classname}}, "{{path}}", [{{#authMethods}}"{{name}}", {{/authMethods}}]{{#bodyParam}}, {{paramName}}{{/bodyParam}})
|
||||
_ctx = OpenAPI.Clients.Ctx(_api.client, "{{httpMethod}}", _returntypes_{{operationId}}_{{classname}}, "{{{path}}}", [{{#authMethods}}"{{name}}", {{/authMethods}}]{{#bodyParam}}, {{paramName}}{{/bodyParam}})
|
||||
{{#pathParams}}
|
||||
OpenAPI.Clients.set_param(_ctx.path, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}{{#isListContainer}}; collection_format="{{collectionFormat}}"{{/isListContainer}}) # type {{dataType}}
|
||||
{{/pathParams}}
|
||||
|
||||
@@ -61,7 +61,7 @@ end
|
||||
|
||||
function register{{classname}}(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
|
||||
{{#operation}}
|
||||
HTTP.register!(router, "{{httpMethod}}", path_prefix * "{{path}}", OpenAPI.Servers.middleware(impl, {{operationId}}_read, {{operationId}}_validate, {{operationId}}_invoke; optional_middlewares...))
|
||||
HTTP.register!(router, "{{httpMethod}}", path_prefix * "{{{path}}}", OpenAPI.Servers.middleware(impl, {{operationId}}_read, {{operationId}}_validate, {{operationId}}_invoke; optional_middlewares...))
|
||||
{{/operation}}
|
||||
return router
|
||||
end
|
||||
|
||||
@@ -10,7 +10,7 @@ The following server methods must be implemented:
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
- **{{operationId}}**
|
||||
- *invocation:* {{httpMethod}} {{path}}
|
||||
- *invocation:* {{httpMethod}} {{{path}}}
|
||||
- *signature:* {{operationId}}(req::HTTP.Request{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}}) -> {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
|
||||
@@ -74,6 +74,9 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
@Deprecated(message = "This schema is deprecated.")
|
||||
{{/isDeprecated}}
|
||||
{{>additionalModelTypeAnnotations}}
|
||||
{{#vendorExtensions.x-class-extra-annotation}}
|
||||
{{{vendorExtensions.x-class-extra-annotation}}}
|
||||
{{/vendorExtensions.x-class-extra-annotation}}
|
||||
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}{{#hasVars}}data {{/hasVars}}class{{/discriminator}} {{classname}}{{^discriminator}} (
|
||||
|
||||
{{#allVars}}
|
||||
@@ -194,7 +197,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
companion object {
|
||||
var openapiFields = HashSet<String>()
|
||||
var openapiRequiredFields = HashSet<String>()
|
||||
|
||||
|
||||
init {
|
||||
{{#allVars}}
|
||||
{{#-first}}
|
||||
@@ -210,7 +213,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
openapiRequiredFields.add("{{baseName}}")
|
||||
{{/requiredVars}}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
@@ -227,7 +230,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
{{^hasChildren}}
|
||||
{{#requiredVars}}
|
||||
{{#-first}}
|
||||
|
||||
|
||||
// check to make sure all required properties/fields are present in the JSON string
|
||||
for (requiredField in openapiRequiredFields) {
|
||||
requireNotNull(jsonElement!!.getAsJsonObject()[requiredField]) {
|
||||
@@ -249,7 +252,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
if (!jsonObj.get("{{{baseName}}}").isJsonArray) {
|
||||
throw IllegalArgumentException(String.format("Expected the field `{{{baseName}}}` to be an array in the JSON string but got `%s`", jsonObj["{{{baseName}}}"].toString()))
|
||||
}
|
||||
|
||||
|
||||
// validate the required field `{{{baseName}}}` (array)
|
||||
for (i in 0 until jsonObj.getAsJsonArray("{{{baseName}}}").size()) {
|
||||
{{{items.dataType}}}.validateJsonElement(jsonObj.getAsJsonArray("{{{baseName}}}").get(i))
|
||||
@@ -262,7 +265,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
require(jsonObj["{{{baseName}}}"].isJsonArray) {
|
||||
String.format("Expected the field `{{{baseName}}}` to be an array in the JSON string but got `%s`", jsonObj["{{{baseName}}}"].toString())
|
||||
}
|
||||
|
||||
|
||||
// validate the optional field `{{{baseName}}}` (array)
|
||||
for (i in 0 until jsonObj.getAsJsonArray("{{{baseName}}}").size()) {
|
||||
{{{items.dataType}}}.validateJsonElement(jsonObj.getAsJsonArray("{{{baseName}}}").get(i))
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
{{^isEnum}}{{^isArray}}{{^isPrimitiveType}}{{^isModel}}@Contextual {{/isModel}}{{/isPrimitiveType}}{{/isArray}}{{/isEnum}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}")
|
||||
{{/kotlinx_serialization}}
|
||||
{{/multiplatform}}
|
||||
{{#vendorExtensions.x-field-extra-annotation}}
|
||||
{{{vendorExtensions.x-field-extra-annotation}}}
|
||||
{{/vendorExtensions.x-field-extra-annotation}}
|
||||
{{#deprecated}}
|
||||
@Deprecated(message = "This property is deprecated.")
|
||||
{{/deprecated}}
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
{{^isEnum}}{{^isArray}}{{^isPrimitiveType}}{{^isModel}}@Contextual {{/isModel}}{{/isPrimitiveType}}{{/isArray}}{{/isEnum}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}")
|
||||
{{/kotlinx_serialization}}
|
||||
{{/multiplatform}}
|
||||
{{#vendorExtensions.x-field-extra-annotation}}
|
||||
{{{vendorExtensions.x-field-extra-annotation}}}
|
||||
{{/vendorExtensions.x-field-extra-annotation}}
|
||||
{{#deprecated}}
|
||||
@Deprecated(message = "This property is deprecated.")
|
||||
{{/deprecated}}
|
||||
|
||||
@@ -134,7 +134,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
||||
|
||||
val localVariableConfig = RequestConfig<kotlin.Any?>(
|
||||
RequestMethod.{{httpMethod}},
|
||||
"{{path}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", "${{{paramName}}}"){{/pathParams}},
|
||||
"{{{path}}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", "${{{paramName}}}"){{/pathParams}},
|
||||
query = localVariableQuery,
|
||||
headers = localVariableHeaders,
|
||||
requiresAuthentication = {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}},
|
||||
|
||||
@@ -232,7 +232,7 @@ import {{packageName}}.infrastructure.toMultiValue
|
||||
|
||||
return RequestConfig(
|
||||
method = RequestMethod.{{httpMethod}},
|
||||
path = "{{path}}"{{#pathParams}}.replace("{"+"{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}},
|
||||
path = "{{{path}}}"{{#pathParams}}.replace("{"+"{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}},
|
||||
query = localVariableQuery,
|
||||
headers = localVariableHeaders,
|
||||
requiresAuthentication = {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}},
|
||||
|
||||
@@ -133,7 +133,7 @@ import {{packageName}}.infrastructure.*
|
||||
|
||||
return RequestConfig(
|
||||
method = RequestMethod.{{httpMethod}},
|
||||
path = "{{path}}",
|
||||
path = "{{{path}}}",
|
||||
params = params,
|
||||
query = localVariableQuery,
|
||||
headers = localVariableHeaders,
|
||||
|
||||
@@ -135,7 +135,7 @@ import {{packageName}}.infrastructure.*
|
||||
|
||||
return RequestConfig(
|
||||
method = RequestMethod.{{httpMethod}},
|
||||
path = "{{path}}",
|
||||
path = "{{{path}}}",
|
||||
params = params,
|
||||
query = localVariableQuery,
|
||||
headers = localVariableHeaders,
|
||||
|
||||
@@ -136,7 +136,7 @@ import {{packageName}}.infrastructure.*
|
||||
{{/isDeprecated}}
|
||||
fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : Future<ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>> {
|
||||
val vertxClient = WebClient.create(vertx)
|
||||
val request = vertxClient.requestAbs(HttpMethod.{{httpMethod}}, UriTemplate.of("$basePath{{path}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}}))
|
||||
val request = vertxClient.requestAbs(HttpMethod.{{httpMethod}}, UriTemplate.of("$basePath{{{path}}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}}))
|
||||
|
||||
{{#hasFormParams}}request.putHeader("Content-Type", {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}}){{/hasFormParams}}
|
||||
{{#headerParams}}{{{paramName}}}{{^required}}?{{/required}}.apply { request.putHeader("{{baseName}}", {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}})}{{/headerParams}}
|
||||
|
||||
@@ -105,7 +105,7 @@ import kotlinx.serialization.encoding.*
|
||||
|
||||
val localVariableConfig = RequestConfig<kotlin.Any?>(
|
||||
RequestMethod.{{httpMethod}},
|
||||
"{{path}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", {{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{^isEnum}}"${{{paramName}}}"{{/isEnum}}{{#isEnum}}"${ {{paramName}}.value }"{{/isEnum}}{{/isContainer}}){{/pathParams}},
|
||||
"{{{path}}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", {{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{^isEnum}}"${{{paramName}}}"{{/isEnum}}{{#isEnum}}"${ {{paramName}}.value }"{{/isEnum}}{{/isContainer}}){{/pathParams}},
|
||||
query = localVariableQuery,
|
||||
headers = localVariableHeaders,
|
||||
requiresAuthentication = {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}},
|
||||
|
||||
@@ -23,7 +23,7 @@ fun main() {
|
||||
{{#apis}}
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
{{#lowercase}}{{httpMethod}}{{/lowercase}}("{{path}}", {{classname}}::{{operationId}})
|
||||
{{#lowercase}}{{httpMethod}}{{/lowercase}}("{{{path}}}", {{classname}}::{{operationId}})
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ object Paths {
|
||||
{{#allParams}}* @param {{paramName}} {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
|
||||
{{/allParams}}*/
|
||||
{{#hasParams}}
|
||||
@Serializable @Resource("{{path}}") class {{operationId}}({{#allParams}}val {{paramName}}: {{{dataType}}}{{^required}}? = null{{/required}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||
@Serializable @Resource("{{{path}}}") class {{operationId}}({{#allParams}}val {{paramName}}: {{{dataType}}}{{^required}}? = null{{/required}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||
{{/hasParams}}
|
||||
{{^hasParams}}
|
||||
@Serializable @Resource("{{path}}") class {{operationId}}
|
||||
@Serializable @Resource("{{{path}}}") class {{operationId}}
|
||||
{{/hasParams}}
|
||||
|
||||
{{/operation}}
|
||||
|
||||
@@ -83,8 +83,8 @@ class {{classname}}Controller({{#serviceInterface}}@Autowired(required = true) v
|
||||
value = [{{#responses}}ApiResponse(code = {{{code}}}, message = "{{{message}}}"{{#baseType}}, response = {{{.}}}::class{{/baseType}}{{#containerType}}, responseContainer = "{{{.}}}"{{/containerType}}){{^-last}},{{/-last}}{{/responses}}]){{/swagger1AnnotationLibrary}}
|
||||
@RequestMapping(
|
||||
method = [RequestMethod.{{httpMethod}}],
|
||||
value = ["{{#lambdaEscapeInNormalString}}{{path}}{{/lambdaEscapeInNormalString}}"]{{#singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#vendorExtensions.x-accepts}}"{{.}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
value = ["{{#lambdaEscapeInNormalString}}{{{path}}}{{/lambdaEscapeInNormalString}}"]{{#singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#vendorExtensions.x-accepts}}"{{{.}}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = "{{{vendorExtensions.x-content-type}}}"{{/hasConsumes}}{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = [{{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}}]{{/hasConsumes}}{{/singleContentTypes}}
|
||||
|
||||
@@ -96,8 +96,8 @@ interface {{classname}} {
|
||||
value = [{{#responses}}ApiResponse(code = {{{code}}}, message = "{{{message}}}"{{#baseType}}, response = {{{.}}}::class{{/baseType}}{{#containerType}}, responseContainer = "{{{.}}}"{{/containerType}}){{^-last}}, {{/-last}}{{/responses}}]){{/swagger1AnnotationLibrary}}
|
||||
@RequestMapping(
|
||||
method = [RequestMethod.{{httpMethod}}],
|
||||
value = ["{{#lambdaEscapeInNormalString}}{{path}}{{/lambdaEscapeInNormalString}}"]{{#singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#vendorExtensions.x-accepts}}"{{.}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
value = ["{{#lambdaEscapeInNormalString}}{{{path}}}{{/lambdaEscapeInNormalString}}"]{{#singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#vendorExtensions.x-accepts}}"{{{.}}}"{{^-last}}, {{/-last}}{{/vendorExtensions.x-accepts}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = "{{{vendorExtensions.x-content-type}}}"{{/hasConsumes}}{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}},
|
||||
produces = [{{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}}]{{/hasProduces}}{{#hasConsumes}},
|
||||
consumes = [{{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}}]{{/hasConsumes}}{{/singleContentTypes}}
|
||||
|
||||
@@ -33,7 +33,7 @@ open class {{classname}}Stubs(private val objectMapper: ObjectMapper) {
|
||||
* @return A [{{operationIdCamelCase}}StubBuilder] to configure the response, and the final [MappingBuilder].
|
||||
*/
|
||||
fun {{operationId}}({{#pathParams}}{{paramName}}: StringValuePattern, {{/pathParams}}{{#queryParams}}{{paramName}}: StringValuePattern? = null, {{/queryParams}}configurer: MappingBuilder.() -> MappingBuilder = { this }): {{operationIdCamelCase}}StubBuilder =
|
||||
{{operationIdCamelCase}}StubBuilder(objectMapper, {{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}(urlPathTemplate("{{path}}"))
|
||||
{{operationIdCamelCase}}StubBuilder(objectMapper, {{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}(urlPathTemplate("{{{path}}}"))
|
||||
{{#pathParams}}
|
||||
.withPathParam("{{baseName}}", {{paramName}})
|
||||
{{/pathParams}}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<p>{{description}}</p>
|
||||
{{#notes}}<p>{{.}}</p>{{/notes}}
|
||||
<h3 class="section">URL</h3>
|
||||
<code>{{basePath}}{{path}}</code>
|
||||
<code>{{{basePath}}}{{{path}}}</code>
|
||||
<h3 class="section">HTTP Method</h3>
|
||||
<code>{{httpMethod}}</code>
|
||||
<h3 class="section">Response Type</h3>
|
||||
|
||||
@@ -36,7 +36,7 @@ class ApiClient extends OAGAC\AbstractApiClient
|
||||
{{>api_arg_declaration
|
||||
}} ): ResponseInterface
|
||||
{
|
||||
$request = $this->createRequest('{{httpMethod}}', '{{path}}', {{#pathParams.0}}$this->getPathParameters($parameters){{/pathParams.0}}{{^pathParams.0}}[]{{/pathParams.0}}, {{#queryParams.0}}$this->getQueryParameters($parameters){{/queryParams.0}}{{^queryParams.0}}[]{{/queryParams.0}});
|
||||
$request = $this->createRequest('{{httpMethod}}', '{{{path}}}', {{#pathParams.0}}$this->getPathParameters($parameters){{/pathParams.0}}{{^pathParams.0}}[]{{/pathParams.0}}, {{#queryParams.0}}$this->getQueryParameters($parameters){{/queryParams.0}}{{^queryParams.0}}[]{{/queryParams.0}});
|
||||
{{#headerParams.0}}
|
||||
$request = $this->addCustomHeaders($request, $parameters);
|
||||
{{/headerParams.0}}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# {{pathPrefix}}
|
||||
{{#operation}}
|
||||
{{bundleAlias}}_{{pathPrefix}}_{{operationIdLowerCase}}:
|
||||
path: {{path}}
|
||||
path: {{{path}}}
|
||||
methods: [{{httpMethod}}]
|
||||
defaults:
|
||||
_controller: {{bundleAlias}}.controller.{{pathPrefix}}::{{operationId}}Action
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "{{path}}{{#isDeprecated}} (DEPRECATED){{/isDeprecated}}",
|
||||
"name": "{{{path}}}{{#isDeprecated}} (DEPRECATED){{/isDeprecated}}",
|
||||
"description": "{{{notes}}}",
|
||||
"item": [
|
||||
{{#vendorExtensions.postmanRequests}}
|
||||
@@ -27,7 +27,7 @@
|
||||
}
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{=<% %>=}}{{baseUrl}}<%={{ }}=%>{{path}}",
|
||||
"raw": "{{=<% %>=}}{{baseUrl}}<%={{ }}=%>{{{path}}}",
|
||||
"host": [
|
||||
"{{=<% %>=}}{{baseUrl}}<%={{ }}=%>"
|
||||
],
|
||||
|
||||
@@ -38,7 +38,7 @@ for _, name, _ in pkgutil.iter_modules(ns_pkg.__path__, ns_pkg.__name__ + "."):
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
@router.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}(
|
||||
"{{path}}",
|
||||
"{{{path}}}",
|
||||
responses={
|
||||
{{#responses}}
|
||||
{{code}}: {{=<% %>=}}{<%#dataType%>"model": <%dataType%>, "description": "<%message%>"<%/dataType%><%^dataType%>"description": "<%message%>"<%/dataType%>}<%={{ }}=%>,
|
||||
|
||||
@@ -461,7 +461,7 @@
|
||||
|
||||
{{/bodyParams}}
|
||||
{{/hasBodyParam}}
|
||||
local_var_url_path <- "{{path}}"
|
||||
local_var_url_path <- "{{{path}}}"
|
||||
{{#hasPathParams}}
|
||||
{{#pathParams}}
|
||||
if (!missing(`{{paramName}}`)) {
|
||||
|
||||
@@ -12,7 +12,7 @@ Rails.application.routes.draw do
|
||||
{{#apis}}
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
add_openapi_route '{{httpMethod}}', '{{basePathWithoutHost}}{{path}}', controller_name: '{{classVarName}}', action_name: {{#isRestfulIndex}}'index'{{/isRestfulIndex}}{{#isRestfulCreate}}'create'{{/isRestfulCreate}}{{#isRestfulUpdate}}'update'{{/isRestfulUpdate}}{{#isRestfulShow}}'show'{{/isRestfulShow}}{{#isRestfulDestroy}}'destroy'{{/isRestfulDestroy}}{{^isRestful}}'{{nickname}}'{{/isRestful}}
|
||||
add_openapi_route '{{httpMethod}}', '{{{basePathWithoutHost}}}{{{path}}}', controller_name: '{{classVarName}}', action_name: {{#isRestfulIndex}}'index'{{/isRestfulIndex}}{{#isRestfulCreate}}'create'{{/isRestfulCreate}}{{#isRestfulUpdate}}'update'{{/isRestfulUpdate}}{{#isRestfulShow}}'show'{{/isRestfulShow}}{{#isRestfulDestroy}}'destroy'{{/isRestfulDestroy}}{{^isRestful}}'{{nickname}}'{{/isRestful}}
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
{{/apis}}
|
||||
|
||||
@@ -542,7 +542,6 @@ impl std::str::FromStr for {{{classname}}} {
|
||||
{{/arrayModelType}}
|
||||
{{^arrayModelType}}
|
||||
{{! general struct}}
|
||||
|
||||
{{#anyOf.size}}
|
||||
/// Any of:
|
||||
{{#anyOf}}
|
||||
@@ -575,7 +574,6 @@ impl PartialEq for {{{classname}}} {
|
||||
}
|
||||
}
|
||||
{{/anyOf.size}}
|
||||
|
||||
{{#oneOf.size}}
|
||||
/// One of:
|
||||
{{#oneOf}}
|
||||
@@ -608,7 +606,6 @@ impl PartialEq for {{{classname}}} {
|
||||
}
|
||||
}
|
||||
{{/oneOf.size}}
|
||||
|
||||
{{^anyOf.size}}
|
||||
{{^oneOf.size}}
|
||||
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, validator::Validate)]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user