From aaef017a5a730812ac3c209cb106edda4f4349cd Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Fri, 20 Mar 2020 11:06:08 +0100 Subject: [PATCH 01/15] [Kotlin][Retrofit2] add generator support for coroutines and suspend functions (#5076) --- bin/kotlin-client-gson.sh | 2 +- bin/kotlin-client-jackson.sh | 2 +- bin/kotlin-client-json-request-string.sh | 2 +- bin/kotlin-client-moshi-codegen.sh | 2 +- bin/kotlin-client-nonpublic.sh | 2 +- bin/kotlin-client-nullable.sh | 2 +- bin/kotlin-client-okhttp3.sh | 2 +- bin/kotlin-client-petstore-multiplatform.sh | 2 +- bin/kotlin-client-petstore.sh | 2 +- bin/kotlin-client-retrofit2-coroutines.sh | 32 ++ bin/kotlin-client-retrofit2.sh | 2 +- bin/kotlin-client-string.sh | 2 +- bin/kotlin-client-threetenbp.sh | 2 +- bin/kotlin-client-uppercase-enum.sh | 2 +- bin/windows/kotlin-client-gson.bat | 2 +- .../kotlin-client-json-request-string.bat | 2 +- bin/windows/kotlin-client-moshi-codegen.bat | 2 +- bin/windows/kotlin-client-nonpublic.bat | 2 +- bin/windows/kotlin-client-nullable.bat | 2 +- bin/windows/kotlin-client-okhttp3.bat | 2 +- .../kotlin-client-petstore-multiplatform.bat | 2 +- bin/windows/kotlin-client-petstore.bat | 2 +- .../kotlin-client-retrofit2-suspend.bat | 10 + bin/windows/kotlin-client-retrofit2.bat | 2 +- bin/windows/kotlin-client-string.bat | 2 +- bin/windows/kotlin-client-threetenbp.bat | 2 +- .../codegen/CodegenConstants.java | 3 + .../languages/AbstractKotlinCodegen.java | 16 + .../languages/KotlinClientCodegen.java | 16 +- .../resources/kotlin-client/README.mustache | 2 +- .../libraries/jvm-retrofit2/api.mustache | 22 +- .../libraries/jvm-retrofit2/api_doc.mustache | 83 +++++ .../auth/HttpBasicAuth.kt.mustache | 33 ++ .../auth/HttpBearerAuth.kt.mustache | 39 ++ .../jvm-retrofit2/bodyParams.mustache | 2 +- .../infrastructure/ApiClient.kt.mustache | 142 +++++++- .../java/retrofit2-play24/local.properties | 8 + .../java/retrofit2-play26/local.properties | 8 + .../petstore/java/retrofit2/local.properties | 8 + .../org/openapitools/client/ApiClient.java | 31 +- samples/client/petstore/kotlin-gson/pom.xml | 46 --- .../kotlin-petstore-jackson.kotlin_module | Bin 134 -> 0 bytes .../main/org/openapitools/ApplicationKt.class | Bin 3936 -> 0 bytes .../client/apis/PetApi$WhenMappings.class | Bin 1458 -> 0 bytes .../org/openapitools/client/apis/PetApi.class | Bin 82237 -> 0 bytes .../client/apis/StoreApi$WhenMappings.class | Bin 1040 -> 0 bytes .../openapitools/client/apis/StoreApi.class | Bin 42521 -> 0 bytes .../client/apis/UserApi$WhenMappings.class | Bin 1459 -> 0 bytes .../openapitools/client/apis/UserApi.class | Bin 79974 -> 0 bytes ...tionsKt$defaultMultiValueConverter$1.class | Bin 1439 -> 0 bytes .../infrastructure/ApiAbstractionsKt.class | Bin 5327 -> 0 bytes .../ApiClient$Companion$client$2.class | Bin 1445 -> 0 bytes .../infrastructure/ApiClient$Companion.class | Bin 4330 -> 0 bytes .../ApiClient$WhenMappings.class | Bin 768 -> 0 bytes .../client/infrastructure/ApiClient.class | Bin 31155 -> 0 bytes .../ApiInfrastructureResponse.class | Bin 1608 -> 0 bytes .../ApplicationDelegates$SetOnce.class | Bin 3186 -> 0 bytes .../infrastructure/ApplicationDelegates.class | Bin 1711 -> 0 bytes .../client/infrastructure/ClientError.class | Bin 2831 -> 0 bytes .../ClientException$Companion.class | Bin 945 -> 0 bytes .../infrastructure/ClientException.class | Bin 1622 -> 0 bytes .../client/infrastructure/Informational.class | Bin 2740 -> 0 bytes .../client/infrastructure/Redirection.class | Bin 2479 -> 0 bytes .../client/infrastructure/RequestConfig.class | Bin 5445 -> 0 bytes .../client/infrastructure/RequestMethod.class | Bin 1652 -> 0 bytes .../infrastructure/ResponseExtensionsKt.class | Bin 1499 -> 0 bytes .../client/infrastructure/ResponseType.class | Bin 1580 -> 0 bytes .../client/infrastructure/Serializer.class | Bin 2066 -> 0 bytes .../client/infrastructure/ServerError.class | Bin 2858 -> 0 bytes .../ServerException$Companion.class | Bin 945 -> 0 bytes .../infrastructure/ServerException.class | Bin 1622 -> 0 bytes .../client/infrastructure/Success.class | Bin 2686 -> 0 bytes .../client/models/ApiResponse.class | Bin 3611 -> 0 bytes .../openapitools/client/models/Category.class | Bin 3046 -> 0 bytes .../client/models/Order$Status.class | Bin 2115 -> 0 bytes .../openapitools/client/models/Order.class | Bin 5914 -> 0 bytes .../client/models/Pet$Status.class | Bin 2093 -> 0 bytes .../org/openapitools/client/models/Pet.class | Bin 6141 -> 0 bytes .../org/openapitools/client/models/Tag.class | Bin 3011 -> 0 bytes .../org/openapitools/client/models/User.class | Bin 6313 -> 0 bytes .../kotlin/compileKotlin/build-history.bin | Bin 31 -> 0 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 4096 -> 0 bytes .../inputs/source-to-output.tab.keystream | Bin 4096 -> 0 bytes .../inputs/source-to-output.tab.keystream.len | Bin 8 -> 0 bytes .../inputs/source-to-output.tab.len | Bin 8 -> 0 bytes .../inputs/source-to-output.tab.values.at | Bin 11858 -> 0 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 32768 -> 0 bytes .../inputs/source-to-output.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 4096 -> 0 bytes .../class-fq-name-to-source.tab.keystream | Bin 4096 -> 0 bytes .../class-fq-name-to-source.tab.keystream.len | Bin 8 -> 0 bytes .../kotlin/class-fq-name-to-source.tab.len | Bin 8 -> 0 bytes .../class-fq-name-to-source.tab.values.at | Bin 5659 -> 0 bytes .../jvm/kotlin/class-fq-name-to-source.tab_i | Bin 32768 -> 0 bytes .../kotlin/class-fq-name-to-source.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/constants.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/constants.tab.keystream | Bin 4096 -> 0 bytes .../jvm/kotlin/constants.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/constants.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/constants.tab.values.at | Bin 529 -> 0 bytes .../caches-jvm/jvm/kotlin/constants.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/jvm/kotlin/constants.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/inline-functions.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/inline-functions.tab.keystream | Bin 4096 -> 0 bytes .../kotlin/inline-functions.tab.keystream.len | Bin 8 -> 0 bytes .../jvm/kotlin/inline-functions.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/inline-functions.tab.values.at | Bin 670 -> 0 bytes .../jvm/kotlin/inline-functions.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/inline-functions.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 4096 -> 0 bytes .../internal-name-to-source.tab.keystream | Bin 4096 -> 0 bytes .../internal-name-to-source.tab.keystream.len | Bin 8 -> 0 bytes .../kotlin/internal-name-to-source.tab.len | Bin 8 -> 0 bytes .../internal-name-to-source.tab.values.at | Bin 7371 -> 0 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 32768 -> 0 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/package-parts.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/package-parts.tab.keystream | Bin 4096 -> 0 bytes .../kotlin/package-parts.tab.keystream.len | Bin 8 -> 0 bytes .../jvm/kotlin/package-parts.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/package-parts.tab.values.at | Bin 58 -> 0 bytes .../caches-jvm/jvm/kotlin/package-parts.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/package-parts.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab | Bin 4096 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 4096 -> 0 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 18862 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 8 -> 0 bytes .../jvm/kotlin/source-to-classes.tab | Bin 4096 -> 0 bytes .../kotlin/source-to-classes.tab.keystream | Bin 4096 -> 0 bytes .../source-to-classes.tab.keystream.len | Bin 8 -> 0 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 8 -> 0 bytes .../kotlin/source-to-classes.tab.values.at | Bin 2331 -> 0 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/subtypes.tab.keystream | Bin 4096 -> 0 bytes .../jvm/kotlin/subtypes.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/subtypes.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 793 -> 0 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 4096 -> 0 bytes .../jvm/kotlin/supertypes.tab.keystream | Bin 4096 -> 0 bytes .../jvm/kotlin/supertypes.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/jvm/kotlin/supertypes.tab.len | Bin 8 -> 0 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 689 -> 0 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i | Bin 32768 -> 0 bytes .../jvm/kotlin/supertypes.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/counters.tab | 2 - .../caches-jvm/lookups/file-to-id.tab | Bin 4096 -> 0 bytes .../lookups/file-to-id.tab.keystream | Bin 4096 -> 0 bytes .../lookups/file-to-id.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 8 -> 0 bytes .../lookups/file-to-id.tab.values.at | Bin 163 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 4096 -> 0 bytes .../lookups/id-to-file.tab.keystream | Bin 4096 -> 0 bytes .../lookups/id-to-file.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 8 -> 0 bytes .../lookups/id-to-file.tab.values.at | Bin 3654 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/lookups.tab | Bin 16384 -> 0 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 12288 -> 0 bytes .../lookups/lookups.tab.keystream.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 8 -> 0 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 12507 -> 0 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 32768 -> 0 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 8 -> 0 bytes .../build/kotlin/compileKotlin/last-build.bin | Bin 81 -> 0 bytes .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - .../client/petstore/kotlin-jackson/gradlew | 172 --------- .../petstore/kotlin-jackson/gradlew.bat | 84 ----- .../client/petstore/kotlin-jackson/pom.xml | 46 --- .../org/openapitools/client/Application.kt | 20 -- .../kotlin-json-request-string/pom.xml | 46 --- .../petstore/kotlin-moshi-codegen/pom.xml | 46 --- .../petstore/kotlin-multiplatform/pom.xml | 47 --- .../client/petstore/kotlin-nonpublic/pom.xml | 46 --- .../client/petstore/kotlin-nullable/README.md | 90 ----- .../client/petstore/kotlin-nullable/pom.xml | 46 --- .../client/petstore/kotlin-okhttp3/README.md | 90 ----- .../client/petstore/kotlin-okhttp3/pom.xml | 46 --- .../petstore/kotlin-retrofit2/README.md | 90 ----- .../org/openapitools/client/apis/PetApi.kt | 41 --- .../org/openapitools/client/apis/StoreApi.kt | 25 -- .../org/openapitools/client/apis/UserApi.kt | 37 -- .../client/infrastructure/ApiClient.kt | 33 -- .../client/petstore/kotlin-string/README.md | 90 ----- samples/client/petstore/kotlin-string/pom.xml | 46 --- .../org/openapitools/client/PetApiTest.kt | 104 ------ .../petstore/kotlin-threetenbp/README.md | 90 ----- .../client/petstore/kotlin-threetenbp/pom.xml | 46 --- .../org/openapitools/client/PetApiTest.kt | 104 ------ .../.openapi-generator/VERSION | 1 - samples/client/petstore/kotlin/.gitignore | 106 ------ samples/client/petstore/kotlin/README.md | 90 ----- .../org/openapitools/client/apis/PetApi.kt | 278 --------------- .../org/openapitools/client/apis/StoreApi.kt | 146 -------- .../org/openapitools/client/apis/UserApi.kt | 271 -------------- .../client/infrastructure/ApiAbstractions.kt | 20 -- .../client/infrastructure/ApiClient.kt | 141 -------- .../ApiInfrastructureResponse.kt | 40 --- .../client/infrastructure/Errors.kt | 42 --- .../client/infrastructure/RequestConfig.kt | 16 - .../infrastructure/ResponseExtensions.kt | 23 -- .../client/infrastructure/Serializer.kt | 14 - .../kotlin/gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - samples/client/petstore/kotlin/gradlew | 172 --------- samples/client/petstore/kotlin/gradlew.bat | 84 ----- .../gson}/.openapi-generator-ignore | 0 .../gson}/.openapi-generator/VERSION | 0 .../{kotlin-gson => kotlin/gson}/README.md | 2 +- .../{kotlin-gson => kotlin/gson}/build.gradle | 0 .../gson}/docs/ApiResponse.md | 0 .../gson}/docs/Category.md | 0 .../gson}/docs/Order.md | 0 .../{kotlin-gson => kotlin/gson}/docs/Pet.md | 0 .../gson}/docs/PetApi.md | 0 .../gson}/docs/StoreApi.md | 0 .../{kotlin-gson => kotlin/gson}/docs/Tag.md | 0 .../{kotlin-gson => kotlin/gson}/docs/User.md | 0 .../gson}/docs/UserApi.md | 0 .../gson}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/DateAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../jackson}/.openapi-generator-ignore | 0 .../jackson}/.openapi-generator/VERSION | 0 .../jackson}/README.md | 2 +- .../jackson}/build.gradle | 0 .../jackson}/docs/ApiResponse.md | 0 .../jackson}/docs/Category.md | 0 .../jackson}/docs/Order.md | 0 .../jackson}/docs/Pet.md | 0 .../jackson}/docs/PetApi.md | 0 .../jackson}/docs/StoreApi.md | 0 .../jackson}/docs/Tag.md | 0 .../jackson}/docs/User.md | 0 .../jackson}/docs/UserApi.md | 0 .../jackson}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../.openapi-generator-ignore | 0 .../.openapi-generator/VERSION | 0 .../json-request-string}/README.md | 2 +- .../json-request-string}/build.gradle | 0 .../json-request-string}/docs/ApiResponse.md | 0 .../json-request-string}/docs/Category.md | 0 .../json-request-string}/docs/Order.md | 0 .../json-request-string}/docs/Pet.md | 0 .../json-request-string}/docs/PetApi.md | 0 .../json-request-string}/docs/StoreApi.md | 0 .../json-request-string}/docs/Tag.md | 0 .../json-request-string}/docs/User.md | 0 .../json-request-string}/docs/UserApi.md | 0 .../json-request-string}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../moshi-codegen}/.openapi-generator-ignore | 0 .../moshi-codegen}/.openapi-generator/VERSION | 0 .../moshi-codegen}/README.md | 2 +- .../moshi-codegen}/build.gradle | 0 .../moshi-codegen}/docs/ApiResponse.md | 0 .../moshi-codegen}/docs/Category.md | 0 .../moshi-codegen}/docs/Order.md | 0 .../moshi-codegen}/docs/Pet.md | 0 .../moshi-codegen}/docs/PetApi.md | 0 .../moshi-codegen}/docs/StoreApi.md | 0 .../moshi-codegen}/docs/Tag.md | 0 .../moshi-codegen}/docs/User.md | 0 .../moshi-codegen}/docs/UserApi.md | 0 .../moshi-codegen}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../multiplatform}/.openapi-generator-ignore | 0 .../multiplatform}/.openapi-generator/VERSION | 0 .../multiplatform}/README.md | 0 .../multiplatform}/build.gradle | 0 .../multiplatform}/docs/ApiResponse.md | 0 .../multiplatform}/docs/Category.md | 0 .../multiplatform}/docs/Order.md | 0 .../multiplatform}/docs/Pet.md | 0 .../multiplatform}/docs/PetApi.md | 0 .../multiplatform}/docs/StoreApi.md | 0 .../multiplatform}/docs/Tag.md | 0 .../multiplatform}/docs/User.md | 0 .../multiplatform}/docs/UserApi.md | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../multiplatform}/gradlew | 0 .../multiplatform}/gradlew.bat | 0 .../multiplatform}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../openapitools/client/auth/ApiKeyAuth.kt | 0 .../client/auth/Authentication.kt | 0 .../openapitools/client/auth/HttpBasicAuth.kt | 0 .../client/auth/HttpBearerAuth.kt | 0 .../org/openapitools/client/auth/OAuth.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../client/infrastructure/Base64ByteArray.kt | 0 .../client/infrastructure/Bytes.kt | 0 .../client/infrastructure/HttpResponse.kt | 0 .../client/infrastructure/OctetByteArray.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../src/commonTest/kotlin/util/Coroutine.kt | 0 .../src/iosTest/kotlin/util/Coroutine.kt | 0 .../src/jsTest/kotlin/util/Coroutine.kt | 0 .../src/jvmTest/kotlin/util/Coroutine.kt | 0 .../nonpublic}/.openapi-generator-ignore | 0 .../nonpublic}/.openapi-generator/VERSION | 0 .../nonpublic}/README.md | 2 +- .../nonpublic}/build.gradle | 0 .../nonpublic}/docs/ApiResponse.md | 0 .../nonpublic}/docs/Category.md | 0 .../nonpublic}/docs/Order.md | 0 .../nonpublic}/docs/Pet.md | 0 .../nonpublic}/docs/PetApi.md | 0 .../nonpublic}/docs/StoreApi.md | 0 .../nonpublic}/docs/Tag.md | 0 .../nonpublic}/docs/User.md | 0 .../nonpublic}/docs/UserApi.md | 0 .../nonpublic}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../nullable}/.openapi-generator-ignore | 0 .../nullable}/.openapi-generator/VERSION | 0 .../client/petstore/kotlin/nullable/README.md | 90 +++++ .../nullable}/build.gradle | 0 .../nullable}/docs/ApiResponse.md | 0 .../nullable}/docs/Category.md | 0 .../nullable}/docs/Order.md | 0 .../nullable}/docs/Pet.md | 0 .../nullable}/docs/PetApi.md | 0 .../nullable}/docs/StoreApi.md | 0 .../nullable}/docs/Tag.md | 0 .../nullable}/docs/User.md | 0 .../nullable}/docs/UserApi.md | 0 .../nullable}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../okhttp3}/.openapi-generator-ignore | 0 .../okhttp3}/.openapi-generator/VERSION | 0 .../client/petstore/kotlin/okhttp3/README.md | 90 +++++ .../okhttp3}/build.gradle | 0 .../okhttp3}/docs/ApiResponse.md | 0 .../okhttp3}/docs/Category.md | 0 .../okhttp3}/docs/Order.md | 0 .../okhttp3}/docs/Pet.md | 0 .../okhttp3}/docs/PetApi.md | 0 .../okhttp3}/docs/StoreApi.md | 0 .../okhttp3}/docs/Tag.md | 0 .../okhttp3}/docs/User.md | 0 .../okhttp3}/docs/UserApi.md | 0 .../okhttp3}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../petstore}/.openapi-generator-ignore | 0 .../petstore}/.openapi-generator/VERSION | 0 .../client/petstore/kotlin/petstore/README.md | 90 +++++ .../petstore}/build.gradle | 0 .../petstore}/docs/ApiResponse.md | 0 .../petstore}/docs/Category.md | 0 .../petstore}/docs/Order.md | 0 .../petstore}/docs/Pet.md | 0 .../petstore}/docs/PetApi.md | 0 .../petstore}/docs/StoreApi.md | 0 .../petstore}/docs/Tag.md | 0 .../petstore}/docs/User.md | 0 .../petstore}/docs/UserApi.md | 0 .../kotlin/{ => petstore}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 samples/client/petstore/kotlin/pom.xml | 46 --- .../.openapi-generator-ignore | 0 .../.openapi-generator/VERSION | 0 .../kotlin/retrofit2-coroutines/README.md | 90 +++++ .../retrofit2-coroutines}/build.gradle | 0 .../retrofit2-coroutines}/docs/ApiResponse.md | 0 .../retrofit2-coroutines}/docs/Category.md | 0 .../{ => retrofit2-coroutines}/docs/Order.md | 0 .../retrofit2-coroutines}/docs/Pet.md | 0 .../{ => retrofit2-coroutines}/docs/PetApi.md | 181 +++------- .../docs/StoreApi.md | 86 ++--- .../retrofit2-coroutines}/docs/Tag.md | 0 .../retrofit2-coroutines}/docs/User.md | 0 .../docs/UserApi.md | 162 +++------ .../retrofit2-coroutines/settings.gradle | 2 + .../org/openapitools/client/apis/PetApi.kt | 122 +++++++ .../org/openapitools/client/apis/StoreApi.kt | 62 ++++ .../org/openapitools/client/apis/UserApi.kt | 113 ++++++ .../openapitools/client/auth/HttpBasicAuth.kt | 33 ++ .../client/auth/HttpBearerAuth.kt | 39 ++ .../client/infrastructure/ApiClient.kt | 84 +++++ .../client/infrastructure/ByteArrayAdapter.kt | 0 .../infrastructure/CollectionFormats.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../retrofit2}/.openapi-generator-ignore | 0 .../retrofit2}/.openapi-generator/VERSION | 0 .../petstore/kotlin/retrofit2/README.md | 90 +++++ .../petstore/kotlin/retrofit2/build.gradle | 40 +++ .../coroutines}/.openapi-generator-ignore | 0 .../coroutines}/.openapi-generator/VERSION | 0 .../kotlin/retrofit2/coroutines/README.md | 90 +++++ .../kotlin/retrofit2/coroutines/build.gradle | 40 +++ .../retrofit2/coroutines}/docs/ApiResponse.md | 0 .../retrofit2/coroutines}/docs/Category.md | 0 .../kotlin/retrofit2/coroutines/docs/Order.md | 22 ++ .../{ => retrofit2/coroutines}/docs/Pet.md | 0 .../retrofit2/coroutines/docs/PetApi.md | 336 ++++++++++++++++++ .../retrofit2/coroutines/docs/StoreApi.md | 166 +++++++++ .../retrofit2/coroutines}/docs/Tag.md | 0 .../retrofit2/coroutines}/docs/User.md | 0 .../retrofit2/coroutines/docs/UserApi.md | 326 +++++++++++++++++ .../retrofit2/coroutines/settings.gradle | 2 + .../org/openapitools/client/apis/PetApi.kt | 122 +++++++ .../org/openapitools/client/apis/StoreApi.kt | 62 ++++ .../org/openapitools/client/apis/UserApi.kt | 113 ++++++ .../openapitools/client/auth/HttpBasicAuth.kt | 33 ++ .../client/auth/HttpBearerAuth.kt | 39 ++ .../client/infrastructure/ApiClient.kt | 84 +++++ .../client/infrastructure/ByteArrayAdapter.kt | 0 .../infrastructure/CollectionFormats.kt | 56 +++ .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 32 +- .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../{ => retrofit2}/docs/ApiResponse.md | 0 .../kotlin/{ => retrofit2}/docs/Category.md | 0 .../petstore/kotlin/retrofit2/docs/Order.md | 22 ++ .../petstore/kotlin/retrofit2/docs/Pet.md | 22 ++ .../petstore/kotlin/retrofit2/docs/PetApi.md | 320 +++++++++++++++++ .../kotlin/retrofit2/docs/StoreApi.md | 158 ++++++++ .../kotlin/{ => retrofit2}/docs/Tag.md | 0 .../kotlin/{ => retrofit2}/docs/User.md | 0 .../petstore/kotlin/retrofit2/docs/UserApi.md | 310 ++++++++++++++++ .../retrofit2}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 122 +++++++ .../org/openapitools/client/apis/StoreApi.kt | 62 ++++ .../org/openapitools/client/apis/UserApi.kt | 113 ++++++ .../openapitools/client/auth/HttpBasicAuth.kt | 33 ++ .../client/auth/HttpBearerAuth.kt | 39 ++ .../client/infrastructure/ApiClient.kt | 84 +++++ .../client/infrastructure/ByteArrayAdapter.kt | 0 .../infrastructure/CollectionFormats.kt | 56 +++ .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 16 +- .../openapitools/client/models/Category.kt | 12 +- .../org/openapitools/client/models/Order.kt | 60 ++++ .../org/openapitools/client/models/Pet.kt | 36 +- .../org/openapitools/client/models/Tag.kt | 12 +- .../org/openapitools/client/models/User.kt | 36 +- .../infrastructure/ApplicationDelegates.kt | 29 -- .../client/infrastructure/RequestMethod.kt | 8 - .../org/openapitools/client/PetApiTest.kt | 104 ------ .../org/openapitools/client/StoreApiTest.kt | 48 --- .../{ => string}/.openapi-generator-ignore | 0 .../kotlin/string/.openapi-generator/VERSION | 1 + .../client/petstore/kotlin/string/README.md | 90 +++++ .../petstore/kotlin/{ => string}/build.gradle | 0 .../kotlin/string/docs/ApiResponse.md | 12 + .../petstore/kotlin/string/docs/Category.md | 11 + .../string}/docs/Order.md | 0 .../string}/docs/Pet.md | 0 .../string}/docs/PetApi.md | 0 .../string}/docs/StoreApi.md | 0 .../client/petstore/kotlin/string/docs/Tag.md | 11 + .../petstore/kotlin/string/docs/User.md | 17 + .../string}/docs/UserApi.md | 0 .../string}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 0 .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 19 + .../infrastructure/LocalDateTimeAdapter.kt | 19 + .../infrastructure/OffsetDateTimeAdapter.kt | 19 + .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 0 .../client/infrastructure/UUIDAdapter.kt | 0 .../openapitools/client/models/ApiResponse.kt | 0 .../openapitools/client/models/Category.kt | 0 .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 0 .../org/openapitools/client/models/Tag.kt | 0 .../org/openapitools/client/models/User.kt | 0 .../threetenbp/.openapi-generator-ignore | 23 ++ .../threetenbp/.openapi-generator/VERSION | 1 + .../petstore/kotlin/threetenbp/README.md | 90 +++++ .../threetenbp}/build.gradle | 0 .../kotlin/threetenbp/docs/ApiResponse.md | 12 + .../kotlin/threetenbp/docs/Category.md | 11 + .../threetenbp}/docs/Order.md | 0 .../petstore/kotlin/threetenbp/docs/Pet.md | 22 ++ .../threetenbp}/docs/PetApi.md | 0 .../threetenbp}/docs/StoreApi.md | 0 .../petstore/kotlin/threetenbp/docs/Tag.md | 11 + .../petstore/kotlin/threetenbp/docs/User.md | 17 + .../threetenbp}/docs/UserApi.md | 0 .../threetenbp}/settings.gradle | 0 .../org/openapitools/client/apis/PetApi.kt | 0 .../org/openapitools/client/apis/StoreApi.kt | 0 .../org/openapitools/client/apis/UserApi.kt | 0 .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 0 .../ApiInfrastructureResponse.kt | 0 .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 2 +- .../client/infrastructure/Errors.kt | 0 .../client/infrastructure/LocalDateAdapter.kt | 0 .../infrastructure/LocalDateTimeAdapter.kt | 0 .../infrastructure/OffsetDateTimeAdapter.kt | 0 .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 23 ++ .../client/infrastructure/UUIDAdapter.kt | 13 + .../openapitools/client/models/ApiResponse.kt | 34 ++ .../openapitools/client/models/Category.kt | 30 ++ .../org/openapitools/client/models/Order.kt | 0 .../org/openapitools/client/models/Pet.kt | 62 ++++ .../org/openapitools/client/models/Tag.kt | 30 ++ .../org/openapitools/client/models/User.kt | 55 +++ .../uppercase-enum/.openapi-generator-ignore | 23 ++ .../uppercase-enum/.openapi-generator/VERSION | 1 + .../uppercase-enum}/README.md | 2 +- .../uppercase-enum}/build.gradle | 4 +- .../uppercase-enum}/docs/EnumApi.md | 0 .../uppercase-enum}/docs/PetEnum.md | 0 .../uppercase-enum}/settings.gradle | 0 .../org/openapitools/client/apis/EnumApi.kt | 4 +- .../client/infrastructure/ApiAbstractions.kt | 0 .../client/infrastructure/ApiClient.kt | 86 ++++- .../ApiInfrastructureResponse.kt | 5 +- .../infrastructure/ApplicationDelegates.kt | 0 .../client/infrastructure/ByteArrayAdapter.kt | 12 + .../client/infrastructure/Errors.kt | 4 +- .../client/infrastructure/LocalDateAdapter.kt | 19 + .../infrastructure/LocalDateTimeAdapter.kt | 19 + .../infrastructure/OffsetDateTimeAdapter.kt | 19 + .../client/infrastructure/RequestConfig.kt | 0 .../client/infrastructure/RequestMethod.kt | 0 .../infrastructure/ResponseExtensions.kt | 0 .../client/infrastructure/Serializer.kt | 23 ++ .../client/infrastructure/UUIDAdapter.kt | 13 + .../org/openapitools/client/models/PetEnum.kt | 9 + 753 files changed, 5383 insertions(+), 3640 deletions(-) create mode 100644 bin/kotlin-client-retrofit2-coroutines.sh create mode 100644 bin/windows/kotlin-client-retrofit2-suspend.bat create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api_doc.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBasicAuth.kt.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBearerAuth.kt.mustache create mode 100644 samples/client/petstore/java/retrofit2-play24/local.properties create mode 100644 samples/client/petstore/java/retrofit2-play26/local.properties create mode 100644 samples/client/petstore/java/retrofit2/local.properties delete mode 100644 samples/client/petstore/kotlin-gson/pom.xml delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/META-INF/kotlin-petstore-jackson.kotlin_module delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/ApplicationKt.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi$WhenMappings.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi$WhenMappings.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi$WhenMappings.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt$defaultMultiValueConverter$1.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion$client$2.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$WhenMappings.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiInfrastructureResponse.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates$SetOnce.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientError.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException$Companion.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Informational.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Redirection.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestConfig.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestMethod.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseExtensionsKt.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseType.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerError.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException$Companion.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Success.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/ApiResponse.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Category.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order$Status.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet$Status.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Tag.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/User.class delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/build-history.bin delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len delete mode 100644 samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/last-build.bin delete mode 100644 samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.jar delete mode 100644 samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.properties delete mode 100755 samples/client/petstore/kotlin-jackson/gradlew delete mode 100644 samples/client/petstore/kotlin-jackson/gradlew.bat delete mode 100644 samples/client/petstore/kotlin-jackson/pom.xml delete mode 100644 samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/Application.kt delete mode 100644 samples/client/petstore/kotlin-json-request-string/pom.xml delete mode 100644 samples/client/petstore/kotlin-moshi-codegen/pom.xml delete mode 100644 samples/client/petstore/kotlin-multiplatform/pom.xml delete mode 100644 samples/client/petstore/kotlin-nonpublic/pom.xml delete mode 100644 samples/client/petstore/kotlin-nullable/README.md delete mode 100644 samples/client/petstore/kotlin-nullable/pom.xml delete mode 100644 samples/client/petstore/kotlin-okhttp3/README.md delete mode 100644 samples/client/petstore/kotlin-okhttp3/pom.xml delete mode 100644 samples/client/petstore/kotlin-retrofit2/README.md delete mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt delete mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt delete mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt delete mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt delete mode 100644 samples/client/petstore/kotlin-string/README.md delete mode 100644 samples/client/petstore/kotlin-string/pom.xml delete mode 100644 samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt delete mode 100644 samples/client/petstore/kotlin-threetenbp/README.md delete mode 100644 samples/client/petstore/kotlin-threetenbp/pom.xml delete mode 100644 samples/client/petstore/kotlin-threetenbp/src/test/kotlin/org/openapitools/client/PetApiTest.kt delete mode 100644 samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION delete mode 100644 samples/client/petstore/kotlin/.gitignore delete mode 100644 samples/client/petstore/kotlin/README.md delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/apis/PetApi.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/apis/StoreApi.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/apis/UserApi.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiAbstractions.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiClient.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Errors.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestConfig.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ResponseExtensions.kt delete mode 100644 samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Serializer.kt delete mode 100644 samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.jar delete mode 100644 samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties delete mode 100755 samples/client/petstore/kotlin/gradlew delete mode 100644 samples/client/petstore/kotlin/gradlew.bat rename samples/client/petstore/{kotlin-gson => kotlin/gson}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/README.md (99%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/build.gradle (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/User.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/settings.gradle (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-gson => kotlin/gson}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/jackson}/README.md (99%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/build.gradle (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/User.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/settings.gradle (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/jackson}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/README.md (99%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/build.gradle (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/User.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/settings.gradle (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-json-request-string => kotlin/json-request-string}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-jackson => kotlin/moshi-codegen}/README.md (99%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/build.gradle (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/User.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/settings.gradle (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/moshi-codegen}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/README.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/build.gradle (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/User.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/gradle/wrapper/gradle-wrapper.jar (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/gradle/wrapper/gradle-wrapper.properties (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/gradlew (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/gradlew.bat (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/settings.gradle (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonMain/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/commonTest/kotlin/util/Coroutine.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/iosTest/kotlin/util/Coroutine.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/jsTest/kotlin/util/Coroutine.kt (100%) rename samples/client/petstore/{kotlin-multiplatform => kotlin/multiplatform}/src/jvmTest/kotlin/util/Coroutine.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{kotlin-moshi-codegen => kotlin/nonpublic}/README.md (99%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/build.gradle (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/User.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/settings.gradle (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-nonpublic => kotlin/nonpublic}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/nullable/README.md rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/build.gradle (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/User.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/settings.gradle (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-nullable => kotlin/nullable}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/okhttp3/README.md rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/build.gradle (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/User.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/settings.gradle (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-okhttp3 => kotlin/okhttp3}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/petstore/README.md rename samples/client/petstore/{kotlin-string => kotlin/petstore}/build.gradle (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/Category.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/StoreApi.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/User.md (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/docs/UserApi.md (100%) rename samples/client/petstore/kotlin/{ => petstore}/settings.gradle (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/petstore}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/petstore}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/kotlin/{ => petstore}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/kotlin/{ => petstore}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/petstore}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) delete mode 100644 samples/client/petstore/kotlin/pom.xml rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/README.md rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/build.gradle (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/docs/Category.md (100%) rename samples/client/petstore/kotlin/{ => retrofit2-coroutines}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2-coroutines}/docs/Pet.md (100%) rename samples/client/petstore/kotlin/{ => retrofit2-coroutines}/docs/PetApi.md (58%) rename samples/client/petstore/kotlin/{ => retrofit2-coroutines}/docs/StoreApi.md (56%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/docs/User.md (100%) rename samples/client/petstore/kotlin/{ => retrofit2-coroutines}/docs/UserApi.md (58%) create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/settings.gradle create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2-coroutines}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2}/.openapi-generator-ignore (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/README.md create mode 100644 samples/client/petstore/kotlin/retrofit2/build.gradle rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2/coroutines}/.openapi-generator-ignore (100%) rename samples/client/petstore/kotlin/{ => retrofit2/coroutines}/.openapi-generator/VERSION (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/README.md create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/docs/ApiResponse.md (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/docs/Category.md (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md rename samples/client/petstore/kotlin/{ => retrofit2/coroutines}/docs/Pet.md (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/docs/Tag.md (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/docs/User.md (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/kotlin/{bin => retrofit2/coroutines/src/main/kotlin}/org/openapitools/client/models/Order.kt (70%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/retrofit2/coroutines}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) rename samples/client/petstore/kotlin/{ => retrofit2}/docs/ApiResponse.md (100%) rename samples/client/petstore/kotlin/{ => retrofit2}/docs/Category.md (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/docs/Order.md create mode 100644 samples/client/petstore/kotlin/retrofit2/docs/Pet.md create mode 100644 samples/client/petstore/kotlin/retrofit2/docs/PetApi.md create mode 100644 samples/client/petstore/kotlin/retrofit2/docs/StoreApi.md rename samples/client/petstore/kotlin/{ => retrofit2}/docs/Tag.md (100%) rename samples/client/petstore/kotlin/{ => retrofit2}/docs/User.md (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/docs/UserApi.md rename samples/client/petstore/{kotlin-retrofit2 => kotlin/retrofit2}/settings.gradle (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt rename samples/client/petstore/kotlin/{ => retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/kotlin/{ => retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/kotlin/{ => retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/retrofit2}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/kotlin/{bin => retrofit2/src/main/kotlin}/org/openapitools/client/models/ApiResponse.kt (70%) rename samples/client/petstore/kotlin/{bin => retrofit2/src/main/kotlin}/org/openapitools/client/models/Category.kt (75%) create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt rename samples/client/petstore/kotlin/{bin => retrofit2/src/main/kotlin}/org/openapitools/client/models/Pet.kt (72%) rename samples/client/petstore/kotlin/{bin => retrofit2/src/main/kotlin}/org/openapitools/client/models/Tag.kt (74%) rename samples/client/petstore/kotlin/{bin => retrofit2/src/main/kotlin}/org/openapitools/client/models/User.kt (53%) delete mode 100644 samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt delete mode 100644 samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt delete mode 100644 samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt delete mode 100644 samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt rename samples/client/petstore/kotlin/{ => string}/.openapi-generator-ignore (100%) create mode 100644 samples/client/petstore/kotlin/string/.openapi-generator/VERSION create mode 100644 samples/client/petstore/kotlin/string/README.md rename samples/client/petstore/kotlin/{ => string}/build.gradle (100%) create mode 100644 samples/client/petstore/kotlin/string/docs/ApiResponse.md create mode 100644 samples/client/petstore/kotlin/string/docs/Category.md rename samples/client/petstore/{kotlin-string => kotlin/string}/docs/Order.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/docs/Pet.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/docs/StoreApi.md (100%) create mode 100644 samples/client/petstore/kotlin/string/docs/Tag.md create mode 100644 samples/client/petstore/kotlin/string/docs/User.md rename samples/client/petstore/{kotlin-string => kotlin/string}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/settings.gradle (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) create mode 100644 samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt create mode 100644 samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt create mode 100644 samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/string}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/models/Category.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) rename samples/client/petstore/{kotlin-string => kotlin/string}/src/main/kotlin/org/openapitools/client/models/Pet.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/models/Tag.kt (100%) rename samples/client/petstore/kotlin/{ => string}/src/main/kotlin/org/openapitools/client/models/User.kt (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/.openapi-generator-ignore create mode 100644 samples/client/petstore/kotlin/threetenbp/.openapi-generator/VERSION create mode 100644 samples/client/petstore/kotlin/threetenbp/README.md rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/build.gradle (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/docs/ApiResponse.md create mode 100644 samples/client/petstore/kotlin/threetenbp/docs/Category.md rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/docs/Order.md (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/docs/Pet.md rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/docs/PetApi.md (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/docs/StoreApi.md (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/docs/Tag.md create mode 100644 samples/client/petstore/kotlin/threetenbp/docs/User.md rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/docs/UserApi.md (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/settings.gradle (100%) rename samples/client/petstore/kotlin/{ => threetenbp}/src/main/kotlin/org/openapitools/client/apis/PetApi.kt (100%) rename samples/client/petstore/kotlin/{ => threetenbp}/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt (100%) rename samples/client/petstore/kotlin/{ => threetenbp}/src/main/kotlin/org/openapitools/client/apis/UserApi.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (100%) rename samples/client/petstore/kotlin/{ => threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) rename samples/client/petstore/kotlin/{bin => threetenbp/src/main/kotlin}/org/openapitools/client/infrastructure/ByteArrayAdapter.kt (99%) rename samples/client/petstore/kotlin/{ => threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt rename samples/client/petstore/{kotlin-threetenbp => kotlin/threetenbp}/src/main/kotlin/org/openapitools/client/models/Order.kt (100%) create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt create mode 100644 samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt create mode 100644 samples/client/petstore/kotlin/uppercase-enum/.openapi-generator-ignore create mode 100644 samples/client/petstore/kotlin/uppercase-enum/.openapi-generator/VERSION rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/README.md (98%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/build.gradle (88%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/docs/EnumApi.md (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/docs/PetEnum.md (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/settings.gradle (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt (89%) rename samples/client/petstore/kotlin/{ => uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt (100%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt (64%) rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt (90%) rename samples/client/petstore/kotlin/{bin => uppercase-enum/src/main/kotlin}/org/openapitools/client/infrastructure/ApplicationDelegates.kt (100%) create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt (71%) create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename samples/client/petstore/kotlin/{ => uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt (100%) rename samples/client/petstore/kotlin/{bin => uppercase-enum/src/main/kotlin}/org/openapitools/client/infrastructure/RequestMethod.kt (100%) rename samples/client/petstore/kotlin/{ => uppercase-enum}/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt (100%) create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt create mode 100644 samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename samples/client/petstore/{kotlin-uppercase-enum => kotlin/uppercase-enum}/src/main/kotlin/org/openapitools/client/models/PetEnum.kt (69%) diff --git a/bin/kotlin-client-gson.sh b/bin/kotlin-client-gson.sh index f178cb88038..544751df383 100755 --- a/bin/kotlin-client-gson.sh +++ b/bin/kotlin-client-gson.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-gson --additional-properties serializationLibrary=gson -o samples/client/petstore/kotlin-gson $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-gson --additional-properties serializationLibrary=gson -o samples/client/petstore/kotlin/gson $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-jackson.sh b/bin/kotlin-client-jackson.sh index 516ffc69314..aee87366cca 100755 --- a/bin/kotlin-client-jackson.sh +++ b/bin/kotlin-client-jackson.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-jackson --additional-properties serializationLibrary=jackson --additional-properties enumPropertyNaming=UPPERCASE -o samples/client/petstore/kotlin-jackson $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-jackson --additional-properties serializationLibrary=jackson --additional-properties enumPropertyNaming=UPPERCASE -o samples/client/petstore/kotlin/jackson $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-json-request-string.sh b/bin/kotlin-client-json-request-string.sh index 2e32eed675a..b67275ba4bf 100755 --- a/bin/kotlin-client-json-request-string.sh +++ b/bin/kotlin-client-json-request-string.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore-with-date-field.yaml -g kotlin --artifact-id kotlin-petstore-json-request-string --additional-properties requestDateConverter=toString -o samples/client/petstore/kotlin-json-request-string $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore-with-date-field.yaml -g kotlin --artifact-id kotlin-petstore-json-request-string --additional-properties requestDateConverter=toString -o samples/client/petstore/kotlin/json-request-string $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-moshi-codegen.sh b/bin/kotlin-client-moshi-codegen.sh index c037b2efd88..31fed330156 100755 --- a/bin/kotlin-client-moshi-codegen.sh +++ b/bin/kotlin-client-moshi-codegen.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-moshi-codegen --additional-properties serializationLibrary=moshi,moshiCodeGen=true -o samples/client/petstore/kotlin-moshi-codegen $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-moshi-codegen --additional-properties serializationLibrary=moshi,moshiCodeGen=true -o samples/client/petstore/kotlin/moshi-codegen $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-nonpublic.sh b/bin/kotlin-client-nonpublic.sh index 16c366ef673..569943e1772 100755 --- a/bin/kotlin-client-nonpublic.sh +++ b/bin/kotlin-client-nonpublic.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-nonpublic --additional-properties nonPublicApi=true -o samples/client/petstore/kotlin-nonpublic $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-nonpublic --additional-properties nonPublicApi=true -o samples/client/petstore/kotlin/nonpublic $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-nullable.sh b/bin/kotlin-client-nullable.sh index aaa3ae06f41..9ec8e20ba1c 100755 --- a/bin/kotlin-client-nullable.sh +++ b/bin/kotlin-client-nullable.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-nullable --additional-properties nullableReturnType=true,serializableModel=true -o samples/client/petstore/kotlin-nullable $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-nullable --additional-properties nullableReturnType=true,serializableModel=true -o samples/client/petstore/kotlin/nullable $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-okhttp3.sh b/bin/kotlin-client-okhttp3.sh index 3f1cc101700..8710b55b237 100755 --- a/bin/kotlin-client-okhttp3.sh +++ b/bin/kotlin-client-okhttp3.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-okhttp3 --library jvm-okhttp3 -o samples/client/petstore/kotlin-okhttp3 $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-okhttp3 --library jvm-okhttp3 -o samples/client/petstore/kotlin/okhttp3 $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-petstore-multiplatform.sh b/bin/kotlin-client-petstore-multiplatform.sh index a0b5de50b53..a5fa52fe8ec 100755 --- a/bin/kotlin-client-petstore-multiplatform.sh +++ b/bin/kotlin-client-petstore-multiplatform.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-client-petstore-multiplatform --library multiplatform -o samples/client/petstore/kotlin-multiplatform $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-client-petstore-multiplatform --library multiplatform -o samples/client/petstore/kotlin/multiplatform $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-petstore.sh b/bin/kotlin-client-petstore.sh index 409911eb113..95e38fc3f25 100755 --- a/bin/kotlin-client-petstore.sh +++ b/bin/kotlin-client-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8,serializableModel=true -o samples/client/petstore/kotlin $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8,serializableModel=true -o samples/client/petstore/kotlin/petstore $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-retrofit2-coroutines.sh b/bin/kotlin-client-retrofit2-coroutines.sh new file mode 100644 index 00000000000..29734cda07a --- /dev/null +++ b/bin/kotlin-client-retrofit2-coroutines.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=$(ls -ld "$SCRIPT") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=$(dirname "$SCRIPT")/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=$(dirname "$SCRIPT")/.. + APP_DIR=$(cd "${APP_DIR}"; pwd) +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-retrofit2-coroutines --library jvm-retrofit2 --additional-properties useCoroutines=true -o samples/client/petstore/kotlin/retrofit2-coroutines $@" + +java ${JAVA_OPTS} -jar ${executable} ${ags} \ No newline at end of file diff --git a/bin/kotlin-client-retrofit2.sh b/bin/kotlin-client-retrofit2.sh index 07bf41fa3e7..2f1dd98b411 100755 --- a/bin/kotlin-client-retrofit2.sh +++ b/bin/kotlin-client-retrofit2.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-retrofit2 --library jvm-retrofit2 -o samples/client/petstore/kotlin-retrofit2 $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-retrofit2 --library jvm-retrofit2 -o samples/client/petstore/kotlin/retrofit2 $@" java ${JAVA_OPTS} -jar ${executable} ${ags} \ No newline at end of file diff --git a/bin/kotlin-client-string.sh b/bin/kotlin-client-string.sh index b5440137541..cf847681fc3 100755 --- a/bin/kotlin-client-string.sh +++ b/bin/kotlin-client-string.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-string --additional-properties dateLibrary=string,serializableModel=true,sortParamsByRequiredFlag=false,sortModelPropertiesByRequiredFlag=false -o samples/client/petstore/kotlin-string $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-string --additional-properties dateLibrary=string,serializableModel=true,sortParamsByRequiredFlag=false,sortModelPropertiesByRequiredFlag=false -o samples/client/petstore/kotlin/string $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-threetenbp.sh b/bin/kotlin-client-threetenbp.sh index 0cb7f27da09..d8fb1bfb928 100755 --- a/bin/kotlin-client-threetenbp.sh +++ b/bin/kotlin-client-threetenbp.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-threetenbp --additional-properties dateLibrary=threetenbp -o samples/client/petstore/kotlin-threetenbp $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-threetenbp --additional-properties dateLibrary=threetenbp -o samples/client/petstore/kotlin/threetenbp $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/kotlin-client-uppercase-enum.sh b/bin/kotlin-client-uppercase-enum.sh index 7f456fc3a06..af94b54918f 100755 --- a/bin/kotlin-client-uppercase-enum.sh +++ b/bin/kotlin-client-uppercase-enum.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/3_0/issue-4062.yaml -g kotlin --artifact-id kotlin-uppercase-enum --additional-properties enumPropertyNaming=UPPERCASE -o samples/client/petstore/kotlin-uppercase-enum $@" +ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/3_0/issue-4062.yaml -g kotlin --artifact-id kotlin-uppercase-enum --additional-properties enumPropertyNaming=UPPERCASE -o samples/client/petstore/kotlin/uppercase-enum $@" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/windows/kotlin-client-gson.bat b/bin/windows/kotlin-client-gson.bat index 30eeaf423f7..8b72dd17dad 100644 --- a/bin/windows/kotlin-client-gson.bat +++ b/bin/windows/kotlin-client-gson.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-gson" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties serializationLibrary=gson -o samples\client\petstore\kotlin-gson +set ags=generate --artifact-id "kotlin-petstore-gson" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties serializationLibrary=gson -o samples\client\petstore\kotlin\gson java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-json-request-string.bat b/bin/windows/kotlin-client-json-request-string.bat index 1b257af0202..d1ec79bfcfe 100644 --- a/bin/windows/kotlin-client-json-request-string.bat +++ b/bin/windows/kotlin-client-json-request-string.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-json-request-string" -i modules\openapi-generator\src\test\resources\2_0\petstore-with-date-field.yaml -g kotlin --additional-properties requestDateConverter=toString -o samples\client\petstore\kotlin-json-request-string +set ags=generate --artifact-id "kotlin-petstore-json-request-string" -i modules\openapi-generator\src\test\resources\2_0\petstore-with-date-field.yaml -g kotlin --additional-properties requestDateConverter=toString -o samples\client\petstore\kotlin\json-request-string java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-moshi-codegen.bat b/bin/windows/kotlin-client-moshi-codegen.bat index 5a2ff14ac75..ea30faf2f5e 100644 --- a/bin/windows/kotlin-client-moshi-codegen.bat +++ b/bin/windows/kotlin-client-moshi-codegen.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-moshi-codegen" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties serializationLibrary=moshi,moshiCodeGen=true -o samples\client\petstore\kotlin-moshi-codegen +set ags=generate --artifact-id "kotlin-petstore-moshi-codegen" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties serializationLibrary=moshi,moshiCodeGen=true -o samples\client\petstore\kotlin\moshi-codegen java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-nonpublic.bat b/bin/windows/kotlin-client-nonpublic.bat index 899d4318060..66b2b99fff6 100644 --- a/bin/windows/kotlin-client-nonpublic.bat +++ b/bin/windows/kotlin-client-nonpublic.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-nonpublic" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties nonPublicApi=true -o samples\client\petstore\kotlin-nonpublic +set ags=generate --artifact-id "kotlin-petstore-nonpublic" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties nonPublicApi=true -o samples\client\petstore\kotlin\nonpublic java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-nullable.bat b/bin/windows/kotlin-client-nullable.bat index cdbfa49839c..326b4efd003 100644 --- a/bin/windows/kotlin-client-nullable.bat +++ b/bin/windows/kotlin-client-nullable.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-nullable" --additional-properties nullableReturnType=true,serializableModel=true -o samples\client\petstore\kotlin-nullable +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-nullable" --additional-properties nullableReturnType=true,serializableModel=true -o samples\client\petstore\kotlin\nullable java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-okhttp3.bat b/bin/windows/kotlin-client-okhttp3.bat index 8c16e37fe05..bfaeb9114da 100644 --- a/bin/windows/kotlin-client-okhttp3.bat +++ b/bin/windows/kotlin-client-okhttp3.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-okhttp3" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-okhttp3 -o samples\client\petstore\kotlin-okhttp3 +set ags=generate --artifact-id "kotlin-petstore-okhttp3" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-okhttp3 -o samples\client\petstore\kotlin\okhttp3 java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-petstore-multiplatform.bat b/bin/windows/kotlin-client-petstore-multiplatform.bat index 628170d6007..f1b22b8fbea 100644 --- a/bin/windows/kotlin-client-petstore-multiplatform.bat +++ b/bin/windows/kotlin-client-petstore-multiplatform.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-client-petstore-multiplatform" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library multiplatform -o samples\client\petstore\kotlin-multiplatform +set ags=generate --artifact-id "kotlin-client-petstore-multiplatform" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library multiplatform -o samples\client\petstore\kotlin\multiplatform java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-petstore.bat b/bin/windows/kotlin-client-petstore.bat index a193d7c6a3e..f983bcd50bc 100644 --- a/bin/windows/kotlin-client-petstore.bat +++ b/bin/windows/kotlin-client-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-client" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin -o samples\client\petstore\kotlin --additional-properties dateLibrary=java8,serializableModel=true +set ags=generate --artifact-id "kotlin-petstore-client" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties dateLibrary=java8,serializableModel=true -o samples\client\petstore\kotlin\petstore java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-retrofit2-suspend.bat b/bin/windows/kotlin-client-retrofit2-suspend.bat new file mode 100644 index 00000000000..30c1e852947 --- /dev/null +++ b/bin/windows/kotlin-client-retrofit2-suspend.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties +set ags=generate --artifact-id "kotlin-petstore-retrofit2" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-retrofit2 --useCoroutines true -o samples\client\petstore\kotlin\retrofit2\coroutines + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-retrofit2.bat b/bin/windows/kotlin-client-retrofit2.bat index 123c8c28dc8..321b8310254 100644 --- a/bin/windows/kotlin-client-retrofit2.bat +++ b/bin/windows/kotlin-client-retrofit2.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-retrofit2" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-retrofit2 -o samples\client\petstore\kotlin-retrofit2 +set ags=generate --artifact-id "kotlin-petstore-retrofit2" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-retrofit2 -o samples\client\petstore\kotlin\retrofit2 java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-string.bat b/bin/windows/kotlin-client-string.bat index 6e0310ecadf..1eeb0435d05 100644 --- a/bin/windows/kotlin-client-string.bat +++ b/bin/windows/kotlin-client-string.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-string" --additional-properties dateLibrary=string,serializableModel=true,sortParamsByRequiredFlag=false,sortModelPropertiesByRequiredFlag=false -o samples\client\petstore\kotlin-string +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-string" --additional-properties dateLibrary=string,serializableModel=true,sortParamsByRequiredFlag=false,sortModelPropertiesByRequiredFlag=false -o samples\client\petstore\kotlin\string java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-threetenbp.bat b/bin/windows/kotlin-client-threetenbp.bat index adc5c68e01a..9f75aeb7984 100644 --- a/bin/windows/kotlin-client-threetenbp.bat +++ b/bin/windows/kotlin-client-threetenbp.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-threetenbp" --additional-properties dateLibrary=threetenbp -o samples\client\petstore\kotlin-threetenbp +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --artifact-id "kotlin-petstore-threetenbp" --additional-properties dateLibrary=threetenbp -o samples\client\petstore\kotlin\threetenbp java %JAVA_OPTS% -jar %executable% %ags% diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 14e1fe5fce3..0cedbf49c78 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -263,6 +263,9 @@ public class CodegenConstants { public static final String SOURCECODEONLY_GENERATION = "generateSourceCodeOnly"; public static final String SOURCECODEONLY_GENERATION_DESC = "Specifies that only a library source code is to be generated."; + public static final String USE_COROUTINES = "useCoroutines"; + public static final String USE_COROUTINES_DESC = "toggle \"suspend\" for generated apis"; + public static final String PARCELIZE_MODELS = "parcelizeModels"; public static final String PARCELIZE_MODELS_DESC = "toggle \"@Parcelize\" for generated models"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index aa401530339..dce255e8874 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -61,6 +61,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co protected String apiDocPath = "docs/"; protected String modelDocPath = "docs/"; + protected boolean useCoroutines = false; protected boolean parcelizeModels = false; protected boolean serializableModel = false; protected boolean needsDataClassBody = false; @@ -194,6 +195,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co CliOption serializationLibraryOpt = new CliOption(CodegenConstants.SERIALIZATION_LIBRARY, SERIALIZATION_LIBRARY_DESC); cliOptions.add(serializationLibraryOpt.defaultValue(serializationLibrary.name())); + cliOptions.add(new CliOption(CodegenConstants.USE_COROUTINES, CodegenConstants.USE_COROUTINES_DESC)); cliOptions.add(new CliOption(CodegenConstants.PARCELIZE_MODELS, CodegenConstants.PARCELIZE_MODELS_DESC)); cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC)); cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC)); @@ -418,6 +420,12 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co additionalProperties.put(CodegenConstants.SERIALIZABLE_MODEL, serializableModel); } + if (additionalProperties.containsKey(CodegenConstants.USE_COROUTINES)) { + this.setUseCoroutines(convertPropertyToBooleanAndWriteBack(CodegenConstants.USE_COROUTINES)); + } else { + additionalProperties.put(CodegenConstants.USE_COROUTINES, useCoroutines); + } + if (additionalProperties.containsKey(CodegenConstants.PARCELIZE_MODELS)) { this.setParcelizeModels(convertPropertyToBooleanAndWriteBack(CodegenConstants.PARCELIZE_MODELS)); } else { @@ -468,6 +476,14 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co this.testFolder = testFolder; } + public Boolean isUseCoroutines() { + return useCoroutines; + } + + public void setUseCoroutines(Boolean useCoroutines) { + this.useCoroutines = useCoroutines; + } + public Boolean getParcelizeModels() { return parcelizeModels; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 4580ad56a90..52efa9d6258 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -17,6 +17,7 @@ package org.openapitools.codegen.languages; +import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenModel; @@ -213,6 +214,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { // infrastructure destination folder final String infrastructureFolder = (sourceFolder + File.separator + packageName + File.separator + "infrastructure").replace(".", "/"); + final String authFolder = (sourceFolder + File.separator + packageName + File.separator + "auth").replace(".", "/"); // additional properties if (additionalProperties.containsKey(DATE_LIBRARY)) { @@ -231,7 +233,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { processJVMOkHttpLibrary(infrastructureFolder); break; case JVM_RETROFIT2: - processJVMRetrofit2Library(infrastructureFolder); + processJVMRetrofit2Library(infrastructureFolder, authFolder); break; case MULTIPLATFORM: processMultiplatformLibrary(infrastructureFolder); @@ -312,11 +314,13 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } } - private void processJVMRetrofit2Library(String infrastructureFolder) { + private void processJVMRetrofit2Library(String infrastructureFolder, String authFolder) { additionalProperties.put(JVM, true); additionalProperties.put(JVM_RETROFIT2, true); supportingFiles.add(new SupportingFile("infrastructure/ApiClient.kt.mustache", infrastructureFolder, "ApiClient.kt")); supportingFiles.add(new SupportingFile("infrastructure/CollectionFormats.kt.mustache", infrastructureFolder, "CollectionFormats.kt")); + supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt")); + supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.kt.mustache", authFolder, "HttpBearerAuth.kt")); addSupportingSerializerAdapters(infrastructureFolder); } @@ -471,6 +475,10 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { return objects; } + private boolean usesRetrofit2Library() { + return getLibrary() != null && getLibrary().contains(JVM_RETROFIT2); + } + @Override @SuppressWarnings("unchecked") public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { @@ -487,6 +495,10 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } } + if (usesRetrofit2Library() && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) { + operation.path = operation.path.substring(1); + } + // modify the data type of binary form parameters to a more friendly type for multiplatform builds if (MULTIPLATFORM.equals(getLibrary()) && operation.allParams != null) { for (CodegenParameter param : operation.allParams) { diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache index 725ac257c09..eebddf4b196 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache @@ -3,7 +3,7 @@ ## Requires {{#jvm}} -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 {{/jvm}} {{#multiplatform}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache index 66938213465..12023221836 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache @@ -2,10 +2,19 @@ package {{apiPackage}} import {{packageName}}.infrastructure.CollectionFormats.* import retrofit2.http.* +{{^useCoroutines}} import retrofit2.Call +{{/useCoroutines}} +{{#useCoroutines}} +import retrofit2.Response +{{/useCoroutines}} import okhttp3.RequestBody +{{#isResponseFile}} import okhttp3.ResponseBody +{{/isResponseFile}} +{{#isMultipart}} import okhttp3.MultipartBody +{{/isMultipart}} {{#imports}}import {{import}} {{/imports}} @@ -13,6 +22,17 @@ import okhttp3.MultipartBody {{#operations}} interface {{classname}} { {{#operation}} + /** + * {{summary}} + * {{notes}} + * Responses:{{#responses}} + * - {{code}}: {{{message}}}{{/responses}} + * + {{#allParams}} + * @param {{paramName}} {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + {{/allParams}} + * @return {{^useCoroutines}}[Call]<{{/useCoroutines}}{{#isResponseFile}}[ResponseBody]{{/isResponseFile}}{{^isResponseFile}}{{#returnType}}[{{{returnType}}}]{{/returnType}}{{^returnType}}[Unit]{{/returnType}}{{/isResponseFile}}{{^useCoroutines}}>{{/useCoroutines}} + */ {{#isDeprecated}} @Deprecated("This api was deprecated") {{/isDeprecated}} @@ -31,7 +51,7 @@ interface {{classname}} { {{/prioritizedContentTypes}} {{/formParams}} @{{httpMethod}}("{{{path}}}") - fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}){{/hasMore}}{{/allParams}}: Call<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}> + {{#useCoroutines}}suspend {{/useCoroutines}}fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}){{/hasMore}}{{/allParams}}: {{^useCoroutines}}Call<{{/useCoroutines}}{{#useCoroutines}}Response<{{/useCoroutines}}{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}> {{/operation}} } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api_doc.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api_doc.mustache new file mode 100644 index 00000000000..dd9e3544fe8 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api_doc.mustache @@ -0,0 +1,83 @@ +# {{classname}}{{#description}} +{{description}}{{/description}} + +All URIs are relative to *{{basePath}}* + +Method | HTTP request | Description +------------- | ------------- | ------------- +{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} +{{/operation}}{{/operations}} + +{{#operations}} +{{#operation}} + +{{summary}}{{#notes}} + +{{notes}}{{/notes}} + +### Example +```kotlin +// Import classes: +//import {{{packageName}}}.* +//import {{{packageName}}}.infrastructure.* +//import {{{modelPackage}}}.* + +val apiClient = ApiClient() +{{#authMethods}} +{{#isBasic}} +{{#isBasicBasic}} +apiClient.setCredentials("USERNAME", "PASSWORD") +{{/isBasicBasic}} +{{#isBasicBearer}} +apiClient.setBearerToken("TOKEN") +{{/isBasicBearer}} +{{/isBasic}} +{{/authMethods}} +val webService = apiClient.createWebservice({{{classname}}}::class.java) +{{#allParams}} +val {{{paramName}}} : {{{dataType}}} = {{{example}}} // {{{dataType}}} | {{{description}}} +{{/allParams}} + +{{#useCoroutines}} +launch(Dispatchers.IO) { +{{/useCoroutines}} +{{#useCoroutines}} {{/useCoroutines}}{{#returnType}}val result : {{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}} = {{/returnType}}webService.{{{operationId}}}({{#allParams}}{{{paramName}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) +{{#useCoroutines}} +} +{{/useCoroutines}} +``` + +### Parameters +{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}} +Name | Type | Description | Notes +------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}} +{{#allParams}} **{{paramName}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}{{#generateModelDocs}}[**{{dataType}}**]({{baseType}}.md){{/generateModelDocs}}{{^generateModelDocs}}**{{dataType}}**{{/generateModelDocs}}{{/isFile}}{{/isPrimitiveType}}| {{description}} |{{^required}} [optional]{{/required}}{{#defaultValue}} [default to {{defaultValue}}]{{/defaultValue}}{{#allowableValues}} [enum: {{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}]{{/allowableValues}} +{{/allParams}} + +### Return type + +{{#returnType}}{{#returnTypeIsPrimitive}}**{{returnType}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#generateModelDocs}}[**{{returnType}}**]({{returnBaseType}}.md){{/generateModelDocs}}{{^generateModelDocs}}**{{returnType}}**{{/generateModelDocs}}{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}null (empty response body){{/returnType}} + +### Authorization + +{{^authMethods}}No authorization required{{/authMethods}} +{{#authMethods}} +{{#isBasic}} +{{#isBasicBasic}} +Configure {{name}}: + ApiClient().setCredentials("USERNAME", "PASSWORD") +{{/isBasicBasic}} +{{#isBasicBearer}} +Configure {{name}}: + ApiClient().setBearerToken("TOKEN") +{{/isBasicBearer}} +{{/isBasic}} +{{/authMethods}} + +### HTTP request headers + + - **Content-Type**: {{#consumes}}{{{mediaType}}}{{#hasMore}}, {{/hasMore}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} + - **Accept**: {{#produces}}{{{mediaType}}}{{#hasMore}}, {{/hasMore}}{{/produces}}{{^produces}}Not defined{{/produces}} + +{{/operation}} +{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBasicAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBasicAuth.kt.mustache new file mode 100644 index 00000000000..fc122514388 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBasicAuth.kt.mustache @@ -0,0 +1,33 @@ +package {{packageName}}.auth + +import java.io.IOException + +import kotlin.jvm.Throws +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response +import okhttp3.Credentials + +class HttpBasicAuth( + private var username: String = "", + private var password: String = "" +) : Interceptor { + + fun setCredentials(username: String, password: String) { + this.username = username + this.password = password + } + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && username.isNotBlank() && password.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", Credentials.basic(username, password)) + .build() + } + return chain.proceed(request) + } +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBearerAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBearerAuth.kt.mustache new file mode 100644 index 00000000000..32384488b9a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/HttpBearerAuth.kt.mustache @@ -0,0 +1,39 @@ +package {{packageName}}.auth + +import java.io.IOException + +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response + +class HttpBearerAuth( + private var schema: String = "", + var bearerToken: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && bearerToken.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", headerValue()) + .build() + } + return chain.proceed(request) + } + + private fun headerValue(): String { + return if (schema.isNotBlank()) { + "${upperCaseBearer()} $bearerToken" + } else { + bearerToken + } + } + + private fun upperCaseBearer(): String { + return if (schema.toLowerCase().equals("bearer")) "Bearer" else schema + } + +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/bodyParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/bodyParams.mustache index 7e7ea165b4a..15ec80cdbad 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/bodyParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/bodyParams.mustache @@ -1 +1 @@ -{{#isBodyParam}}@Body {{{paramName}}}: {{{dataType}}}{{/isBodyParam}} \ No newline at end of file +{{#isBodyParam}}@Body {{{paramName}}}: {{{dataType}}}{{^required}}? = null{{/required}}{{/isBodyParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index eab46f77ad4..1e501cc5f27 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -1,38 +1,145 @@ package {{packageName}}.infrastructure +{{#hasAuthMethods}} +{{#authMethods}} +{{#isBasic}} +{{#isBasicBasic}} +import {{packageName}}.auth.HttpBasicAuth +{{/isBasicBasic}} +{{#isBasicBearer}} +import {{packageName}}.auth.HttpBearerAuth +{{/isBasicBearer}} +{{/isBasic}} +{{/authMethods}} +{{/hasAuthMethods}} +import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.scalars.ScalarsConverterFactory {{#gson}} +import com.google.gson.Gson +import com.google.gson.GsonBuilder import retrofit2.converter.gson.GsonConverterFactory {{/gson}} {{#moshi}} +import com.squareup.moshi.Moshi import retrofit2.converter.moshi.MoshiConverterFactory {{/moshi}} {{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient( - private var baseUrl: String = "{{{basePath}}}", - private var okHttpClient: OkHttpClient + private var baseUrl: String = BASE_URL, + private val okHttpClientBuilder: OkHttpClient.Builder? = null, + private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder ) { + private val apiAuthorizations = mutableMapOf<String, Interceptor>() + + private val retrofitBuilder: Retrofit.Builder by lazy { + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(ScalarsConverterFactory.create()) + {{#gson}} + .addConverterFactory(GsonConverterFactory.create(Serializer.gson)) + {{/gson}} + {{#moshi}} + .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + {{/moshi}} + } + + private val clientBuilder: OkHttpClient.Builder by lazy { + okHttpClientBuilder ?: defaultClientBuilder + } + + private val defaultClientBuilder: OkHttpClient.Builder by lazy { + OkHttpClient().newBuilder() + } + init { normalizeBaseUrl() } - val retrofitBuilder: Retrofit.Builder by lazy { + {{#hasAuthMethods}} + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, + authNames: Array<String> + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + authNames.forEach { authName -> + val auth = when (authName) { + {{#authMethods}}"{{name}}" -> {{#isBasic}}{{#isBasicBasic}}HttpBasicAuth(){{/isBasicBasic}}{{^isBasicBasic}}HttpBearerAuth("{{scheme}}"){{/isBasicBasic}}{{/isBasic}}{{/authMethods}} + else -> throw RuntimeException("auth name $authName not found in available auth names") + } + addAuthorization(authName, auth); + } + } - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - {{#gson}} - .addConverterFactory(GsonConverterFactory.create(Serializer.gson)) - {{/gson}} - {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - {{/moshi}} + {{#authMethods}} + {{#isBasic}} + {{#isBasicBasic}} + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, + authName: String, + username: String, + password: String + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { + setCredentials(username, password) + } + + {{/isBasicBasic}} + {{#isBasicBearer}} + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, + authName: String, + bearerToken: String + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { + setBearerToken(bearerToken) + } + + {{/isBasicBearer}} + {{/isBasic}} + {{/authMethods}} + {{#authMethods}} + {{#isBasic}} + {{#isBasicBasic}} + fun setCredentials(username: String, password: String): ApiClient { + apiAuthorizations.values.firstAs<Interceptor, HttpBasicAuth>() + .setCredentials(username, password); + return this + } + + {{/isBasicBasic}} + {{#isBasicBearer}} + fun setBearerToken(bearerToken: String): ApiClient { + apiAuthorizations.values.firstAs<Interceptor, HttpBearerAuth>() + .bearerToken = bearerToken + return this + } + + {{/isBasicBearer}} + {{/isBasic}} + {{/authMethods}} + {{/hasAuthMethods}} + /** + * Adds an authorization to be used by the client + * @param authName Authentication name + * @param authorization Authorization interceptor + * @return ApiClient + */ + fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { + if (apiAuthorizations.containsKey(authName)) { + throw RuntimeException("auth name $authName already in api authorizations") + } + apiAuthorizations[authName] = authorization + clientBuilder.addInterceptor(authorization) + return this } fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(okHttpClient).build().create(serviceClass) + return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) } private fun normalizeBaseUrl() { @@ -40,4 +147,13 @@ import retrofit2.converter.moshi.MoshiConverterFactory baseUrl += "/" } } + + private inline fun <T, reified U> Iterable<T>.firstAs(): U { + for (element in this) if (element is U) return element + throw NoSuchElementException("Collection contains no element for generic parameter U") + } + + companion object { + const val BASE_URL: String = "{{{basePath}}}" + } } \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play24/local.properties b/samples/client/petstore/java/retrofit2-play24/local.properties new file mode 100644 index 00000000000..2af67772d68 --- /dev/null +++ b/samples/client/petstore/java/retrofit2-play24/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Tue Mar 17 15:39:15 CET 2020 +sdk.dir=D\:\\Programme\\AndroidSDK diff --git a/samples/client/petstore/java/retrofit2-play26/local.properties b/samples/client/petstore/java/retrofit2-play26/local.properties new file mode 100644 index 00000000000..a3cbc025fb3 --- /dev/null +++ b/samples/client/petstore/java/retrofit2-play26/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Mon Mar 16 20:42:28 CET 2020 +sdk.dir=D\:\\Programme\\AndroidSDK diff --git a/samples/client/petstore/java/retrofit2/local.properties b/samples/client/petstore/java/retrofit2/local.properties new file mode 100644 index 00000000000..e5a7fa12e4b --- /dev/null +++ b/samples/client/petstore/java/retrofit2/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Mon Mar 16 20:44:01 CET 2020 +sdk.dir=D\:\\Programme\\AndroidSDK diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/ApiClient.java index ad3a711e167..3ee15e31aa0 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/ApiClient.java @@ -45,19 +45,10 @@ public class ApiClient { this(); for(String authName : authNames) { Interceptor auth; - if ("api_key".equals(authName)) { - - auth = new ApiKeyAuth("header", "api_key"); - } else if ("api_key_query".equals(authName)) { - - auth = new ApiKeyAuth("query", "api_key_query"); - } else if ("http_basic_test".equals(authName)) { - + if ("Bearer".equals(authName)) { + auth = new HttpBearerAuth("bearer"); + } else if ("Basic".equals(authName)) { auth = new HttpBasicAuth(); - - } else if ("petstore_auth".equals(authName)) { - - auth = new OAuth(OAuthFlow.implicit, "http://petstore.swagger.io/api/oauth/dialog", "", "write:pets, read:pets"); } else { throw new RuntimeException("auth name \"" + authName + "\" not found in available auth names"); } @@ -75,24 +66,24 @@ public class ApiClient { } /** - * Helper constructor for single api key + * Helper constructor for single basic auth or password oauth2 * @param authName Authentication name - * @param apiKey API key + * @param username Username + * @param password Password */ - public ApiClient(String authName, String apiKey) { + public ApiClient(String authName, String username, String password) { this(authName); - this.setApiKey(apiKey); + this.setCredentials(username, password); } /** * Helper constructor for single basic auth or password oauth2 * @param authName Authentication name - * @param username Username - * @param password Password + * @param token Username */ - public ApiClient(String authName, String username, String password) { + public ApiClient(String authName, String token) { this(authName); - this.setCredentials(username, password); + this.setBearerToken(token); } /** diff --git a/samples/client/petstore/kotlin-gson/pom.xml b/samples/client/petstore/kotlin-gson/pom.xml deleted file mode 100644 index 56d7495846b..00000000000 --- a/samples/client/petstore/kotlin-gson/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>org.openapitools</groupId> - <artifactId>KotlinGsonPetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Gson Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/META-INF/kotlin-petstore-jackson.kotlin_module b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/META-INF/kotlin-petstore-jackson.kotlin_module deleted file mode 100644 index 38c4425da8d5a75423570d04d4b47c016fb8370b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmZQzU|?ooU|@t|0WL)@f&8L$z5IgIyu^aclKlLfVj*6~f`XjP<iwK9{5<axu0Sp| zbR~MpIhm<>C3=~8X+?>}B}JvlC8b5FLV}J3nT|<7equ66Z?SiYkVsH!aRHE->RM5f JnpX@F1pvVZD~A98 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/ApplicationKt.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/ApplicationKt.class deleted file mode 100644 index d44eb27f99ac8a125e94cd99b920c3a280cbdb98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3936 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 IyZFO@0D2Hju>b%7 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi$WhenMappings.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi$WhenMappings.class deleted file mode 100644 index 9251a566438420e501ebd3b79975c4d828e8061e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmbV~+fLg+5QhIvfCMmYXz3w6AJPInnKQJ|1EpL<0#QLlFSs(v0*1u4Y$sJ8tFBa4 zRmB7Jp{oA&G8d8D8>G?Bx8r=9S$qEc{dEdp1|Jlr{P58B1MNA18~c7MvKuW|d$G-Z zWPjB0YT(vBA8BvX2?EzUj7m@nm1C#t*e%C9w72$;bt5jJs4!Mr_d4yJFK*m8I{SHT zN};e<&wn<ZU!KV?&*qos^2_u2<%Rt6qC$Cv7x&!wjY4r^a#vyYe{aV14nil2!%ida zgxcQLQQ&)#{`57_B~%m!x=yR3BZZ}j$-RwpoU&};5-ty66k`_pF))Y%t}2vvI*o>o zc<}r=PrZ)nAWyx)v;45>dQL05Y~8{w+)n@Rj>1UYJMhD{6T3d2TexSO`wGL`y6J}e z*nDE)p{dtcU&|(DJq-QO!edh(XMIP9T^*j)Cr$l{g_60^GYe%yFDwiinzArtXvV^@ zp*ahdp#=*ghL#jYH%|PRU(DXrvD0*7XPJ}M?iM-NDqZ*?3j5g>>6YWEP89mq{H9i@ zZg;%cZR=e(a`#($)${x~yKz*R=F9G*P_9(dch7^WX~$V+zgcFtS!S<UW~W(ZpIK&? zX&aR?F5n^*-UEe^tPK>@Ph2_uJ@g&dk~D7qz}>#B3?C5t4L%|c7@Q!M3_c~6x5R&* zfFV9ne4_Y7@rk{@oq!=eQGBBKMDdBe{&WI{_(buE;uFOu_WH947~&JfCyGxLpV;fq zCt!$A6rU(QQG8;rznFj_K2dz4_(buEz5dGt4DpHL6U8TrPc;5Fjs}MVYh1^fUvV&& U_fV{3C5zX1BfGbCyu&J&e|BPM-v9sr diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/PetApi.class deleted file mode 100644 index c6d591f86366919c06af52f045a62cfb816c5d88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82237 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%0A^svVZbp*uQuM!qx0EeiHkfpUS@AXR$B&d3e5@ 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 Xb3B{l`5beOA9K8z<K-N$=J@#^TVD+X diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi$WhenMappings.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi$WhenMappings.class deleted file mode 100644 index 586f194f4dc0edb00ef9193d0055b200609f10ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmbV~+invv5Qcv@X-?h17Rn)<4}m6}wn->dDnhENUPNjYDM95TSDTHSx=rkr*9qdW z2ogdF^#OP&#O!W;Q7PP18rk2B{g20E|M~mt3_ufG3{9m+o(j42Lt&H}M_w=%TpEx3 z$m<!U`A#URpO3jb@WW8ZQIrQ`a8LZ1?~Q#q@;ZYP9+*5b3~SXrIi2*r2ooHiZ?A4J zEcM%q*BXn%&BfssL*WCJCx!XQkg3%V8Cw6VU&tfvM@CNrGu7Pd@+ed?;-9{TJP(H< zH}l6+9x-gy>izvoWZ8Cb1y@Tb!*#HXToFsS#*pt#gMderc=M83*KngqS#MG<rH4ZL z<K(h!2e(m)&%47=Zp$O3C%zGi)*akSHTM}-x_l@!JqWEhc$mf?QG7Rf*FCM3cJL&P zKc#q&>lxSQ@n>oLxr2Oqqnd+4N-rD~Q+ma)x__z+y@YqbjX(5_zfG?^nPuo(v3PLF z9V9Mdm%au&WytQTA!n#`r_zWCKNOJ|jQNg~$|N_5+y*r<OM<LhiF-<kDsd&rOm!qP zRS_TK7Er<p7~YXnPL83E`4g*Wzf0e7eIDDbAGn+CB=~@EImO3>xfH8}`4ra)3mvPk z&p~GOgjP>z^@LVWcv1gy4l=7Jw0c6TC$xIPi~84dkXb#U)e~Ahq16+n`ft=4>IdG_ axK8sMYK+%Mrj3on8faRt)y7+F((n(lApm&* diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/StoreApi.class deleted file mode 100644 index 3240ab8d74c1ebbf3bb557f2407ad758d1922756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42521 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 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi$WhenMappings.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi$WhenMappings.class deleted file mode 100644 index 2a3170461c2fea1aea6bc83150f91ee5384f6289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1459 zcmbV~+fEZv6o&uZ0xd9TQ9RW1p$d2!%2`1Wk&7k}5>UM0YG^kw(9TR|rZqm6V`7Xk zJb({n{5zX<(PX?KS=sB`Yx?c3J+uD&{dERl8Xpv@et2a2f%crhjeWlv+4ZKYz1ZeH zvOh&STnpUF=VR?{IYHohM^OPvp>*PO9J}dwNA~u?iLS>5<Q2v$8(zD$`^Amx$LBw< zOey5{YuV4L+2!f%@=SJlHoH8RU7pV_FDMk3d2`Q=R}}ISlY0s?|9dsAcNjWR9JcFm zJJj}$jso9{^vAD(E}*0^&~ch=9VskMOzv-9;FKi`S8#O*qZqT$kAXqta9yFW+pgDj z#DnK9c<N1*2YKo(p5=!P*K?ZbWos7h;BNQ-?kSAayhA^1IkD^WxrGPDd8jbFqZ@9> zkIg3*9-DfF_4RaQHp0*kEj%^#an^Tr*wNv6ebUsQStytry|7R;^vc4Zp(zVPhNdkH z8=AFX8Jf2+VrWrebo11Y`Nixl9Xkytc9uA4txlekt-1?8MD8HnqPyjIs#Ar&b-$q% z$~$c@c3XPSjogE#Uh_OZPH!BQs(jgf6pE#C_uccLa<}6&v)?qc+cdM+G_%t*v(GfM z%WfN`A}--F6y5{5k+cou)K6SH`#tm>H<E7L{(<{_+bKRG_8WXc956UREEs%FEN+Yc zG66$;qWDDdiQ*G`eLDd|e4_Y7@rmLSd;MwxhWJGBiQ*H*C-(X?2^iuN#V3kS6rb4Z z&m~}pPZXahK2dyPufLFhAwE%jqWDDdiM{^o1Pt+s;uFOuicd8DH;x8}1M6JJncr|Q VmiCdaVL6SrSdrao4ezkV<sTSyX;uIL diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/apis/UserApi.class deleted file mode 100644 index a77b699e57ba002b2dd41b610759352a201f46d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79974 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%0D=2$%cNb zB^zFfK7~!noTFle!Rb*;HuPI9*)S;s5AA8m2JP86Bbn0xju|9r(3zfO!%xO@=^NPO z(l@Y|)RGN9X^vTRd@!dJN*V}gSW7namV~{N7y=y?kR*m+lEjZpk~pSG5|1%S9QRF< zBpX4}93!yL5kK(C=Hin>C#h+YY-pB?ZGze}8x;uNPh$3hWIQ)vqr}PA6d=h)kPP7F zgWmmIoWgaInkLDHW+~vE)Sk!2NV4H4>EvN@LGdO@l8qo~7#28EoU0e$_~sX&(HZuL z!>3MC(<Ir@O9tEk?fFR@_537eHAn`zB-t>zbb$AhajsQ_<B6Y((FI8Zftn`ChF(r2 z*YFaMYG~RgnTAQ2ZxYbEPtjVQVd#v$FZ?71Xh;CU3_pouuE98oGJ>Spl7Mg8-hF(> z87+1e(`6&Y5VbHPse!4<(aaVLk6?0&_@(|U7K{9+k||=bC`GO~<_KIqA(n`xN3gCn z{JR?dYK@pv!)~f!`_?dA5ragh8vcEaz!eoY)d*1|!ZjkbMx@n<AvGemM&#Fs18c;z I8d3KD0i+$$YybcN diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt$defaultMultiValueConverter$1.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt$defaultMultiValueConverter$1.class deleted file mode 100644 index 3569514091d209a6a9d538cf42ec024555ae5e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmb_bTTc@~6#iy=r4*=m1r#r!a#0rW2DXwkjmE}OjcASGY1$4ru$>{hvrT;CxA+S* zCSo)(#7BRW@yxa;3Tk3ZcF*<8IcLu0%hwN|0L<eK!&B|AyLw9~z9o&;Uf?!7DU@-g zTJw2e{IFp{U%16BS*(-F8%AmsJTT);vBpEsEYmM*+zUlXtG4is@W<y;U<~!jrZ%2b z?nb*s;mD!5=T>;D-sJiHzO_(wqPq9G(p;gk!Q0&RxLS7~);C1M<o8)tj4#!Cekso| z{QDd!#2H5S`47pHLXsgVRa<WghD#Isl62Ef9yI+O*ex)NG%^`D=w%qI*iLT<Q}?-4 zfy<TBhDXhGtJ+jU&!gvz{|QA9UiSpSazDD$NtMC?L#l1Z@Ng}QBQ|XggA8%=LIw=a zqPYKk&QwZV8qs1HJgiO0f>hEhF~lY&YXqGrPu8+Hh2abm7-2}4t1C~6)zV!O3$%9~ z@R7aUSQdsix#5(>X|-dtvdoeksr5*ORbvcnlT6JyhMC>%{><)n#>sUV$-CRR-R)s# zmd&Sg&T#w`n~mMie14U5(zG5<bDp8Mz?D`nTRIG=Rxm95>rtd|#lCOI&U_||GdSKu z(k!*-m;0I7G}MohZqn8bRHPEsuvHiS6FXnqOx@sKjr-E-UE|2(P#M`0W!08}Bzy74 z2GQdD>V3q0-V$_lKf$tPrG#Jdcn}C$i-EhU;pu>miF*A)HyL_X<htVa<QXz6I`kXj zp0qU$braMMB*!ehF+pvktH+RiG)*O*E7J1!kmVX_gM@I1C#R<0A^Vyn(2mk^&;+f2 zk#N?Zn0}9=*6rXr(IlCHKHMOBq65IOC_F*Qa+3TvySP5$x9CsNI-s8f*g=rIm*0j; zPQ`a{`c33bWAwZKWE33e{Rrpz4&1kx>wpqiAaI7l*z#=1MWS(BC3>5FhaQlR_&f^4 tON2a2wVhi<tc>%~cL8I2+ISfkamkX)t6%{pFu96EfT;k}0Zv3T{SAy&Z*Bkp diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiAbstractionsKt.class deleted file mode 100644 index 157ae0f97df153e5df29a5ca302483526b8912a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5327 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 ZazU|i*v0(NM!!24uyMp4yx~57^j{<}b%_7~ diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion$client$2.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion$client$2.class deleted file mode 100644 index 7a133a481ecb15660e2bec46813887fda2538f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1445 zcmbtUT~8B16g{)0A1qZ0A_Ag<R0UMF0)EkomIh*zS`#58#;0k!l%d<1W_PxUZ~PX2 zfgcGbni%4vKgxKgEl46fsLgio+<VWQJ9FpE{`mRj8-PU=7z)a-JF4YM-V$0VFL0`! zaHV#H-0^v!{jjP--*xgWQRpPn1=VbEDU?iik?F-a7{gYnp|mHYv)69YWbOKrdrpZr zD>a@yncE3vRnzpq+31Zjxsqz^YTa6LUN)YS?N-XJW*H{VW{snd;p&O}Da>)i7-B-U zRl{W%nVl=`@iuonF6++A%AQ-*RAY?7r!F9g1Z*1?1{h{arc-;auJ~Ng;<=Pc^X^8< zN|!^=BdW~bwlj|N4E@JFWuRXC^ND1WNMWcSgBWI5`FEZ;Mi}h6tJgx|)m)!p>Wmhp zdkCsLic2;wVvJ$(v}PV5<CtKGRt#|xlcv3wafP8z?}~t7{XceptVcSBSWZZxR~aI+ zbKAr|Tb$cYVj43xqDV6&isj9%e7Uer!yM_j3m!Vs=?ho$8rPhdtY$kxmxY;Eirh-a zg>fSctU;mLJ=*i(e!@Q7x2-XYOzLod!pgAc_V;%&D`6STBEvwAOC{enRT$99M$gjR zG_D)X-B02sruu30kRf?|{}vjW_ES(b((_<RNVgm|E3UuAD;`CLORCDfZSD)>_kx#S zg;I;ATa;}P2#V)_YnP~tQo4S@<3Zrk2@I~ws;2@W>(qo@RU>t7in`?HD?p;yRH0vW zH-srR-s9c=gB2NCb`%WsX~4MI2eqp&m8bjEPmvY!u8?J9qw@zyzNZ00mfo>WkW_50 z9+4R6at~^M#DxQlAK<FNTPN_-$WbKOnQP-(r`(es+c~nJqrXmB!!}GaP2t#l<TGx3 zFiEO)>o|Xj^5!@271ry|c<>32x}YdlDQwf^E?^8#$?v1v20Wv`MWV=e>|?BveL~1t m>cZR`M2eX2JhyS@$h%v_0vz+oya5Yv4~vuvuoPf9K;jo{xN(C3 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class deleted file mode 100644 index 3cb0f55310027b00fd8c69a9bd754e9f28d95b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4330 zcmbVPTUQ&&5&n7*k{ARG0&H%!!4|uKjfL2F?KP}7m`fIOF#$~MkYqE61`mv8l<5&( zoXe7p<IVk^{D3^=Ey?C#$>t=7!()C_PO7IRF-UT3M+em1)zwvBRaaG){{5fN{{>(S ze_*)ndOK-1&mA*w`L1h=bk?@G<EJfW+cSml6|#Q8<LSw~H5F{6rrccKbS&42fiW1n z=DwM>O=l;4e{+{-{TS*PI#Q`EZu1?}=UdAjiT8Yq3x=MJg+14|Ehp{qZJW5$^Tq9h zafbK=>2@st4ny7G&^klI4);m%JU?J)9UNK+bQOHdPA{5yI&ia+HlbJoIIF&AIXmOk zlsk0t%7V0em;0NZX*nWoI*#j`K3OHwORm3Eux;WReO>3o(8SPYX0u#~R2h6Kn@^wx zx{hWT3=#jaMZTB_ApC!>Cu}Wc@yp~(>qCaFO1)|$(B7f6pJQmGa}Naf95crm+Dje` zyNn_AzuZH<F*j{a7&=ZhmP7{Hde9|p?Imp@tgU0P`ZnY}m*j+)137)TB<1uo#3pEO z<UNXvWVHxo)UqkW6W7~16-Snqh=I5_6s$KDtkTvgKdC4Y1O8#9{whPWbars7YwjL* z7&=ca57C2D*Oituog#su-P2QN>A|TnrRyy+P$gh06p{?*N_n%ppG)7{&#lT}&C(Uf z6j6yu;^{Koy~n<ve=B`|?|mB84zYz|Qqf2$#Sk4R=Hr6-^k6)JcW_&JTnaAdc>?dE zt%0a_5~xSC0UEwYE({%v;Vxw_Az3%=LRD0$x<JCGG1G`C%u?9Zf*Hg61az}t*<0K@ zYramh@2U-kz89F8Dsm9`_S5Sr5(6hMVnJHB#1Neb3QYpbi0g>p%M6*pk}sr>EytHR zVyCD1wpp<KDXI)XF?78})7#_T_|Upeo}hzmsqE?I2f1LE;ri=IqXJhtu*iLL%k)jM zL(A>gQKe?`iz<h<87v`}RAt#7k+w37eSUm+P1ia#T{DgkbuBI@%`_%x9H6mYZN?+T zF%ds`Ue|eiIHrxVyRo=-^2exVXe-S|UAHzGd3f?{O;YsZLn75zlcLq6ST!kLO=_qn z>6N5jqp>^E$s~;D%><*FV01^~38U$9B;IVatXwdR?&f49Nl4ZAXe+VB6<gA1BZl@D zGjtF`uW^pFp1&1+c=Ac4s3IAOcN!Wg>N2`l`i&l9=)E;d3@6W|dy;x2-e>d^*M)%V zqH&4DT&{)mN`N#)NPCTeS`2Rl3~w4OCx40#${QSGbj66uQjzx=nkEbWW7o5u2JaDN z8pWPZPx9J9o^q>o*7b7J6dsFw%Q6+MP0}8C_KcGaQJd}w*9ol?4|8^C*{E`)SkR*M z{s-@DLQP7KO01ZV3>RzGmQd0~RpFAws#bbaIJYQ{a&JJkmV!R0KU75W<tiR8lwYay zs@9C;xi5Uz<0HFfc8`pslJ}x^B8Gj2;o|O@gf2B4D}0-K+{yCHTrO|NKriUUTKvQ( zJC&f}c}m7nDZ1}Xd7OHi`Jk7XvI#RO3qNiFZM<Av%iWHmC-5D7SI4*Uy*ONk{&Ed} zL1i0{<NFMY<pNa}H_fxQ=>>5jgM?ZcDooW6WHn`IU6#Hd=s3VLs`Yu*qa9=zX3AP# z;<Xyqm0X*lV*ebUNDF_&kSO<#*Y_yABUA1c#c|65fn6%(Ho3PZ+X?xyyIIp-H$6+P zi^PUiYsWEV3rgMNO2P519G`RcEnyMQ<Z0JNJxk^8GI=J)sf?dt)2Dgf<5}66Qp;34 zvtC19V$LCN1{Wq<SAEqjcv(JcNvQ2=G0is%J2M|rataC$WavGJ$Z~CT%7>C>Er=sV z{|rB+)d<bxr$6#fJb6_24;(y7YDf4ed6@k8GyL!fKR(8j)xTl#uK`;t8lY3Hmq)LY z2&xi@9HI3uG-~)6eMbXY7k*CjgxW_EZM6DDz|)9d7P%5MwxYe3yz`avx?fpdC%Onp z1-=WF@_K5>E8*%6a9zZuqMUcg3XN#>SC4R6x*=?+5_C>66b&U-TtSMC{ff9_(o0I_ zKrL*8mDqY;ifyPSwriExl%Q9{Hc|`QXeG7_FU6LriR}xO*p#4G!Dckz1_h~#xh8U` z{4f=czYZ3^p>G*>Z`0U{o48fJIE`)s=sBVvHlO0X#ZNI=H?~ywcI4{c@g;_1%t`xL z$flm+6_#RwVwCjXdma7rSSacbCCL3sM-GIPMyi#P1nL3_nhfMLjWW^dhd;wgr6Y}y zpn4^Uy0T@g77v%BmkzJhK3shZ53o+hBls<8)oG?thx#rB$nR*a;V1Y#jUTTrPA=== zI;yL;M;~78E6ry0t9_ZiGfc1h`}Oq4y*|94XRc(fWp3WMozaJ9bjX|kGvWIR-Sfi@ z)Xm{h@b^`0lvZDx!`JZ*qT+)MFoAEv+`y1Po4}?(Tp$}vwgkAqw!n_SV*yKGS71b- zOCTd~NnkHvYY@-{Y=L%xoPZ;6PhehPLBJKr3)~R6DR4{RTLPYd5Eu|roiETSa8aP} EUq^BZfB*mh diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$WhenMappings.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$WhenMappings.class deleted file mode 100644 index 9f70f9043945fa2c4f1d933ac21deba02c91fc4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmbVK+iuf96r61?PJ#g!$|c+{fhOGCmV$%|NKtB0ODT?;P=xZdNtR?=XKn0t_%1*~ z2%&xeAB8x!%R8#HTF;EnnX%9A?>|3}0BqnH!>b^g+CeB352X$QKeord6iVAteT;al zqhzd;NZ9RAcCr_Z_cNh(c^FDHjSVmc>wqt~?Q=D?z0rXfYXb#_m4>5|dH=K2<Joa} zV~t^H=rUAZQiziJHAA7<+Gp7O&#%}MpAr%4U7=^e#6Xpyyx=}b3@@6kVfQ39TP9Ay ztf7X}CQ2w*v4pc^yzO+Ify40pq^`?2S0&f;3`P)5q~d<|yRL}~xR~Z$BL2o1n5gHK zR~U*rPJ7$LwOqK)Q0lb@ogEW5bLAGb^xjd+ot)pLmY&xq;a)D>r!=oOaJ{#E6U|&} zF)Viv15GoxX>@$THQ%D6m@f)+4OqHaL`NA#O6mOAAz62ViD0PjB}&V=*q5;!`J$~< zpt+WTimi1TRxvfP>gnt<RDppC7@iUnnH})q2hJS*s(pj?HC-#;ak=Pa@G8Ml4sQ@F z=kPW`BZm!wl^m`Tw2mttq}cGjPzc3illE15KBT}$Llj&*&ejvy|Ja&~b!^b~7oi8V A-2eap diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient.class deleted file mode 100644 index 90ee4132ab957f1904bec3d3e89f6873ac051ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31155 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 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiInfrastructureResponse.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiInfrastructureResponse.class deleted file mode 100644 index 419643d8f06c1e4b819650abddd3ba7bd9bdb4b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1608 zcmbtUU2hvj6g{*4T5lYCy=j{?E&ZUOwVkHx21*N#BHAK^B{v`^ijeX&UJuUL>s@PS z9I0>lEqy@n1`-Iw1B&v<k3!tFH|-_`sRC(t?%p$J&fI(F&i?t=?|%T;#3u}&h0(wb zCnDezsl(7$uIEb;XjcZ`MqKG=>gj1D+@}-SK8JLLnuLK81u%x%*50R`AwS}-&x3*c zRc|Of-P(Q|Vz4jL3dk}n4usy-Tu;^WurC-gwR)Q&s}H4Oc-Hy9LADqy+TlyV`ywL6 zYOOwxZK|d3zTgugv@c>?sqlAoB!fXKwWuSN{s+c(Yn!z0%px8N-HW&kl*@x4r0gUW z%-sp~&eZpbRf>`t?!BB)&X3+T&9l<S%Sfg|nWZ6y$CS!DmMp!nRYDn+A`CbT`7Iep zz0L5X_Mf!s`zFc^H%6iMW#A5v#?(?;L;?5Rb`Y0SNlz89%&_bo3UBl^kN8*+qpgw> zG2E-A&LHWk6q1}ueZPdOShcW%YqQoN{}SG_ki!i+>rN8F3!!<RYfdFI#zz^t0W2PD za(gouv72FFBZB%58Gbl9zHb>ThIMjm88!{ECD$<Nwb$q^(|e2j99ffW#=N_7a@@$8 zC&xD1G@8b<MJI1(R*h!%^i|%lbKNyNzk12ZI!4oUEXSOGHH*!{H>cmlocwCmwCsg$ z_4O)~wk5D+FLoWfOj4B;)wZjr-{<MPjQ%D?zQ-sl6b{cC-BPJbwLCAx#zbhP!$@ol zxi?Z_z;OLvulIwIX1La!23n3qJ2;X`_I&a5O+PafcjX|Us~b@dXXn?q(vgAKnT~rR z+T+A$a5|yK{e2$E*iXQ<i@L9S;M@k*Za9rR@r8_qt|n{t--;xAn>sfaA1j==k;y(J zFHd%nY?gjAc@*e_eg;?|?k1rIO6OQr*r*cvA<en8lIn?E<7X`WI3s^VV=M>~dPHMs zPJoFbdFkyKwczDM=yS3L&D-nFmEUl^@hfgN)_=j$PlOpb(~N_QHLuLMi6*T|lKGhC z3UNenHkl;)3?9!!ns`EXOtZJB2DcB8Y2*Fba|df@-Un^m#XUk%I{;Itqj7*Gg`&c` h!hMCZLPg=S!p6)cgdR&_LBUq2Dm<7Wd4+<4`!}zIlWYJ0 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates$SetOnce.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates$SetOnce.class deleted file mode 100644 index ab4fcfc583e0682a260a5befcd16ce4f3ad75046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3186 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 T3<x9yG6MAigZ|M4flvMej4&A- diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApplicationDelegates.class deleted file mode 100644 index f4efcc20bd38ce5db80af839decfe2839d01a04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1711 zcmbtUTW=dh6#iyyuh$!=aom(9PJvz$>Lg7!G1n$;L>fRfxNa3&sj57U*V8b`X4l#o zN8$zL35lP;D^EOvkcdPjWR*95RK=OK6QHgjqLO!J&YACA=R5x6#jn2ssNgQcdKB+@ zQCEb#D|HkF%JTy$LhZ@$Y0Q<5d%o_)!rSb21L<=uqwo_Eh&`@_%7QTz_W2R_0v_&p z58L~~*IA?(vP$TOp)VNjl<O}e))(prkq%_&bz=%0YblhsEqLc~EVXzv(0#Se@VMGq z8@1jjw_4|OQ5`iV(+%=`qi*Wn7rGsD87hy5VWgAll-G!KqZb5(n)^2tL3le51lxLz z9?mrfjmpAhu&XkZdV}H8tD3fxM;_xY#&CfOI7bJwC@`e;mr^m@O-lKn4^1`ZJK`zt z1$u`EJ$lvRXlEHFhL1is#4>zaeyy;hL29F_^N}f!3~Uz`rWsP@g`}4y7ir8gIJHKz zwb|JEl#W%R|KJTKPf7YfXx`zPQx~kmqZCaJGYj?BY9}I$NTg>6r0T3P`2FK4*P6Cm ztI$7oEr$+9a5B#C-&oWA<BGMy)|hiI>sZgfx2=Np`BEWODirNvdYY}UV!CME&#a`c zr=9+BAyaW3t6-Pt>V77HXP^II=S-*yqg*h5n&^K_6Km024(Y~lc|f4$uFy(Hu~^>c z{(*`@)1%ou-o(WmomL3=s?ooFpov;rQHQuNQJ0};^bXr1ZkdTN?1+3G?C@9`d8o`a z<zC3mp9#b4b}!WOP}IUBsU%@G|C&D<yO(bt@t7Y9E#iN`#+#Z_e!#oK0Qp)Nig+vF zN(o}T+l+d#FFundqnV-0osn=@r83jzQ88nxrc)Y|hAp(eOVY>mycX^GXBd03bb^UK zCVwQ^!h5vZWJh;+pVl`9I202vMmvQ|bpJtu&f>!%-l6>?`m#hB<cLW*GQCV^6V4+i zCY=jc(qDgv4683L{eqc6z&oT*fjMW9ZHi&hS2{B`E`iMA39kG^hrcIjCrRc9fMJpj z-a0d$C$uphe+KKx3A`^Bf5xhD!p`EEdQ(^<olDv=GFT?_^(0UQRob^n|2B2+>Ml|> vTuXk}apP2)t6?7RkQO(0!4%3^*oCWbQDIS`q>xcqQn;lsrC=*8E8PAQ>JYPm diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientError.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientError.class deleted file mode 100644 index 603a689cdcaebbd858e21f5b9e3f80ae8e0d3c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2831 zcmbtWTTdHD6#iztzAXlf0}VJ_oQ5REgxDt620{abByJ2zv5P82t+X~1ve@3WcGjqQ zsrVI@^4h09^r5X9CCWpE^4R~-zf$$gu1ywjsMSjL?ws+teCL~U&iK#2-~9n#9$O6a zmc5g;n%vZzhGSWEk*(GZZaP`Rd~WN)v0GKAW%KN+ySrxFmK_FT_-3(ur?{){>Djt& z?qr`-c6rrVSSt4DZn<d`js)1`qG_3eFP6&-OA8G5{;#7jR0g$TZNFqloJ7hn?PA^K zPQ}&@Q)G41v>e?r2t{_IRj=!nIwv6E9qz2SUWU^%C;h|_LO2QqeH6`kVF-rny^`SL zlmcmjqPN7Vwapn=fuWxwmwbDH^h_a!LBwUaGlc8~*SEP%5eGe7Eyt*5*Yzejdw6tb z(FeTb*oL{Y;8Q3X!s(*1<Q~L@(`d3B$&>_7SRZxZ40VX|0V*8d>k_axNHL7y6G_21 zLuk=34QGkrV%nEsyBG^Tf0C6MD)(>yU9StUS)Zp<$eP)TV1!|^W;u1k%<k?rsEZtK zn|eK4FeUB6sERN?WjI@X!K<~Wx~(@jX%xhUM<v7ME(m?OwNGzmD~4%Y)Nlcp7_Rl$ zES)ARzijd_(hPmR5@fj1YvKC+EX0t(Y!oxN!f-qNpIpdnCUI3m5Lt$D7Y2@>Wue%O z<oo=&-l{vR)WYuIvg~!;u5sHv`mwe})vDKNR=IsnWg#9rVazi`c%$jOq>UJ^BdOsU zZb(p58dcgY25LSRWM0a57=}6k*14l^>yA!MpfvUZG*_8?#7V5UBBU6gmafs(cAnv{ zgZ;Foj4Il}{^2W5YbnMf-fNnc1N2R4N+dFRu%A&Q2m5h0A4#YQ<q^v%E4LC_M2QEI z>L|;pi3qKONhKFbBxw~+4okgUG@&J2i(E9P<s$EY3@P!x%`+V<l4ZE08i~dGH!pq6 z?CbYGs2@}Z;)9#RUaX@(#N$Kne+ngJl0+vfGpzJl3?ID>h*VIscqcd4<c@GGo6qg) z)tazOhVhSDUadI{=QdlWV>Ecd+%tqh^L+WkjAw|Jj2)9ku1)h+^~UaC(J=W&t5M;0 zS<ZiXby!uszNOoSl-rxr$Ne5Q@{s`jG`*`eDyg=aR<c@ll|L|~<6%#@&nvB+weK8G zvq5Gw)^@#h0x<Gac|loANXScvh$)g3qIZPe33)TPZyJxJxlU^ZXAgBoUELu>AuD); zq%2tyzX)c2N9-3@{fVn2Hz)Cwo-t1W{TLw0AC5YJLb4N%hJPkS1s@zub#X*#B1w51 zM=^06MXHOjm)N;OG%_(7x|nJ^G$_1EdlPes^KWrE^Bd;gAeWhajaX*<HHI^DuQBoK zAxg<c2ouETc{f<bGj69$ZrWVSm1J0vuH_X(;XEiQd`WwQ0YV`ULZTr|Gyo>)$UKHh z<TOmbq(@Zs`&S6E;)oiQ3+3*J8m5I7xEXqjn;V(gaYB3BgSSZ*K?I_aewWVyiWnxR zaY}UzDL3iQ+5yhGbpZ5bSb)XD><t#A4^UhWWB?_S6g)<m-mgmQ%TKk_nn!!=USe9N zl<KS=XtSw&>Qtj1?;+o<qh*R({zCrB_1vAjmRZyA6~SvzR*RJS-De0Cu;hL|$GwiU zT)+xeX&3jOfeEbP!84o@7!Y_U@JJveP!Je&pCj&*MEXn#L<RlP!k9o(U`QY#@WnsI CQ_Um* diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException$Companion.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException$Companion.class deleted file mode 100644 index 6409367eb2bb71986db5daa573f414fee6dfa085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmbtSO>Yx15PjawSC`PHE%b|TD9|Fc+xCEjiV!qyrATR!N{NtqK+e`JPBwOAI~B)> z13!clS58PAP?RG-3NhYLxNrd^%QNrIJbOIjZ{NRs1+anp3{SN=jdfQj-jz=4)W%6F zg>tb}Cx%;RdWq{95mz&I=WQaoPHMGS)txR^<Q2gfDlLA-<CLq@_<6G>5?4gXP<Skr zbWa$<rR7E$c@!e#P-MutH_|d})&KYMO@{TQdRx0xs<?I5p{kuQil_0mIN`n2Rka$u zL7P2p+QMuuHzEYSi0Q@Tckp#5i!!YK-DwPy=Yl=q_%U~!Y6?1MAvKu!twOMwL3l`Q zVQr$0*BPpV{!|pq1yN8L^rN8Uov~=pFAd*^bA$dyu*SBErC|7>5LAML@k+Q5tmR$} z-yM2}@`fJ^d4JRfqq|VC!bqMrgt0W1m$hw%*->X!y24qfjaX^%q;0igc=&IfFX9@* z*ss}>zhjIxcD3zjs#Sd~7$)jciTz%uDa;{nro>FubwY)4Dv$6_vRqS2m}<(c74#RP z7rJK>u`9h`{-CFv?1+Z6k`&LB(vJIYXR%Jh%TXUeHt=7HUVe*EOqSY!{DaRZeagbO zY4>5EggdmCM+q21l#L~i3&eQwBeDTmFE0OCJTpodiG3<AVw_|l770b!0oQQ@^SDbm xz)jpEyG#58<yMXm)-ai^DNLWEOEp}^46&F!0<)OI{1FNkk;Q`b&Xvr$`U48S=Z^pY diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ClientException.class deleted file mode 100644 index f735c489f1b44777f8e06fe3545688b048301820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1622 zcmbVL-ESL35dZD@>wI=n$0e!bCeVfei9>q%fKr;Yv~h!U$f;06EulQEovpd}yl3sM zqe_)f{taGv;(-?gC=y60>LY&?V)pEODD6WP>wG&iH~X8J-^~2`-(UX#SVNuRZmc?f z+!vDfLlei5_S;b?r13-fLUC=>plt?9`1QoP{jx3kCX8hcjG=nK54j(4+3}wZqzQZC z!uJ$|rwum)U61z#0}B|&I>PK;u%#9jgCa7>=HVdEkTySrn&DpKYDsM{WH&<@nuiQi z3yt&ac8v;UXCqi_GR!C72g0-z52g0Glrg15HEI9pAc}Y^5(G5)mivp%BF0eikj4Z< zt|zqS9V)H-W+;a3w*Uk|qZ^wjl>WhCj~F&WNgnx6#0x%%Or26l_>R>MS6!htY`&$- zW#lkr(-`-NvkC)on4~pn^_%3cg$jAp6iQP~&x0pK{WlqExBb0ha5t&JLyq$GxYy^B z+!(g5$oc#k29Y*#THcN@e4iUmHm7%(qR7m?N~E?D6;`DYVO=uquQIewjw+s0agzVZ zk>`}gz2tB`$IZA?m6M}e`88*S-Dml&n`O^+N=`LhVJoS!OLDsEtYlvQoOMdsXA@_d zOAytxn=84mf600_(i+3eg>GFQTgn#<H-=4G?hB($ti<vGZ+Eq2>Cx2&^PHp{D1+67 zQ=Z;+3~a+c^RSN3i<rZQc3r+;$ZsnZD}ASHXtk2*;nFmDG@zMG54Y}GBb4Ilpw|-W zJ3HBSSmQR02d5z+ePo;;5fRA4P={pymMh*9G@p;p*Mox4^0vD>yg#~D45SpQ9&xP& z?X9;P4^&%x9ojh4Bgp0u@B$8QQ~GJ!f0XU=lT^hl-Y4eolkDIFOxr3+&R_yLxb$U% zG@njt5Hhtt;QgAoZqhrO7_)dla&hQ@0!g-&v?l~;F9&qmp)1suj!~}7{0Z+jQXO1| zxHWVeLC^(U$9oBEA<5RkL%NrD$aIYaJJe&CB+W+Iq|0{Ms<Y`Ie}c<SaHBDsAu;1T zs4dMLV|p0$EAmOhDdf(=XOlX{h>9W7B;nX%^EH;rvSZBHiy$s;pSe_$OsVL<vHm@| z-2EN*hF&Q=B43XH)~Uid;`1@-4!*<|ozKZWPw*e@Ar;``<oN^(r`lqG8kWe4Pxrty dmT_kf1&yMHuW?;tMI)2E$2D>quEw0k>i;?jd7A(L diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Informational.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Informational.class deleted file mode 100644 index ab8af7092fd5ac457e9405a344f4d7498745a889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2740 zcmbtW-%lGy5dQXjw$B#>hhsNDNJ2|~fC;h5ucm>}kOUGphNRd+m7-QU%!V93-&wb7 zl)O~@6_u*K^{EeiXsbqz`cNSr``ACI>g=5fHjvb6C2MzQZ}yvSW@l#o=ik5o0pKbs z4A=c&v*0(mXEz<``>rU|T!(wI;CRmiTgaeQldXUkO5SrnXxP&6J=;x!F?=~!y<Oh2 zx9x&!dz*zP>s!1gXXnd30xmQi!t5}y%0<)n1fQ!`XXj@b?*3n(By<K-NL#i<mA{k> znGU`c893f1*%=QRZ*jRE*p4R(w&(eDh8z`z6<@BjT$i-^Ho2^HKxHQ;kAkI<Kr#gl zCm3}3!VwHNdyPj|fXQH+_<etaGq6%8gJ>@{F<DAu0G2X%k|Ftm+Z#L}n*$NEmUP_0 zvfU)Ghuu4KN2zxxlpP_D(U=c!#iTeq+BY<~AA}B5rNev2K=o!UjT}Bu&YfmR%sHMT z=NT?c9OYi>z*GKCt}%S|?|R1&o9aM%PZ%cG3?vxN)_v(ZUSVsyLFFQOK&3&2q7q9u zHIc-J45w-@c&+}_4(tXejgn}m6vL%XhVAM(>f7X68sj)`;v-xzkYl*kV_EE%Q}tDo zCow_!)0JTiH+s#?PNdm1@|a3t5|<fnP5dVa<<c2kF%d_Bq1qXSc2OR_&{FxhNI&4u z?UpO=Q=x`!$`6+9pw5Hv{)gKqYQF1IUka<4azi|pNnB+xc%vy_(MB5AF>K-*ZYWY` zO-i?q83y+aE^}#b*wUsN(i+<_>Y7Xq7K!Vj2qng-LhH1(F~jiJ?#_8r8`8|(owt+K zA4--HP4wLwGd05)+TF?P#_o>At{NFVqdj6p?cTLa!itS(MLlB}niZ#2A~Qm(<VaTO z(7u@owTpT&RW$a#PiU68dhuP~zu5amCmm&aL^n=Y>D6om+Wn!=>R%m<>>g+jSk~ST zi9zKV#f()M?)7@(?`-cBNl;lt*E8MZQb<4G(_40}E_{z+^qnWK)TxD^UTt~OY4DP_ z?FeVx<qHSxnjuwjHa+V10rgBhYLf$H$Kxxl#yStGHtDNZz^~cvnjJVwZf~AHjQh4^ zyA1Tv8&IoL-n5UI6~7hK_>!Z5vyt$CueUZAUrJ70KzTIWhF&{D7&DY^ag{*GsHcMh zQz9urvq5u4b@y<lMo5~U(OSc)E}b|Ak%CIw$Mm&8Cn>&&=YK`|r%=62qXGm@VwuKt zq<}v3lhkRB(w<DRBS6_7Nm0WAQ1%!gh9L}-ABS0t9%hj{=5XZL$RRdVj%`4n%<DvA zd@3{c1{bF@muSrYg6ZE-%ul^WIzRdv+5GftjQ;$VtBOgQ9O|RkDaZ2>MB8x!Ye!tI zRGc+sKs`BRG$M2kE3`KdqnN1cP<cx;)&3c}xF}AG1e&BT=W=@d>u(X)?&S0&EzH=> z#2egP$xn?E$y*VtC#0xDOZA1ZRQ!_2lI0xjMiyguN;(=I;d7e5t1K@(HQ!ec=Hu`M zGV_(O{ne5=H8wN$-a|dUAYJc;nJ=3&<1?497jMs)`9%|}L~x6u@ChaG?PrLUFdP2n zaA#kdFX2<%rClsM0~5H1`_GUO=ofe(uqcoaSP~cr$6Pp)cvfIYU|3*KDCLx(ze0HU E4=Z@UZU6uP diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Redirection.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Redirection.class deleted file mode 100644 index 0fa433897dff4974540326682034a326e2511924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2479 zcmbtW%}*Og6#vcoYrPmSh6H0ErGX}3AZrtnrkK+38C(pB0HLa=hs8`_@v>{}j8Su` z_$w;q+EWibv{56X9wNlCe^k}CyN22n5NaiR-n=*Odw%omKmYpUBY+9KWSDT=J>98t z+o+n-aV(*iEtA_)H|^K1A*5R?%bLseb-ru5yev(}j)5_JH@!JkIxvn5-7@Sw{pHR9 z9TsLvw{$mKHH%FF*14!Uw&2s7n}wMI!}I^^D26bDCZr*2V&2*146Mk|y2s^4gDf;W zQcNI<SR4v8hOpc>1;gZR>u6{TB^}%6#x8fsL3_}fnlvqa)u__hi)P7mL-RJIYubB- z28EI-<P{n-erpE(<PNypaShWJx?$T6l|(lq^fgDW)hvtRX;kU*c{&}#BMshzgo>AC zR|IS@x*??m+R*Mb@D4+C+O$nM!_YZgY_Rr1j%+cME=#WnI@(}&L)4Ki6>SXnDvq>F zTR%8DB+N?g+J>bUZLg)mEQ=U=8M@2+yj*!@xW*wTjiRWxiQ(aJ5Udfz4U+oJjBF*) zk9!*W@Cn1?TSD_3(wlFpJcdshS{l&8@Z|Ow3!aAOr;xxPhT^!7&lsK!|0fq-HQjiq zA%bCsxyv_FD3-2j=>mUk)GRqqDD#Jc<E|QRg}eT>_S7xPj%5WyLU^zjD>8;r29+OH z<r@+tFpf?QV|e7Hkk$w@IR<)!eo9%7f6UNvp1>-X#;zd^g0pgX6r!2Myd_EOj?cnl zL-e#OB-+h0ygNO<uPJFoJ3YQ2N!90)Lz<Foqwj#GsL}N4aW<@;9w*s^nhK|sWtLOs zMpLS)Btsb`7fxkp7s+&aXSrBPOZi&4SWeAF&wh$3$@uz%>(0M9`!P&9Uf4`n)siji zU4hf)gG93R?B^&!SlOMR5;o~BZhN2Cj!)_o2=Bplj90l7(sB9tfl;mq$7ble*78wB zGQ>B`J)0(`OXIS4y=F`EkQePEQ<yszpZ#af(4Y)vYJ17F`C9F8hr62w=`f^9PT8=w z4A=Ddx^U>SuZy?X<g}GWbGbq|shepVPR%XzCDU`<6)+2Yr?$8Fz2x+~y^4D3uDAY` zB=Q8O2mwSv${X>tOL>!u_(flu#1hdcHLQbZgs6%*tuKhviBc~S$^MR(UudIXnO093 z=s}UzM4&*ll{l&#orK5B#&>_E!$#xG6~;k6T}}DWH6mSi_$_(xpq?H}Wj<ga`wkCI zFp}+kkCyD%d))o)B8K;bqGU&N&yO<@*wvFH4}K@SBGOI0=)u<{iz~GF?VvZ-jV$fG zdgjPUlxSan_=mTMDAWBBqFU%_<OB58Z130!@<9qKq!osuCj4#%$@Ea540-CNe;k3o zJASh%TsFj_>;#jZv1b_cA%qff3Kp<R^zFv#>?`di+-fWSPk@%)7&zZ8X`=)Afg6o( zJ;g8n_-NUZmLJTIP3ETZT6R&x8l`7YO;4zvr`re>@wxwbhA+;!sUixPCMmw$1{0XU jSKDY8Xcc%aFe?xhm=kF8SK81gEszrE6i@}?0`q?Z`16D# diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestConfig.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestConfig.class deleted file mode 100644 index 1763aca2dbe0a61403fdc6a971b423c7906449ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5445 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 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestMethod.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/RequestMethod.class deleted file mode 100644 index 682c76a806c3f9affc7d84c90e58d08bbd5d0dd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1652 zcmbVNU31$+6g?~1(pphk#|`-?r5_N$PD!1Feo!1j+(d2My0M8I&v^3CQEW9;VoO0Q z=Q%UX@XCMSiASI_lz}PZ$s<3C>D9_G?f@^=X!p)Jx_kHDvv=)3|N89@0IRSWZU^CE zF*tF3=fsPGpeu^)uIKtu(es~&j)=m3JL-pSao7F2?~3TD8@&iRIvB%t^~gDOie1M) zELwiQw^kh|RB64$aN+GpI#LYkBdfu1cf6ns+Ll$d8Wuxp+bVA{=(T#IQrn@5)Ae#= zbDKWYYc}nm*7s=UYgD%HMe9W53r+H0XqKyc7Wv=XA3KM&VaS>Mh*owKdj4UlQfQjU z;gW$grYW1~g(nzh7hIC^neX)6XF*7B$Mc=;!ZJhd-y#0jeT9KlNP|<SONYjAKVKNL z2oqUMWuV|a9aE%TyBqi}!*sqdl1}a5$Zba@6W4LWz%{&2^2x1h&lw*7N9~1i6}>YW zY_sbKQ5wl(sO)HJabr?q3-~D3`D2Eu>TwX!Q5UI`osJVZ)P73uRHggC;wek;KtjY& zB_)rE>X4*Q24|+B%qfPF%^C{N@bhok+~91L=TbRkd2qJO9_U;-|6WtF%8|lV8YvoS z8X66q2B(oZ|3Ne2kgJUL#B7q!(uo_1C<xu9Bd2{V0-r-ONcU+I8ua)CKI7mfcmhfs z855ZVtaBJ9j0BW9CQM8uV2i^vVJ6@a$E1nL1UzQQzICT>9Y@rKn?Z+;_hQxa-JO2# zzzrMDL6?|ZHE28CrW1NG9+DZ`JM^9S=YhengMQd{A9}I({BGZmyq??igh%dW-wz@u z@&aFMtWYIs5|(ew$Atl8sU~Tu9BHW%X{iWlDSv4xbvmHSaZ6H!6s@~}izMMwLf;XJ zpKr4IYbdRj`a8|JyXq_4YrVvMyOol}=c$BPvs-CNe34FwFYT5li483w9@s5i5}SHL zSayp`;vr9nZM&6C)>N{?MNjOPxcZY!M2Rmq6q%ewy%cwozIgM>E4&jsDA=J{qwM3k zM)UQ=1v7D#^yrwyocyk19+zoFomhn`&fr~K8P+``JpkipT>S+f3~=p7xjI8V|KUGA ziu5va%Hprc51=GI>M){;uVmyZcFFFMZ-LHeaUW_0H|6^Ymi|V!Dkx%^Sgh=W3HlfL cbRQD}y1;FLO9Gkz7sv=0BIZqjNr5|W0H0WT`~Uy| diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseExtensionsKt.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseExtensionsKt.class deleted file mode 100644 index 71652625e7c3140ef3d737c263fb03fa1d1a4767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1499 zcmbu8-EI>{6vzLwYkL<bA+{lLoRk!jKoUc;;iCx2y#OJQteSul6eMyrUQd#-*Sprt z*y1v80IvW-f{R{PRWDG)4N_mE4^XaK&Mr>s#HoaY<lUL`-!tbo=fi*g^T!7OH*lMw z5~*D;>WGkcq=}+Hdww8AXgnG2D6Wm_`lhRdw;^;V3blCf!iZ2y+Wul3Fos-{_qZ4E zaMycWZwjAOn_*n)YPb`rHaFzU1BQvETGZMzrgQTsR%Q7)!+b5iK~tEz;xg1855veL zr?j^one}cEROs}A*^_$VL{t|p!)z-ufegK7uT7UWLJ`iZhDK2|>1zjBhN8bG{MHk$ zcw3N1Rrez^EH2efCQunrHsdh6mF2BbjAAT{5uBxzPbT6Z$B^=)hG4LlmaC&E;9M4Y zoM$Kur_GR+dP6j%qH<BV!`u!f7gG#lQr}NH@j$6aF`PT}8c<!#B#xUx^@KX<IH0<i zWysh1m3kx$Z*aq@u2#Ee(<rd`MLAgY#6)aT7g;ObSfn?uGrTz1Kbt++&sw>WtTkn2 zEjK+kkvrI*w$@nLTC?sv{P-r5nNGO}`#GDwq=r7E5<NYnrxQIhq-S#W$M+d0=HFm+ zOBBCmu+kAmn@EY3Cih!93TZ%w2XwVX#ZBE$x-zzD$nz2JJmvL(x-?#sp;+&>>q7Mv z>XXldEv{tj(H9psx}lM6Q4M=iOVW=<=-z*0O6}Z?y2=+1WgNQHKeP4q#DF8N!$OKG z3VN52Muu#UET0N)(K=TyocSH&d3?$>%D-Xa=b5)~p1s4!%xgHQcSza4l9!D&dgo#P ziz!$R^3*8i++`FV6q3>7(w`eNu~an7ku^!{O?s%53=VBdC?3%pefoU4P>Sj7Wu9I8 zCVc6C@M8n`dAj5&`03N|KP33S^X%1k;S0y`GpFG%oQD4~#@m18+2`-V7mwj*hw&C} zQ41`r;wM^b)RK!d441ZHS236T=CN>SU9RE^7OPmo@-~=88CSRAYD{Zf)0ouAXrwiY J8W%KHz5vj1H?IHy diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseType.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ResponseType.class deleted file mode 100644 index 93cb48a774a39821733b5672b41cad8d20bfa6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1580 zcmbVMQEwYX5dL;;-<>bl#xbQyN(u!6*eR)#l$3%)NNU_-Fht4~OI9SR%Xt&dIp0~g z=SaNei66ofk3c1gKp-oR{3yiio{Nlt7oTo-^nIS4o%wFYfBgB&?*O*&DZ|}3IjzM* z5qZNPjpI<({4fwvS_`6+#FJ?<^3zcwYKKA&<4B6fUk`-|#_*`!_s+dq=tZZsW;7b? zv}cG^->oxT{bwK(c?Q!R`M!{nVSA>y3|CswNt_J4G>9WFWSBb?y&w_3!h{;S%4U+p z2_aV`=OURPYlkF=f^?T5SE+U=nbppI`-`T_aPMfwY>b^r#OswQ-P|+@qSJb-+Hp|A zf{g;o4Egk{fC^t+6(sAE$Qy_!aYAn|ph8wR7|Q<+@xShy46MaqoO|I&P}KXC>TESQ zxQh8AI9@U_&rtBgI1&ukD%GiM4vzbzaNWVnc*Vv|+#>Px%?Bq8t^X*!I-{Q3)3F+% zCuMyqjft+)nW+|~yk5hqQuz&rh4xvT(s!<XCQ`5Gr5<%6ADriCFqqm(1dla@f;rOh zjHn(7+8AFrHecd4FO_U=nbzeuY-xP4WtH<~zA?VoU=K`-Uw&)w67O>>M=MXOK+B+I zUVdj-D%2LEyRew$u|5>3OyfkX_dWki#*qcXCb`QF446vzdloDQRtDa)P;^ktz>Wpm zft`U5EzCKX%fJJMmHlBrvoJNx&u970SxVj3h<o%M=i5OfJ|7K^Me^7?4v8tZW8Vuq zUJ@ugA&YKs8hPp;fx&j;QR0h-f%0BH97Sm`5S>5<<h~z8ajIue?rl=;1(ML%TUMn2 zWT^^msQ_&$cWo(clKzJ3H9C<eKL=Mxq$Z(0A@zJ|{RZCc=6<EU{7&u}w!2U9uG`IP z;(k6O-gmnNP1Fk+@qyblG_h-B#GczVHL-7IM8kcGl^^sST+Ji6zPCvYpjyCOyS?%Z zFDM6&hqN1%7<C37(S9p)!8KI?Jtkhnb^W`EMJ&;YkBQ|}OcBetF)1nY0PG*J@)KSi z<L3AJbdehM^}l_%j$@bk+Ru1%44(PqCJ}RJ>Bt}96S4>7`xePvIYO?5s(#mS`#E~M ig>~E^7PTWVi4ANXp(tTWY)LFg7!sCLj4d%IarZ9_sC&%- diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class deleted file mode 100644 index a43232fb4d33396e295eb12519b78e2695bf35c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2066 zcmb7FUr!rH5dZCA?DNGK2T}s$A8kluL-Fw^rKF~5fsoe5m=+_e5f9b*ydh_w@2tBu zB7Nei{T_X&`q(B?5(TM3^sOJGAEfH+`CL$Cia7grcE&TaGryS~|M~a3-vP{Hn_<rN z_H?(!9iwFl*R_4!v@Pxk-Ey9JhA+IfDcT;_%iOaJ+xnh+F))Ty-PkvD+i>>ut!kZ{ zB8EPO;kscqeAnrSHjP$`dkiy0({1X{$QkzznzkM)=`}+bRm-V`9y;ndhPy=>Q=N;d zXIPG}8;;`&Ls%~DORgxjZJV_2^f+tsj4DH4I#Xd7DK=bTTaI4eZ|a5pW?8y2$-&4T z7lmH&>gmj-B2J(m(Kr+gFhrLv#}bbc7(`q{1Sy7ycy9R&3qe+wLYjh9^QH36N@;DK zw#!r*>73zeH>XW53<)D?D$V^qDk_r;ovKs=7LujPum*{0a}3+Zhu1V^RMC{w@u8-u zw2_P&QUCZs89hFnS7zC2OjS;PiYh5(`(~<dT$zn5MZZ1yF+#GWc6>M#QTtQMctnk+ zVkf^uRq1)2(b2fxfqJIJg)dx>&xAG72%J;`*Dx$$nq-*m-4RW<*0#AG7Hs`MaL1Qr z-=OyTP{N$ha35)gY;SuBg?Q28dcD?I(hIa~1|DOW(l9Myxp%%{(28CC8HVW#RL?ef z3_3&7<9n8D@{SXRO8TNc>S*RJ+i!E2*D#9(h6m>d*#W}$7UpL40^QaftI50ReXL<o z!f}rI={3>|be;2#X}4>9GNdsqF=(Z&(swJX<@M4I!{Rx4{=c7G0-qum$3rYLjQL!2 zXH0O{gTrL?8TffPUf}<-us*`)64oyWmmb3<ozW&H{yO|Qz#<!Bkv)YWqhgie_L*s8 zIn)e}Ve5HEcr?i@(~sdX!!7eUHyi5*Esy&$!-`?IdEO6a8^ir{@xS9WcScf{&h~Pd zN&-*trG|BU#W2tXk9*mMV7Rf}b_7*C@9bN?Rkiub=@g}zwC2`074b2r7)(R(8dV^) zsPxbuELsjPwVPG$?HJ^YVW{YuhFvk}UxD~gsFmHeXYwbO%`rzeJwn4r!ML1{G#xgG zlQc$jOb!F0kyIQi;xwj;#0}6ZANE^7HiNZ9t2EPyj^PRt<Wef%B$<37FOmF}D8m-5 zQWK<e_Ao_GW0FfNov764pL&C<@)+fenTD?e<3IsJL4+#a``7pd#VLP#cm(C?8{FNP zdWCy$kvYONu^$~H`x+09ut>}&9p)uIdySQ+Lu+r5e}$wxuoGvNG6Ch32tI=$O@?$J zlnzjqNn|K~1>caqf&wHSTjXVgV7<PJzC1>Q?-<6r+>Jch-6AP&?}GWbgNa?leGL0} T-<O+yA5kBwk1IYBK0f#dVgW1R diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerError.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerError.class deleted file mode 100644 index ba8714325e5392caf34e0a55b0c74ea128058d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2858 zcmbtWTTdHD6#iztwin01+TessF0>dhCS)CwG-;qTKrXm7Bn1~$iu$mafh;z=*3KF! zeW>y)D)qHbedt456{X5Ug?Q|bs(NO3fyF?IQpuW`bM{=m`R2?S|NYOqzW_|(YlbPu z-7=gex6P*IIZi_uwT8uQ&#>%G*A$-Hs(CG!8>`&i<?a*Lb=)Kv!?!clhm~z}*EAZY zy=6RK-{v)MdbV=GaC1$od?LXL7fr_&e5P8Ro}FfR^nU{-p)w?QxDe(RXUImtu6nLz zZ&8xG4|kh;>#k|p!Z2;y@l4MmAjWd5(J<E=oXk>N+*>*f)LR%o9V(3kk{wWRi9z*V zS%Ts2MX87|OS#l_XXEurxFNT+8^ST~e?AE!G)SWxx&+ZfkOl3dB^I0w+B+*Vbdv9C zL>DWJm($4MvUKRD*sr*`!CeC09c-`VSq)>!Y!aqtCp9yt_a8B+Si(EQV%9&^;r9{l zc#`vw@5MtnnM1xKfXeN<GZJ15QW}G}Dk=DwAu(gwmN(0Azi{3TqqSa+WRN_KuQ4<~ z#PbaB6Oq{OA#{9A!yv=;y5lu0+t}XSp=;}L*ESnQ*_Kr<teQxoz;LDZir4BdOxN7u zWKkB&0o@E^QOsc}o!<ZWS{g-6q%e+~40kSgI}dMl^>vdcaf{(nq}mzoUG$Db<4mVf z!tD+im|}QP_@EGSH+kGmA&z?tn^6YB<`7{Z<fQ$)%ayZef6O<{R>NDM7UK6#$6Yer zI(Pl@(2pBtkS2)-639r3D)1pg<}l<E_sk8`GwCuYJG(Jz)=UmMiR-=yDaPn(*GaW; zn=!WkrkGOtl+^y4qe<`bC7o1Kt82lOr{z#e(NcZnqiXwabT*}B)vU6}O3M6PHl-<g zY(VW}CDmWY{dFR%kv=(~l(cN0-Z9WCJ)}j}_bsWVOQqDoPYFd&uk`4l56Lp=fU0%s zT`QyKxqWl+gL-V*t?LvaL~yLm=-HLt0KiH69=-SA=R{5tK^4KO4D%N)igTYKA|7;U zf)k!>a!+`U%O|(ZT3t9c!_{*=Z`D19!IhTnSv$OJ?^?p5S7h$^Wnt)8wYF?(&o1?5 zHE7Y@70c$!t(|r5R^_WBUjV0OHr7nnl5(ibx5quY&?gdfQm3!gsVRkSsa2=t*7#FP z2JR1IterxJ+f;^eDl8RQ`JfR46_OG(Ycyx&`*KQ0Pl*4G`Y3rX(OSW^Bfsmue+C_p zCB96OK@o^t#EX9*{i|>O+&7ZSJYLY44h+zVE|Q`UGRP2&(}8;11C9JgAUa$0QJQu{ z1HVv41;>a+&j`eD14DEJ+ntBoQH-7895D3J(Y7Q*^iKpMVZiSwy*z__znUHU6O+Z? zapx^QDNgJmUA(!6-r}`A3>5p-Jq-VL1Xi+}#4w#x!OwX&h!IjKi4D$EuH-2yGJ|~n z{YH|PuOOXzfNd0C(bt?xu;j4^qnrsUb)Y=%(^~F*m69ZBF683s_dh~o`}nkyi^pjl zXG^(wQZAI);>68s{pwpx2XI%&BaT>F(|nq{2tks9_7DSCF-lT^B1YlmQGAIi&AXIx zhTJ}TiC7u4{_k@<I+W(hn8yNX@%SZ}z!N-uiOT|A0?z~%1rh>ffo^}y`QxBJl5#{K WBajuiAuuG+A?VK&t_buAeDN<bO1f15 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException$Companion.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException$Companion.class deleted file mode 100644 index ae26cf57a4d25cd77069f37a34a72ed22cc8a022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmbtSO>Yx15PkOMt4nCME%b|TD9|Fc+xCEjiV!qyrAR4AZHbV2K+e`Jn{4dJb|Q`u z2Yv`AuAGoKpeRRv6k>Km;lc%wEYG|*^X&1AzkUDm6~HF$Gd$JiEYw}8L^pO?CpL_d zSSlCB>eLA9OfPahBf~>!`qJ#ajbzuwS}j#|rz;eBMKFe-CHf*vggOgfG+Q!qMR*K_ z$FYjt69#X2rBOy61s^#S8FKDTY#Fxe|9kls!^U#Gtz8nUu+{HS)lM2El5j_!ieBQX zT8-bJ&Au>gX|`4xK6qNh%u@6___~ut8P@*pG=`~j!M=3jL^we;@lM~P2D5Yv2sSf_ z6jEDQo2ZiwhU#!I?elr=^I$mec`0=!{NbQ9dhg8-2b+AIZ5K;?^r655elQt$i+nxz zYV__XWhig-v5-%X+GKPW0xL}{l7=*v#`3bZ!!S4Q%xYIU>$H)pEfKY?RtyjSt@A}( zW0?3gd-8XU(Z;T|9Zj{WPb5R79xM60*J(;~B$^2^({&wDVS>sd{F5x#l#-^J2x}$% z1^-a@OeFW>RIqT+Q!ehvMr>nJJX1<Lk$yXi4H{mK`UtW-{ZjPuTZBTg)CS}qd`9V0 z7QRh;8U`x3Lwk9gfC>27Sn{|)Oe%gvmXl4z<v)vO#|dL`nu?2<B$<aLLVk9@b=<%L z?h@v>iF;)Ch_6s?a15`8sccPS<{VwB;WB24#oRHN#XJ^{QLykW7H#TW$(*Y{0Mo1I A<p2Nx diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/ServerException.class deleted file mode 100644 index 0d0ab75568b21c2aa17c06f7fcdcff6d69e089da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1622 zcmbVL-ESL35dZD@>wI=n$0e!bCeVfei9>q%fKr;Yv~h!U$f;06EulQEovpd}yl3sM zEuK*R4PJTTffocQ5=bcO6XK6T%$}VOg+8EI=i8aN+273kX6EmIe*Y7|2I>s=W7YBF zzL2~hnmCTM-;P2djUUQaiff|=Z8K29-xq2q)b6)!(Klf%b6^bBBR=GQ#AU~SF_0$g ziA͌yXJ40Js{6bvk2nCJ+zf610wS`LcHAe)DSJVV-i6KaMBjq4?~#gN?&WoRBV z%q%r7vfDQ*l%1_$xyi7YfFB9dQaqH}=TgR$64j*r=YuHXtw<2i^c(IkH;b4+$wL}b z47r}rns=zQ@_$1y?7jgY2pZkkM4|MLhCO1~2qk&sKNGL`ATo7IA>lh#dt7ye+OqkU zu9lI*j7?+GBhD%e#9@-wwAF8uzZNRwQBx>QHN6a;5%phWsNM8qe=)e*)Zh_E`Fh;z zb4hLtJJ;lV@f?Fln>s6RPZ)m44JVt^8>Vb%`zn#zN>o^tMuc_AbhysYIz6s<PQ^+7 zr^lXCn)H&x^&B_j&Qwm1@8ma}HTIC@cW#$G*C{#GbcL;@$}Y+2s<W1P{X^C%WnWC4 zYc4@l({8ThzWy=m*+?4<bC<exb!;hLFx(n7X|*qmHn9?`N4(wDmZc}x8_Wxma-a;> zm(F<lzhht<{*i}Gd|bo=-nHxU2}6EYsaWZIT|=vtOb?f)$)f?yWO}r9HyWW7&j-Dh zP+!@}w!<2?X*@U$3F%|w;+Tj)4nrN1{Y$QRPtbfmy;u(lLd)Ck?(zQkS}~APsCvY; z7PPnCemqcZ@p)+D%#I<OBfv{IxJ&7$ZU0fW%TH1j^LU$>e@L=}cQ9+KBsqgA<lxem zEz*2CsX@rpeuei_;<`=mY+{_iBa(|F2NX!Mt)x96Kzli$(+*vswsL}UZSFUCKa=X< zD#V?U+Zci_;3nQmU<*mM4j$9JyhElNB-o*zz%*$#$~IlL%T}FFfA>9Hc8Xh#`3#8} z=TU8C?gX==pr4UX8crd19zIJb7O6T$nkF1uY`(@)S$2XsdlAIN-E)^pk|`Da2R6SZ zm;1lq!N@CxC*<o9z$R6=Kzu$W-NC2Wq4Oo#7YY8o1Ed1HpFAI6=}cP=P{RsY@!<iO e#wzX|prBFI@HK8~tZ8JD_oPNn!_`>OSpOGj5PDt! diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Success.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/infrastructure/Success.class deleted file mode 100644 index 7cc9b5cc5355daa9d27d2bf8878f19804c8a28d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2686 zcmbtWOK;mo5dM~WQH*5MjGc$<ByRJP<T#S@Y8pFkoY+a!*iLE*MuDIQTHZLcC{p0A zjOJ4KPqaX<J@wE-TQo?}Lt*6DYyVHtS&B|&MG1r!kjS0k%<MPc&J6kI-@pF>;0o#t zm;GS7<hQwJw;k#Gt|&EJhkLT*c+Ub`$e`1Zoq(5WokoKTkpg4*YQBDJWyjvNORnv0 zmmY8K@P?dQSQ#?ZV%w=63ck)o+xG;Yuh-`m<{0k$-#{tE8RA>Ev>B{-kut<+Cx+BE zmrJ41c)l>mERipeVFpR0($J8hpz^sR7|O%u8qr3Z8A95!BkuWIoPkvtvb1}xM;FT% zsu`FVQ(KJ_y64>9;sNb8+Qrt9j$2x_+Z61<Va<FG_?iqHZ+ouCV8sz~fW<<{_1Q3! z9WFNm+wnxn_B@|JIdmSSHD9iETvvf7tPc<1j2)2G1E|`s8?fPUkTN)i<BEb)49R)N zbL0ZU`Fu}?QN2}r;we@N8w`*0bY6WA1|XT~as2>0g$*6Y7*02R={jC%XSYRNA$j20 zZmH@io`ut(mN?6Byz!hjnosP&ZgH}xiikUgivytdBoiH1VIza{xM1KME;3vlvH=bn zr~abNQz%f)MD@mSeb@@^jX|Y8gG*@?G0Si>|DQsrOwOQWAb~PNeL(ho=R@Z;h~Opu z%<j1I9u;CZg#2LD4w^g&&-rBJ(ePcDW=~kHR0HCXOyMen&RcEyf)p8C$E1O4xS>Ez z8&p;|8O9DaT;<YMQ-Ug7YwgBpCNgy~N!$!YC^1I;+9cIhh2gLLy>o_kLNoUF!keaR zhGy!aXwnmNg#Ocprl(Kr?-k?v{+`LM=vLg)9<s7__o|gNV>#{S{+^}lni<b&<%E@^ zRWdiOjLN!YSfP1YFQ?0?H$Nmb(^x+mIgw~k{A@0+A2BoQ7vAUg<(u!~WUFA2>4-VH zKHlBy@B`Bvd-G$`QmI{`9O-Rvci1C;?+hm@LG92zpV>B-Liz!p-LV@@;d=~I@AbUg zlnm*bv+dEG3}{GBu6I1?w0PCqb%e9&^2L8=6HVgoBpqFGJigXxZStUQlZ_hqe#3S* z?7&fSq&(Lj>uswZ3Yw*X+-OqaL~cgS?*t8g-%)|byTTIR>})T8Eje|+%IIVidgC3C zs8GEnR0Y9O?+_y9bCNXZB-5a$wWX#VX}bCoctpA+*`1_&f-KTdHM>GmiL}Hm62;$; z{h1aTR_UsYfh^YOn&}!~1fwK%LmnZWg`;%s4>Iu+8TAGk84!dahe^WU?|ix+!RP?z zE`q5;Nio%jQ9y^bj}wSfv)0G2kuUy=%db!=&b&mnIQ0?}#o3oQ{mWaFiisp8nIi5~ zy2Y+@lrDvdI94mguBJkV{Kg_OKEh+t9Z^lKs+35kRzE`@LS1&2DPW48oSBFxzWE*r z?e;`GMGGT#Bl#MitQBXbW?$jcE}|!77>Ab5hR2|=r3i^h)W@UUV)%k=G*q!p_it;f zi%*OXRlo5le9sug+VsKdzA-ahnf{>Dkgtm9#b6XyjLO-{rEBF|6{EOpphnPIl>aR% zx4EZ?RWTp_Ze!s<`mBmOSR^g(J_QrFhoz@DDljUrEO1{SDPRgb5I7cIX+ghffwZ8n Q9;5_v0+RxkP+kxJ0o97DTmS$7 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/ApiResponse.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/ApiResponse.class deleted file mode 100644 index 5a17f40b3b3190462914368be00629c352dd9c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3611 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 M#_2kz0ZtG80e)!lZvX%Q diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Category.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Category.class deleted file mode 100644 index 630089b53ed2fe8e5c9966dd698684875ef7b912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3046 zcmb7FTTk3Z6#mA0GiCwrZU}^gBu#)U3&cRuD@mJ#+?MW=6jD+`FENV)hFzQ5UQ}MH zJVojssFc@ARr`>KR%)PXq>3g|ANr%3o@1NE&|HXQ&zv(e=R0S<b7tnBfB*Osz$g|3 zPT9_)X0IBSzG`~5U3Ile)if+mtJw<%Y2&(QEZWX`3PM0#*4K2cs#}ZNjrnDx;-wH1 zkW9i+OFMHV+gcnG=qWMwvf<4;x@ozZZdtacd!|kDWW8F|=c@)SODq~*kr1-^{=FD! zB#>-^1Vte3Et#%BzYn^PfC)Kn={19ZBe2t+WBS3R$m^s(ePEa0a6uZaXk*V=f#f;U zGQAH4dh-z^f0GeCH0+-d&`K4%rrpzB&v3q}RkdZkvf|oSgaB=V^qUTC!|~RcgEhTc zr%+@0{+Tompi@B{hXiiz!(*|uVtZB7(w5h1nrV?wORs8|jeB~%>WvfGo>Q-Qwo}%f z6~h_h09$wGDupAvavN+Vg`*rwyFx4+XX!9YCj=DQ-KuR-k&Hx@Q6juzudWM}_Yw7* z<niRI3d#1kmWabNJMUQt_AT&Te&3Z6$>K}0T8u0SDt~PM8%U!Mr<l6|0ok(yb_F_i zk`N4Cs+-jX!%5+^0*$ku-adSJbK$%UVmqm?(ov<uG8CmaFsF!Kf;g7O8JuO%xA#~! z_VOyrciHkifz;q}K2Q|N2LhsB#<?_xkl|T69P*OxE{)Tr;a71njSINQReXt}HomUw zRXV)w(Wtk5-w`<aq6#ird{$kv;-+ww@O8(y!Z>tiy#OY%_Xcnp*HKh(4HE*H?Nd@V zJbgj;bgCGswics%P;jG?I`6Asm990hLPHB9LZr6t=M||_QY3ZjzCxd*HU(X)BFW99 z(l7J0%)R{df!w)ue^eS4m%6ix98;yPc&8YS`EuNs6Hk9gN@{XKRnx)T^=A)a{+K+` zthNMecx<9iZS9hV2`&QU%OMag624*EL{3#{X=YSbvp#^h{_OkMM3b7M(E}t4lG{m6 zusqei9Tr(Dyrr(VoKoefoVpXDOxvVkMQwiibMhe5L5Cc4UD@7};ZO+&c^g_aJeO`5 zV<^1o1e&)?_w<S<aCoY2d1lQhT5G0j(zSna=P96DBdD6Tl4%)}_1e7Q+~TK!FK)Y{ zS7&s`WIY@_5n{~*NH=wdYLYI!U64I{9lm&3%d|&Vb6H;vv6X4N?o^DcCVM}$+ff7` zBXpSKR3-F0@C!wZ%#p@@iux?S9ec*o$Up`^D4){`jb@2RBnrQw`4<u-d_gS(0Eh4; zwdr61^(~}D;WJPP?EgTyy+B7^10?u%r)uYj$^^)D-&WW}S7G2WnhS%Ek^7Z~qOo=O zkjI0iVQgd+lE4ygUBXvn*CEjs4$|M@(tJZ~#a)_g;YlXTZ|U&S^FlI*GEV3T>btw+ z-#&yaw$NSbPK4sIa$#U_6K@59>9i~ksaf&q<102v^kr~_py&||0o#4|KvO}8q}aqs zHU=&0X(Z$%E!~w6@fz+j=xrn+YV0TB^~UrdP~g1VbJR2O$`eSl{?<5+0YbpD(%@NX z@T`P9Z`VbhY~GafCiJ5aQgmiF=UkQ{=OpHs^9>9Jf$eZkZ%KoLv&20Un12Fob`!(d z(G9%AFdKM3I~K?}>aypl*}zAPwNus{zTgKV3}=?YVYFUGnEe|~8yNoyiQ6&t*b)a6 z9lHC-H|DTTAU>Hw_eJrXj)+K6ND{Tjo)cE6ah5OR3e7P0*QjUiM+yT!VqoAeNDt9B zum!2ieh2CQ9UnhLj$M+L^R-0$QEbO0Ro{^CD>}v4T+tHd{q_zj)UVTMiSkySL#&8N z|GR;k+uA2ZOktWvacd63#iy8=;{(&;;x-){zisu~b{DdXCKpK;s*8+^9v8hX`dplH QaoJz<nTrd)FyvzPKXm_wF#rGn diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order$Status.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order$Status.class deleted file mode 100644 index 9e7cf40b02756187f5641364fe2bf68694e3b023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2115 zcmb7ETXWk)6#iDe$*Su(qRp*=Qfk0<NaUm~&?dBT5(iw=B-n|;gqa}Q+f<1xc_i5b zZ+YW?@WdlfN*Nd!PagSE3}<DNNycHOo{?62E_=>*zH_vH|MUA_0G99-!<^$DYEGNm zM%(lq$MUp>WpdlsT27ObwCy&zo38kV-|=E#43G39qiblEVIOKmyVF|HM~JZeaG4=_ zF+dDqhIzf=w6v#&=X3X)mZcpTjbqQTHN&<Y%5Bp2G0B^b+cJEL5%HcGZO(9Klym8d zI7FvoTZP@dazST^?&yW};)Vb)N*N5=t0mrXiCfqIRzU6=R)-)*+m_MbO$NEJvs2!# zitMt{Zo5ubXyY42y;Lohg*r|xFuU9hyjQ3(w&_1)2xYQWDk5Di=zGNq!@~ZE;MH?I ztoW{J9}>RXL69Tv*ImQ3y>rxi+Lq&Qbu5d#<U{UP`-NP~WQXG<a21nrNVvfe_Me#^ z6}&RQoyiRQmxfiMxa*g=3jM?-`ck%<z#F)wAcD6TCexh8^1wD){J?SPX_~fSrSt!5 zS!7@(f*JIO@a8kw(Fjf8IwnNT*%&6M(GAP7snHkt*{&b)hQFM^dze=+hXv|jka7Dd zL*bILvLiP2-uW2omf?BJmvDPdCH`K*lgE-^?heDae(d-(WZDz%8%@JEsNYhn8=|{{ zi6up1JrE(p5b<_QswNS5&^u8TX-ZP0R7&Zc&?l)#a!fw`j!pGWmSi=oO8MSNo~@0^ zk{V4(Gg3Zu`h8SNh0Eh-l1xWu!g3@PJ)*<(%Jjxhe~2m~%@QLVnCxSmZ*$-C9hc7! zt_m57jHDQZn+mmJBLM|hL{m0pjLAqPFxHnJ%NUoTCNSQYw;0l|^6$s6LqpQP3F$uw zF2;pppJBS(v3;|}tEOkxEnYagvS^lW3~VL4dx<r?PM0jhm~Ps9tJA7;ch{f@465!l z46ACmrjQ59c*Q)l=^l2;AyKkz?gm}vlt!sI9k;<ZO^dHCQq2)+Ph@pkP(YOJk|e$f zdars&l7YAwHl)ZvqzoI>)QlK$3ZshOn;iCNAEob<NCX+L;TlO*lIn=l3amx{gjB1A z{-9M|3#scbQLH`3$CX+*P<;|sOMTU+m0BcF=@IowU$tF%j@(Zah2e8rlQeHhJisk1 z<1SVR<TPfeOp#9`9~ulqa=&2qN7_ii5djXkk1uEybqkoUQ*F2aT@vFm2((K{!ooW@ zH~SK|bMr4SD<BNV%k}*R@kIP|K#JJCjd$pT*a@OSs09(;BvRf*hHwbT69FDT`5C!i zq4h8)aD#mESUmHQ0xw0Ca=+nj4^rPJj4#PkA)AEHP^OOcGlZ~DdI^=F+h5a8Fc9O^ zn>g-K@$c^=RKf?r^C9m4Cp{<;rz@nzNBdwN9^%nHu6W{E^~AK$deg(ShZzrwhcOT1 H9t!^gBIfhd diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Order.class deleted file mode 100644 index 4f0ee8cafa6bb73a1f79b4b0fe21e243db310fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5914 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 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet$Status.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet$Status.class deleted file mode 100644 index 280b4167bab08ed0ed10f22b766c63fa92a5fbe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2093 zcmb7ETXWk)6#iDe$*Su(qRp*=($;|OG?A0GK%2CUb1N>Y6Qaam!c34IHB}-@8Lgaw zx4iK`c;XQ#PzDCZlSh6O!&%8>l5rTC8ELiW?74jBJ4gH1-@p9{U<O|>6g_`e^A0T6 zJg@`LbGX)WY|9O_wzp%Ev}Of)BQS#wPk}K!)c4FoQ*%srS6g;F?K%Cm{bwJ|GGx!X zrx0hD)LUL#dv5Z;^1o_3+Me0k=bo#XuIo`|o3>9$Uh(|48BmM_e_<Y240kT#mp6nH zd8cZXjm`Cn&XBIuD^<O+pf58_T%ZmH?e#LR`9!QAd@V2^nofr>r-?n=F`EwUQ)|n$ zrE2X7?TG&!+udb|8>{*feYofBFvxS%4A%}GF~kbRIvM8c6@7ErV7R??A;jvbz8Qf} zxd_y)FvOk}G=0-{`6<G=R`Y^d$8pF?-nD{yg#JpQ*dHf@%NR~W!ZpGjys$Y#a;}HE zQ0TX>_Nzo`SI;pO`k{05)nYw^w{Sy20yi0k^A?TbwrjSnZO^BNxHO%7`9Dvl8CaEI zhD{;7Q-$J1=*-|MhD6216o#m`Eyr`IpJ&-wZSGmEU^au>m{c%<De7LBZ}mCD<8z8C zUZ|n>PDfaDOwMP|;q{bC{H=thj2Xe&9fm=D-wSBGv}aae?wEl|y_VXCF}fL;SaKvb zLlHuZ5oi0P+9C3`yGN=bjYx`=%PHL>`eYSJPRYmLu#xW3jI730soXs(vxNa!Qj<Ap zOe)8YzfDTH`1;_9B$Mk{Tu$VYd*n>7OmF)5yQCu0%rL@%;Rxg8ffew;^R3C=<sd_m zkrhL5U7<!SWuV}aXvvC<0U5ar1|s>Xj6oS{27{4YW4QVMS5^vZG#=5tM;p2Xr}hJe z(e;iS*lnwBbDMtQ%E<*qGjy$YR&@{0IgKyUb;>ZH+pbmXw40W{5nTeR?zK#(Zu+*6 zd&;z7@49s7`s9+Sx~}Di9kwWqVt5_DWv$qbH9t-DCa5)u`B70m(X~O6_-5$6%#o!7 z;-UW_M+Zbm|ACqt6T?kmRPkGr!6xmK^c@k2Ama^OA*oJM6KPt3h2$TQ8jaZRw5kg+ zb@3IJ8!z$1Xv9O+M{%_psXjIuiBP2{)Mt@u)p&{04-|#rQ(Ch$Ygs(N4b0*$<_P2{ z#;8n@Pa_)|3M5KDVf=gANTG`W2i(VJw2Ha~%r~hvoPjQhQRxNRpd@i&U78qwg<GY` zpD`{V^v5ejcD;Baem*2c?B2n<<RNx~s2Cbygtv*5_fQ}l0`gFZ2T*=Q=@)2SObFZ{ zn=+<PY^2aiQKizaxZ8yk*~IZVSt@iU;S;P=$D#}|Y>{4q5qA4a+6e|y7WF2LdsO`U zTZmQhLHK-#`~ON0s>JCWY4LCijN=g=Z{ZRb&pa2?LhE&oQI0VVg=2tYkfZVsL^$gD diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Pet.class deleted file mode 100644 index e16b319a5abfe1249d3f6da5f77c8a96da207858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6141 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 diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Tag.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/Tag.class deleted file mode 100644 index 7b2a6a300d7119002c713acd069c79884d48a57e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3011 zcmb7FTT>KQ5dO~WZ5S4q-4#KUXb^B&zyUN@G*R)wk_8PA43dk(GQz;_44Ijw;!EO_ zKOt4VrYe;@_>fdZNX4oY(W*S;N5yo{49h@NNY%_a-RJV1?yvjw`TL*W{{S$8C4ny6 zS=Q`z!_wDH&$cVBR<4+a<!M!W$slc3Urs>?sH^&hu2pnvS-ZKoYLvYcVgiy$5Nc_6 zu4G%wqXOL}hFvwhMMpO+SJN%a_H@s*NuH`zD*9r@pk;|=!z&U(Hs7}&BaH--4UnJ+ z#Jv^M-2r{Qtppmk^r}Ia5yTnKF@3vIbl{XfePqv(;es@p(ZYvj1(Fv`%k(}F=*dTr zeE%YPxUp|eKr5B)s&-FzJ;V9BTG3YZ@|tT~5#O~5(r-EBf#cn0_c!!PjZBT@`{vR( zf_4RQ921y5#EHeyn(b9gOIzKjYNkbJT6#shYTVOn6>p4q_MBSTvz<xZSu>nbHn4eb zm{K^gC#-=hDZIg^v?|2HDVC12)Fq&hck8xAsWBW?Mu_mTy?$R{{18_6`FU|*2v5H* zeQb|2i0Di6x!p^F%L3o#4+9>F-78{Qj4TOKee_Ufr_qZuOjf^u?AZaG0&Tmj2SZnC zW@X86QaGzX<8Y_wj^)jzi!zAWq`pp<k?zD`l+Iu$+3^an(KOECJmbB!Z)e?u*X?|V zcfL!O44mT2LzcWRAo^rnNMjHgo~4T*ujuZ|7?lM-V~c5A!e!3bD`d6tRZXwZ9c_(T zy>s>*fj3^3twoFPrE8Ym6s{A#?ikk?N8rp$U?RTPfzudAQNayN2xN9{#H8WrOS-31 zib&Os7*#sKjY{gGuYy&oUSf@gmWG8$Z9m8>QoE!`>h=SLK1po|x@JX^8%d>K=4qLG z`PoCcefz<PG$gKcW)(T6N*(cbF%<LVxGyK3eV>%n<b<lGgSqkN4`cqAJkh8&1#5V0 zqE~J1kcJ2@0_4jf5G@k^#+Heks?yTTh^%IP05SgjyVyj7nxoMpBny&TNlvgl-MV8I z?N->Oj<}ps<>{QdYobhU(y*d7KKm(ol<A-g4Ju8xw_-Syy+Pat*A365YGMqARgFSU zS$lTP6F5FyvplnE6s--@HL0*)-Yxc29D;;tDVdfrRjV!<&MX&yuFrN^ugvL=$$B{0 z6=KZ=NVjx{(vfQ09?0(f2fln+(~L(Icv4>vv6UIS=9G==CZB$6??DlK4AT{kQ-aVd zz;6(du|OL4DeANQMC=<&BLf-yZhS^7G@2z2ktqC%#-B-$@Hw>%035>?)TV<4)Hjh9 zh0j1Gu>S((_5+<b07!5Vr$lFqCJB&JzNN5*jza$vG!_P)AomLmMQv;IAx{NML)&Om zNCHdjx`Z!jUz<cO9Hqa_rTMzpjJq`1#FI>x-_pIKSA=9XWsJ}h)OU8qzj*{%Y@@T( znFz&`lZF0)ExZ{Rrqi-Gq(;T3j|*#(=*!>)LD5?o0=D|c0}TZsl41*|c{6BPcRe7d zY3ZJThy%FGpr;;$=w?3%2XCflfDC7EFHq0KD^DTK`>t^q1B8HQrOvZb=UEAP-pPwR z?fJi)H=qxNkfL*YIp?$tIVUm4oNr<vFl?7|dPeFToG0#?!2DBa^II6oj%?y>hS|h> z+0j7GQJ1|)%_cr%tlhL`^98>Zp*izp4x{xj!u(%o*u>b6NZgL8Cs){@=+NEA{$@6- z3-PHGIxmYCbVWppOp>TQ`GT-QjiY=O*Jy^hzd=27KV0bl0sZ}dLVASW{%uH;eC`1K zzu}`t$nlY+<$Ns>e;nIAlCp15_!*sIY|dy2i++0tW$N$KXo=!Bxqw&^Q~q}ow|2CT zi<rg?jbe5I!o??;Ti^@R<l;768^3M#+g2B{iv|}-7pjYli*6S^E_z*@adFjO^QntV JzA)%w{$D2HcOU=& diff --git a/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/User.class b/samples/client/petstore/kotlin-jackson/build/classes/kotlin/main/org/openapitools/client/models/User.class deleted file mode 100644 index de1773c74acdb8154608a8aef5a42d940df41e0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6313 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 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/build-history.bin b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/build-history.bin deleted file mode 100644 index 2fefee2a909c5937611ec59451723ae99ccbb216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 ccmZ4UmVvcgk^ur385kG~<Zd!lK=}*|09OA55C8xG diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab deleted file mode 100644 index 370fbecceee5b601915d627182b12434cac64a06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH@KTCp96vm(am}M#oZZ3jDQ&ejWO>KPuzlNJSxv5{k#nCU&(jYEEjnNW?4lflE zG)Uwk!5jTLFZP0yyKoNN`<#28b1&!qdY8kjEDF&UM{bdnHl(JdSVWcO9<vm!I3n-h z|FB$-{Z)Ez?~knE^cSjj`T7USo6=DTkEX#lbhf0{94gyV{tJo;sqqPSrpHrg??{;s zI7>={cbj)tI(&m0)9x$O_oVa-oTsFVXPBAZ25_}6^(RnEONlX@WTe^?gr?!c;@_)g ech3np0Vm)DoPZN>0#3jQH~}Z%1f0M+5cmT(yi<q( diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream deleted file mode 100644 index 684a2e6b68c9080ec9339d38f8a2249442fbde99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH}&q~BV490z-b)KQFd+;DDuHrdPv)ysq$(YHC>r?p$K@b!~5idTIY3+)xS1$p3 zYD+u(@+DuAM|YT!vzsBGVF}DZ{EVX8W2zXM1|;ay5%D}H@R;40Ay(+d3FCwo?9q|l zLJETlBQglF%h04+zx8#%C@!I7eT{BTQinJ=0YA@rYG&^m2(f?fh^y6MLR5eKAL5iD z3opDZ^ppv5fI3_tZ_ee?0DnUzYBUE>De#pY;I=Z15NrKqw}(=spu{%@H13Eett~#8 z-wiOY8BxJ^epquKbE240Q}ARjoP9i9V3u8!8I>A>q1K|6ufX^AG#@b&XJx-Oz}{K5 zZHk|ceKvsn+p)#5PEzpgSZ{T=>(e2{X=o?vt${rBE5Hy0E8?Y6zZjritDdc;V8IN_ zqJ$)7c7r0NI{0ppRox%#>8|Z&*lp5^|7s6^wH1uc1!L~}&Ygicdef@>s}M8+ZwA2E deEZD++gM|zO~}f~?Nc!3vTHXR|JNTY@Bx`AznuU8 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len deleted file mode 100644 index b92ca80caa0659b9a68734e5c7672abddf481663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00F*r007bey#N3J diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len deleted file mode 100644 index 8fe89d82d540f0f9c8b866f249f77e7623cde7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00Bk?001fgA^-pY diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at deleted file mode 100644 index 4fa36e1334df1f2ec8e7b6dca4eca0953e92cdb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11858 zcmds7%T5$Q6s^SA$+%+cjzw>wqkk|NArLbTVNjN)=)Tia(o<DdRTJ>fT=)o}1W^e= zjR^_y6HMH>Fy85xlScO3T1+yJN==<U_jT^Ah^+umz|5~htV}Y$tjzox7%Qv;=~lQM z_ql$;vmAy_8J@yfz&=KgEiQ@1V0Iwk#t0XWm5kPmN)4Y(xD)tkQ<-h6c?>oh7%o$Y z1{&m0<tBzm;ajf7LJATL$DJd~CpyEmaVGGOBMr{t*AQ(hmkGJ>jK|v+ciqZGmf#|8 zEiNv9j3!*jNSU<W)+v=WI|(^5+&YuTF30_bU<A*^3owhtE(bRfOn+&kyRiCbxrSdq zj`}$)mdKw@RFY?~AFx+962^6$;IRQ2+Tf`_Bpd|nHANDpzU&VRryXJ}U=*~`8n~_& zB?~8{jA-Wg;pP}5W(zH3YW=aO^A3AUkCJJ&hQ_8o(FNeCRsFilK9eG)RYt9Y)k<2} z*waw@`Y~lV!#u`9wTfD&l##5;kuqfo&a;vkTHb%f&=O%Fo=OT2(DVv*vt*2_YA({; zpqAPJGlS-Wvgcs7MCX~&igk?hr<VB=Fw((o9iHc4T_4<7CH~NI)S;>0QMQyM9Fp?; zs{4Sa4~LGs+#|8_V~(AX;-Z!9tNgedgZ`KCNoSQ7qOhkXn#-n|A<b5m|2<->g{aMz z56$AU4tql?L=-KiX_vBTXV4lz%%0!VZpQH)c23HsT4@I@tGk6WB3|fB`>-l&etLx| zOkl+G%=PglijiJVNz`u+OnA?qV%igpgWQaSN8_=hfbElVr%EOCxPw%gJ%1eJ@D}r- zj`?$&y`*7KU9B?_7q=qn%;Ez9mvihp4FclwPRZ4zUy8H;6lJuAu-5@AW7bzcNNNe^ zOV3b+rICjB{Yf+z0sBUorMmyWw2OD)EVgVKVc<jf{t&Qtq}ZtnGSq4{G5)y9?+$HO znJIA|Kn5um%~e;Oc${u3w+2=?1UHazb?d>0NN_@}BUnX(fx(N*Wej*vF_IPM_ihCB E7d8J4W&i*H diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i deleted file mode 100644 index dd1f4b65dd53913193b6ec9d909a4f4977a35db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI%u`7ge9LMnog-mpm#Udt)46<0vN)p{An@u4ji@L>VFv!9r${<NbF`QV8Hj=@j zWO9S}mVZHy-?`T<w>_Wt_q9BAmvv@MnGXR11PBlyK!5-N0t5&UAV7dX%?WHqaba+B zD)sQY2pk+O45Z$v??+%gzWQe?BRmKYAV7cs0RjXFq$qG7QOzs+Hz~GhB0zuu0RjXF z)RRDKLzYdywT;))&2A+?fB*pk^&+qlhn`Iq7wYBSRPOwUkdvOip;UTw5FkK+009C7 z2oNAZfIz+i-SNBoSh=*E@2WKd`3k(nTw!AAGv8Hf1PBlyK!5-N0t5&UAV7csf&2va zV(RqasX4zzOMfYF5#vWQ2VZ~LV4DB|0t5&U_+5eRc-;Hq*3R!f)zgv{i2vy?S9j-< z?Gr|T0D*rla1i%Z*NTm)pV=Poi|XD>IrUC`wJGoz+3T0LtF>9Lng9U;1PBlyP<sOB zk=!wSHJ@tvafG#uA68QB(?x&)0Rm|YTu0u?bMI@~mFfr($W!1Y#!6j7-Fa@>BJke@ Fz5zm>FuVW& diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab deleted file mode 100644 index 9a71d23556cac4de8c63cc41ad133aea73b83225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuKTASU7{~F)(k(1-2$G;7XzB&D1Pv}$L!-1tw1k6eLqm&;bKnvUO@cHvL@%Kr zq9LTQrOe9I?2mr^9qfWrYs>S%y`OXMxm-Bk^4fXQG_&Cr&D3zQ6EoY_5>0qB`i-_M zT+xKRrQe6q_tE}eUg`hy`d~(8<yIf^vf6_q+4zB)T$Gdg`Q|q)%i<Rl<k=^j$cHZ6 z$&{QJGh6w9b(!x#Q69J9Qr@;8K5jNGGcxxMd$Qbw3wi$r&9E;Q;$|DKkdvhsIFL6D zsK~UumfO$Jlc#l<OPKYabPl;Hcje*Zu%C|L;|08c7w`gJzzcW*FW?2dfEVxrUf^E} F3;-}Ic$okI diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream deleted file mode 100644 index 723285bfc4100520516f229f8ff471d36fcb5703..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH{O-lnY5QhCNRuL6~UwF`qvU>0!m2Uk3A^Ua>Y%_6^73;4zU0W)JcBhE9>}}zF zCX*+_42Ww*9!`53iJG8HW8tDo|3SSV-g|qvHB&}nq}0LI)N25z(AlPtbraSha%*DC zP$^n;ecbE{sDh?mJ4^0Th>j3Exq$J^LkXF(H3lJE3FA+0LOj(mb)}mNAv8i|8D<Vi zksoJ|%*0Zp1b=`#<WAUFdYp8jU(dBPcq=a88*4fp4`@*9h*122RVCuk8C(l%EHr%@ z__<x_z1OhSq)E?RxZd^LHEeaRbo@qmZxLcaZer^lp=ZQ5s?LRGQ>#`t_6vNniI`G_ zv}V!}Eyw1lCt9TWsEKDAH_W2skSp+MPq8kf%BW)-_It8v{T=s5gvG|X9`qEOFUh_9 XWdqqjHjoWu1KB_}kPT!5|7YMErB5)* diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len deleted file mode 100644 index 55d7e48d140bf665ee6f630c52b8eb4041d3a716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00GvC005%^mjD0& diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len deleted file mode 100644 index fa432244558c364281f5897ea3a81444683a68a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00G7f0043TY5)KL diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at deleted file mode 100644 index 173b53e8670138e83cdc4aae3e46b49d98a620ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5659 zcmeHLOHRWu5Vh2c^a9{BpaOygYSr>tkDMVjO+04oAi=5l3j_iLD_Fpln3NXrS+PLi zD!asTChyIA{>*5#f{-D%`)G)>_A+t1ha7B(=;8{5;Trf&C@LI8V#x7W9qElAGxQL7 z4>Mr4(G1Dy9#hUxmJqGHZ4r-x2ZKR(8C;IK>(LFUVuPCG5xkwt(IJBb)&WXi$Xruc z`LFgEgAAh{Q7o*R+W|8Q5;d^VC0I8Z*TnfWSR^Xmzn9=a_b@JaJ3or2>LeA+b(ZlB z^@%!81$AwRH_*50CIQgaZ8L<(m5G&@OrUqhz7ww`PvE7co|BYd^^+)l44zy-k)&bt zN4x0vWzuN$-%h$lqyK*!`GH1HE%lh<?(GX}#uvXuEHH<NK{oE0B6F>-(i3KhnYfms zK|ie%ey`~Gvdm{B_YW;~pPupixLaX}9dg??7yl>CVh!VvGGTGoQn%@8F+jFZ*aKvt zaH%d5U{F$q(oK-U@IxJPuFled-jOpnC*GHor_o55q`b@0jY<{tkvdGrA<`a`JU5Vk WsRcRl^E%YWPa0j*3FNw<63nkn{G^@$ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i deleted file mode 100644 index a17670a8ff12ba23078adc25157efdd57ee3f00c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)Pbh<N9LMp8Nt`$c2`SQ|<X=(_hE^*nN5_>vIf+t)LJq@)16nO{KvR-Z^5>#V z?cm_(X36B}KrOZS%E>|7>gjp*+wZ;0+Ouch@Avb1+S70A=`kt{hrt5@1Q0*~0R$`+ zsLC>omV@SMOPkUR0R+-oU|psQIih`OJtV^+fPm5h1G4_`x|_U8htP2NMmcV=r|o0i zqB|vbm%lYvx7_4K00DgjTymZ}>O36MCoxG8K)`MRkDPa+ZTudv`#8`a0R;3Bc$26% z<>MiJ5|b1G1Q0*~0R#~E6*!Tn>?@xi4+Id%9D%SznVWVmr+cCY88CkNSeEW{G9Lm~ z2)s&@$<>t$D|*qx0s;Adzt<D_u%HtyOb}?7<F#>mR%${iN+5s$0thG|upl#zxWaV` zjLL`zAb>zh0{ybC?O3ZhPw7MKjKDtvyRyC8=NbIxZ8j$<P$=Ka@y~be36i82yCHx8 z0tg_000Id7708qIWPW_3<nLBqAz-dRP|D2(wtCF1N;L!!KmY**5I_I{1k@6U$hh-M zcMWPy&9n$0fB*srAb<b@2q1s}0+}ihlVFR1ov}>KM=omx{L(J8IpwsrE8SET__+|h z_+`Sa>ioLR{c|IUy_v6P-Exx`0Xqe*rFnhrLcX0dn9<uS*QMQ7#`evqMGXWHK)_6a idnuL^933{ZCbbYi009IN3zW+Gu)s50lz30I_xJ`f%|!74 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab deleted file mode 100644 index 9589163320257bc1d47408228b45b4e867b56db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2pB;G3<y9N9YCr9i2nltNCa68h>gxS1t|goWO0ZHe)1gDeEh0LWk*9` nGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n$PEDi_PYwp diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream deleted file mode 100644 index c0e36ab9e46a26422cb0b690807dfcf4585bf523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIu(FwpH3;@w?l&(-ZiAXE~F%skcg>F%}`@O$+dOYG&N12xHeM#-6BgICGvNCqf f9V*wf`x^%#fB*srAb<b@2q1s}0tg_0z~2O3?~@Zt diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len deleted file mode 100644 index 1c209ae2a7dc1bbbb98f55f92e253f91b6f5ef9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz00Tn+0673M diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len deleted file mode 100644 index 2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}$y0FVHQ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at deleted file mode 100644 index 6d1a52af89c80c3b024e27d324c4b5b12227966f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmaJ-+e*Vg5Iql~4=O7DK>UEvZxFQ<p&;Jyb=ZtHvTed<gVlfaUpzCUASG=EmYvMG z%}y{=sWcUj8k$rU(<T)Un!38ny2>-@7ISG|CHDH1n<O9ldjx)V9O4>*rD%~4wtuic zC7?&f0u2&s{6N^%>{bTfGv@RdHwGj@{d~qZebk62TcZ-gkh2R+-EE0mcN5GhP|;O3 zD3iFvlF_2aX*o)~P4GTYOA;)qIC3NSLR7>Z(}Z!+D-v2(q+4(S-<85^l=$*0|C#hI mXzK+USDw?J<sO}{KAQY|r^)9)vj=+PesMhI*-nAAk^TUwfn{6( diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i deleted file mode 100644 index 28d0f1a654db9847fbf5e5eaf1f509e47abf970f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuQ4s(T6h*;nRFgp-*(gQ`UvKs_IGdIp5g<T-009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009Ce1=hP7bDxrPrU(!q bK!5-N0t5&UAV7cs0RjXF5FkK+z-NIArmzB} diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab deleted file mode 100644 index 9589163320257bc1d47408228b45b4e867b56db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2pB;G3<y9N9YCr9i2nltNCa68h>gxS1t|goWO0ZHe)1gDeEh0LWk*9` nGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n$PEDi_PYwp diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream deleted file mode 100644 index c0e36ab9e46a26422cb0b690807dfcf4585bf523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIu(FwpH3;@w?l&(-ZiAXE~F%skcg>F%}`@O$+dOYG&N12xHeM#-6BgICGvNCqf f9V*wf`x^%#fB*srAb<b@2q1s}0tg_0z~2O3?~@Zt diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream.len deleted file mode 100644 index 1c209ae2a7dc1bbbb98f55f92e253f91b6f5ef9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz00Tn+0673M diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.len deleted file mode 100644 index 2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D}$y0FVHQ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at deleted file mode 100644 index 74a070ef89ad30d93bad186294bed88cd83f8b8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmb_aze~eF6#m4?LD0=H;G$E&jyFgZN<>9z!NtXE^K7Fb7cUn<-CP~}ANUveXNkL; zpx>QBtv1rZ9G82Sd++;kFEJ9)so1D117p*uV{CLRw#q6eg-dibI@INf&THv8WA#v8 zmcVC`Gl7MmLJ5O{t6+ywiW_X;fYBvJa2zFCh|z7xRm{DB#x-Y*obLidMm<(qWMQYU z*^qUFKC1--W~;~c>H698c#Yb|LE9DT!0Nsf*??@QNQkSsW~?(DIrYax$@#^fIqp37 zIdL@4yp}q!)B*X^&jf#$7(P2ALzAN^t-+BYmiPKUirT@?-XE%e_CP&sy)O3`-tT#1 go#1QY=zA|`^=I16ygi)tSN!Hw``fEeZ!34VA8|&E;Q#;t diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i deleted file mode 100644 index 28d0f1a654db9847fbf5e5eaf1f509e47abf970f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuQ4s(T6h*;nRFgp-*(gQ`UvKs_IGdIp5g<T-009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009Ce1=hP7bDxrPrU(!q bK!5-N0t5&UAV7cs0RjXF5FkK+z-NIArmzB} diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab deleted file mode 100644 index 3927e9fc2c2f68f79172771d97ecdd2ac9fb8773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIvzbnLX9LMqZaY$EEHU@P{S)|)!V^J;!BNl_jl|^O}1EcW<U9n1rOUXZQgLG0R zi(lu*ap&jx`Skk6)lJI&e%JT=_<p~iPv5>hzsdMcgK64>Q+XPHE;d7Ev${kRJgMBH zB@2%71ZxAoH<i!J>wmeY_qS?8v+R=-Uoa=vKVeH2Kj29A$cSFP@D5#a{|&}vi%iPl zS18Km5=5)aGA}SD>t#yzKf|G%d4h1Y+1ev?%j^Rrq{&s;c@J4RT7;&s*-`<9<nA4; z$igjTWK2eC%%=0uE7LbHFH6_3En_k-6IaktYnHl%5qX@0McF1d<m3e$$n?1a$dHWI tnGK#nTqaLpO6E>}{)4{M#|wA?FW?2dfEVxrUcd`@0WaVMyuiN-d;^2?o38)> diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream deleted file mode 100644 index 3e846733e62108a00ec1617239cf84d000f4a455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH|O-sW-5QhCF9&|-iuvSGx5iHSzl%h0#oY!QUE~LBb>_n=+-ffy{o3eH+cuOFs zyzflrnVH>9gIUX1(9$Y0CU>olwYf?pDWkizz4STB6=-UCxobTDb*#DyX_OwIbc97h z1%eN(qS7p0hM;@WTBS306mrjHSTOATYKX}o_)Nzv)k0wLtL4c7`nYY5Xd&!*$gzy4 z^Xh5IWP;vx>1kb~NMRt0oO=FM&oVC{GWs2m07W~<d-->!-MZlaM%CWPjI7kYh-iJQ zn9i9vK4He_gR>qRJbqX>WP0KvNx->Nru<G1435gpka=*xY8?BJDulA9T+0;WEuulL zB?j~jE-ly0YWy(!g60-<M(~my;QOGsfgCbP;P@S1_KFzjUMFzI%wJ&|CtxQV!>zk! z6W`Oy&0DelYu=jeCogyW`tVkOBfrZ7mHpAw0~(r?+u7M9+>Qyfo1R9&gReI4zDy-^ z^$EBi>f^|yP+l}@mS}f{H1e~R8T<$y(N)NMOaTv81S>@%CP{_cTA}qf+}>&lGuWfd eg7;}vz~q+MXr6{ZL!cqh5NHTA1R4VWN#G0A+xd?G diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len deleted file mode 100644 index 167eee53012f56c4480c8c5d9c0ead1d76efc0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00H*N005}~n*aa+ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len deleted file mode 100644 index b67c22714fc81ab1e8e714908a8527742ca907c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00G7g006oGvH$=8 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at deleted file mode 100644 index 7af9d581310d2bbff463ff0aa13722a403b8cd87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7371 zcmeHM&2G~`5MIeIk{4+A8KSgRIaG-fe$LbN)Y-<~U1rw^c&h#)5Qw4{ROq3+663^; zC^>N`bRyqu%U*x;eKWH&vs&#U<Vd|S8c%s|$5U^F6m3lC(k{g59)#ym);LL?puiJ# zte-`GLr;-jVGcw#nW=YrM7|)XDoB>^UU-_t00yHT61W2OFrb_Gnha{smk{hmfes0H zVI83gCBJJ*%m38@Q{=~}XFiqIZ5)D`MP4<M(G^(NKG&X#yTy|C<?{P}2&FZ1B%8A& z12Yp6^$1fxSjK#zJ`3R4x&wlks5Yr)wHW$fE}&4-&(x^^(&vuSgd;9oMJDP~bs~l9 zCf_Zn776-WroIZGdNr5y_c^tIY4(%I8D(AU5TDvR1O7=7vl<Y~&Gl!dZbgRllY0fj z7-QhrMh@=IqW@GXuX<Uh(PL|8I*lHG%lQ`?-DK*A#O%H7skgAi0unY=*;*O%Nqv+j z%r=pyMv4yo-7x6kCQE;W`I>Nlm8na4jz7kiHO4gX?!Xr8|Dvtf!!-3dTk$<p*Alf@ zl=9oJd2k%tj{QrfF65aqL9$TVw@9qU2lZZn1(nZ{r{6rJ`mLpUr_SX-A8<KQczVN> u%NVk?ln;qdPo#oAR!4F?gpWp;=MM4%9htTM{1lp<RK|%}3%ThH8S^i8(m_lB diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i deleted file mode 100644 index 73211a26fa6b9a6059b875d4dea673d4d6ae31b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)Pe>GD7{~FE5Uh(LB1;%{Q9P=rEkcV5yeSH5UF?vul!bK?WkF;Qdx-K6h#~$# zN|p*Tx<nw<X0akg#|WZDN{S%1L(##opTr(DnVolMmiOyr7-rtz^E{t%cXk%hsdWxG z27aC?v$g+0+CVgs2q2IZC~}<pud4oJciAF<00IagfB*srAb<b@2q1ufy#g2XJwea; z)erUxFgXGUAb<b@2n0o7WT%n#Umt_g4}Bnj!0rMk^&GLD2#@c6#=j#8ZRQWh%KvvB z#}PmP0R#|mBe0<RQMz*cjhnTsK>z`N1fHnu_Nj+2{i#k>1oA5o(S7Ri&*mTbtx7cn z5U@d@Uhglbqp2PnX5DMXF*)>>@I0`W5y$KinAYo|VWoPrP$$l)@zI%heWCVG--Ru( zp!PrYzrSO8iZ;DYGeh4-P1hkG0TTjs`u%M>w%KhWn@sltCAuzKp^ahp39R%&phefA zqkW*%i>zESzG(5*p_?yq$zUx42q1s}0znr@=)QY4I$`90+ys4goBKPe>%M)xYRYDV zAkH4rb%_q&o(*De^n?Hc2q1s}0tg_000IagfPifR(;E25a@|GS=JtEuu)ZHz&kXft z`-p3Q@paSF>^|FI3#8QE+U2{UV0TG(2q1s}0$vNG75M1;WZ3Imw|OJ_{7_L7x$1Vk z>2<$VV5%>&YP!yT^ULHFYbidr-}5;S0R+qoyj6)aok{*~(LA*$72YZ3#)-KuPr?X6 z009ILKmY**JQP?~R%|VK(8EZgauDd&^Y^XPwaFYJSc-tP0%MxI`O3XUYXJ-mKA`ud o=U*=^8Hy(s0R#}RP9Uy{my*X<{2qKz@9%>}pEvyOBj5G^0@Pb#rT_o{ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab deleted file mode 100644 index 9d08a3624d7371fad9176044c5e824a3f553dd31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2$(?x3<y9NGk{bB5dQ}PkO;CGMj#)AVE`n@3gsY+!{qVN=YZzR0~MSG z(h)%V1k^r!dPe0&Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz5qb0RS9G B614yT diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream deleted file mode 100644 index 79ca656ddad761cb07271da9792351f272af7fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuF$%*l429vGq*w47=#(Lox8A@pN)Q-HSPJy`b?KNTL&vA>A^zoiXg`t~Nih!9 z=4ml&TuZP@j`{MgjY%T0?7evOv&PwJM7(Tcmip~H$Ma_RBDWFH`VJERwG$2k5P$## VAOHafKmY;|fB*y_0D->>d;kTPI?ez9 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len deleted file mode 100644 index 9a568e9309b6c9894e7c66f76936239e410ea0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D~z20Gt4o diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.len deleted file mode 100644 index a9f80ae0249093f1db8b14f71053acce35747e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D~C-0H6Sw diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab.values.at deleted file mode 100644 index 33c7d6ca799638d1815cc94c15997eb434b7d667..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> IWMG6K07@GY3IG5A diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i deleted file mode 100644 index 94e43615882bac166535bc748a7451df99d21b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIup$&jA5CzanIv@!W!vYL}L^23tum*uCswuXbR=soo#Q({Q6e$|qRyv2}cp6lz zBtU=w0RjXF5FkK+009C72oNAZpc2?io~QGw-XZ}41PBlyK%l$8`Yn$6?mldg009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ Hzz+g1{dfpx diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/package-parts.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab deleted file mode 100644 index 25bef240969e4b5e4f87a124dfd74a3c4f5b4270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuze@sf7{~F)ehooUL*N#H?nV6pL7M~ytql#9<PiM_wFFIuOG`C0^dCfvk<gGs zWKcSk^h<~cu^|W~q<5dg4xHNBo(Jw;clZ5r$GvxF^Mj@t3r^t-wJ)|JW*fRh6FlkM zqa_QDaDuhP-<!_o;rd^e^!`z8$jTX+X~Bv-`+}^TYeG?Oe?n8vf54<Z5`TxZoNB<1 zjMd>nM&ICDuD-%Vms#osQnFQpLs@--XPJA1c(>W`JuJw2753%0EX)2o80j%f-a<ld zR$yK3l_4(=ZlEC(*AVSBTfTy6IdBO}GE;<{OrFD$tQ6ou7EU43XSQ~t@5|b8yRUxD d#|wA?FW?2dfEVxrUcd`@0WaVMyuiN{_yH(Kg%SV& diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream deleted file mode 100644 index 0e8863faf00b2ccf1c41df2d4857daf142d3d20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH{O;5r=5QhB){sa$-F=|5niZObTR1St148^lq+o5h;cGuad0e`(qDPl0CLp+%* zx6=2Wk7uT{V=#}51ud*3W0Z?J)+(6_l1BGv@7L>8NzfE|xr-iwI#%wl)g)vPysEWU z_2dA(=&DX6^$3L{EK({Ee2ud6;vYpiE7SGpgl~+?2Cg?Xv|=;1Li=>*OzQxg^~J$( zYN5^aBt@Ena~Dkcy&f4Hm$MS;jA<G`CJ{<<T+5tU7ttWsk^p`HmX=#)VScK<p&xTz z5WHar_+H&RP>>4(7yrTAN`U%0g-d3P3ezM7JKIZc-z&D|rg8IDtT)ZOVq50ruHOLO z3vd)0J(Br`rU#%`lW`}z*o5wcK)d-jf6APSZ&L~-KLL;G9AlF~dHUoc(LsYW_PdoE zoYtPTDr6rsz~hEsrKpvVpu+7oX#LGSY?d&C4Mkpi;j0E_mwCJWW=Ki>?EfniY=vJS U5C{YUfj}S-2m}Iwz`rH%1#KL0fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len deleted file mode 100644 index b1c61efb430c2edd7858c26c389d6ead81b91298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00A}=002k;I{*Lx diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len deleted file mode 100644 index b797c4d2ee86fd517925c6dfd186e4c359366499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00G7h005EziU0rr diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at deleted file mode 100644 index 5ac90143bf1f50fa9817523e2b42678109ec2d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18862 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 Z4gdDLUTIk8P?kQ%o1b**3AGqm{69Q^dM^L~ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i deleted file mode 100644 index e719f2bcbded3afd9ee105cf8373375506bee257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)ODIH99LMn^DQs9s777bx$qosHvLniC!-ghFSc#@2i&@CCL?TI2ER>CuVn`!- z?WAN9BAc=BSd929Hd9PpbKJvxXEWW$`ThUrGtIeorfF1~ic}gNGm=@>vgFkeO(X&c zd<Y!L^WskO3m^y}fB*srAb<b@2q1s}0tg_0KxTwe^>y24NFaa!0tg_000MRk^t?Av z@px``AJj(xf#3r1@;PE}A$vIZnVf+D0tg_0fIfjXxgL2FhY$2sAQ=G!5I_I{>jK$w zomzP)xVN6bNCXf-;0pm+Uy7Wb`Y(=#&F%(qXpH9bK-j$CO!Qj;hrA!M)>E#(J;~sM z8`4|vq$|_l7HRDt3k=EJE?Z9LbWbr=-lx8<yI$RO$VWhjz_Wzr=Umt5$R^Xez=;g? zCtY+~Pheyy1d?QZudHZ`3q{sXGFD}<KXzd2CmD=I009ILK)`f?PPy)uI7hVn$BpT8 z59j`TGWpkz<gsuzFmdiT(v-7%V#>tc=m`M?5I_I{1Q0*~0R#|0009IL_zi(*`Mz?` z*VXh{t46kG_w(02w|PbY0R#|0009Jo36#tILqfWvHQ0G}9rsA#u_nj1UG)R&dSypn zX;f|Cezp-nz&?QmDP3IUHuiUmJ+jXFj}M>h6Edsvvb58mH(hO3S9F5_0tg_000Iao zH7*E!yY3h)%n-<s`{+SW`=}Y+&;<erAfQyCtV^4>>3wfB*srghs$6G4t-+_0XhQ SPbro4y))wK!g|8r9Qg*C%2)UR diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab deleted file mode 100644 index 539c1455905e8f168b5784d09602e3235e9b259c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH@s|o@^6o!BAcQF`Di((M=0mN(;j5d=f;!9ZUf>AKpMXP3uut|J|&4TyK@n6;j z({|w;nE7VTnK{gS)5barM&6mc$hnJR02p#93@7t@h9x+|3#V53ZhrG#-H#UguXtca zc6hl)7J`8F7TJ+qavTD-FOg=Le2N$mp#BiC$>m*S9t9RRkzNewlV%(!lSlG!W&Z>) zAqPpIMV3;4LGH=TMP!r)+GI5Yn50df&hEec-mWz@pa#@{8c+jjKn<t?HJ}F6fErK( H|6t$)#;8{g diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream deleted file mode 100644 index 1c3de6c80417b137d9685fc66f0c1066660f9569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH~&q~8U5XOC>y3Y`64<4kYRXmTIX}TuaU1uj^d@8F5f}kLZc=4H>q_L=HF9YV3 zU6SSZee)-iwK+~m$*hnrFb5*Xb``vtQ78!N8raF|Bv6?mSWIS0;0rX<h<*_ovS@<b zLUf}7JrZyrlc0{3JZme5o=rqfvW=z;Tsc2F16w9JHIX$nI6v&0K*iT#9745yKZ~() zwkO#wd98q0>_}#YoJA+Zw_1o7U6eM=H(Hpx^xYu8C_r|8NsyQt%Z(I-fM=(&1lyHa zl3aOIDPr6gy5N7P#6S2El{uy;!9bDou2IgmS?*(n1u%Ab^`KA5geXwQ{;ZFEj^_;~ z9tXd4g=z_h$g7Zxgg1>**i`c5lF_H3!#?TLu|RTAxho`z!@UCjI^-zxn|$8BHPbsi z;A82UMW9yf)-VVSc26nqGvr#2(J~{8$BKZDpljzE{y~PM=;mV~epQeYzlP(zmN6rO QHp?M$uVUx_`eO$^0otX%od5s; diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len deleted file mode 100644 index b92ca80caa0659b9a68734e5c7672abddf481663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00F*r007bey#N3J diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len deleted file mode 100644 index 8fe89d82d540f0f9c8b866f249f77e7623cde7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00Bk?001fgA^-pY diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at deleted file mode 100644 index 4611327238bd07e1b3d51da0669532d540815aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2331 zcmbtW(QXql5VTZ@NB9F2fe`|v98D3RA|#?~QBf4N%C+!<1m<q<V&T|k?L#d;!5{E1 zd{|XBm!yEh<=pa+heSIw-r2D?2|EB$0QM%38!URS4fc)zopc_wKM-y@7WS=BHDunP zsG!eo8>|vzK?^IrG0G)FYn9A}mqw5L&HiWOmDC?*rl=JZ?Cx59t|XBsgm=ji_@R}L zBWn1&DQG&4mAZ0)%9P#P$S^-Vkj@~gYLimQ_(qNs2S`HOF-4nnez50l6jGNcoX0x% zH3GRWho9)H$mauaBY$#TATOX4wen;7$Y$uN(O&^QAm0ugKi^_6<8{(z;(ztqI`Z}Q z7U<n8%cW*!g(g$d>qGe>tb7pk|MLdhiDaFCvoshuKC{q|#AJ1zgL6+J%irkI;H<fU zLbZlGaCQQPL}*eI3t3EJAJJeeBm<-fHIP@4-B6;bp+7Rdaxj>|clIKh@$!Y*0|k}v z;NnBEj^!EnL!Co#po=Z`H1b4CCr@**^J^PxO#tJU5s%efj^nDj0qnPK;J_Y>jqC)z z)Zje5Fr}>imt_ooYKnkm6djLMzV=UP>$$}%8juZH>ysW_E3!%oCBFd%6uazUTR3P} zLbFKa>L>yB8N1(sO)1lr!LtDPv3*}HMGuko|Dz7}rif==_&VIZ@7bLWFzxsU-6j8K aA9S)Gi!eSr?f*HJJ<qpvVAL%Z{O}7Wl7*B2 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i deleted file mode 100644 index 7b5d90e2b3be7504a617071083d9c83deb8aaeb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)u`7ge9LMnob!4KWEEX|YWRS&TR+7jin@u4ji@L>VFv!9r${<NbF%XN<Mlx8` zWnvIt`4{x~oqOGK+w*yUU(-`pm$hXLnGXR11PBlyK!5-N0t5&UAV7dX)d{rJWm&Or zY&`Ywoe1n3D)y${sqaVNA-;O1F9&%LAV7cs0RjXF5J*wrDxwNYyVohUX(B*?009C7 z2-K3ma~wNSX&$Mio83x)009C7YDJ(aeuq98o0_YYdsDe{FG7wwyZck=(LsO!0RjXF z5FkK+009E|3cSVKaJjUY@2WKd`3kJYTyb>aBi~hP1PBlyK!5-N0t5&UAV7csf&2v4 zW9s<+v5?=QrN0z7i}8cWz0bdFuuXsf0RjXF{I0-SJnnUVW9xUH>S?J8+(p>=^7c%s zeYyw`An@M>4&%W0m8tsF?>znP+<7ji-l?xT1uBufdVaH9o%N~-5FkK+009D3C=man z&^mB2n`-%Ogf))rU#8lpivR%v1kx7RjJ%_#u9vhc)e#_&r$9%%|CZYOJM!GLMc}^+ Fd;#pyFuVW& diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab deleted file mode 100644 index b9ad114a5e961e577ebc41e55426c167cca38762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmbR3vzw0r2v|V`3<y9ND}Yo35dQ}PkO;CGMj#)AVE`n@3FRP*!{qVN=YZxL0u{sp z=^_yQ@BjZ^ApQ35|Nk?Av<{F4Qlnrr1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON NU^E0qLx9W>003+N8dd-R diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream deleted file mode 100644 index 718f8d66e4678a6ab09c220c3273852eea8996a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuF$w}f3<XeoZ(wU5Jc1%y*vU55!y1?9Y%*jrqPJJn#%>SrQ-ypI!rPdSWQ8>q z3A0>j$if;Vdht}l+Yrr}c18A|U^{=|@OPr;T1+diuIZjACmpG88ZvSB7`TL(E^iiD xlsawG`qvkKf9D}wspoV)xdb1-v*!W@0SG_<0uX=z1Rwwb2tWV=5P-lOffpYDN@D;3 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len deleted file mode 100644 index 47c1102697649603a57d748104b04c9ace30fce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0E4{%0L1{l diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.len deleted file mode 100644 index ec8f944c8acd49bcace4e4c78d4306ebd9e28078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D~0(0I&e5 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab.values.at deleted file mode 100644 index 96d372e9e9242d9ea6e6a3c14002e84144ab0daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcma))!AiqG5QYQ3NI^YFVFeZMrB&*ov?S_%+5Alx(w%i?BKmYbncybGi;%j<f$y7t z82;;G4O@d}B^+@*dnBIiz~V&_bZzCZvGLWm9V#WZ4X8LLZVW{P8@&>>VqEJJY|<=d z2VF#ed6MZ@AyF46sTTn!==-cNQ=AWbwxZlQ?HH!&oP)?+CjJ!m#7C>1f^Bayr4qGg zxL(Rtmcx4<n2B?h3j7Wplu+Dfo;K!uIK=+ETy4zy)xL_`%)Am3DF~iFBXWOU;;n<| z26~`+J{5GN8mU)XPR%rxTJ7ZOA2#)FBv-|9iv81<MU1U?LjhK3(O89;3c3vrKO5~e AhyVZp diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i deleted file mode 100644 index dccfd2076eb0dace0b74f7b5df35ad556ef21147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuF$#k~5CzbM;1w)#0uSM#(%ISwDQyB`mDIUGsub2<!5eskK&BNfZ5G~kGYg+T zFBR#MJOTs=5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{RDnLy z-nVaeYN#**1PBlyKwu+qkLmYWuA8NS009C72oNBUvA{FB_j6Tde1hr(2oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5(TF3?8* p>Cse~pP@bh0t9vfLu}SpJ?=g%2oNAZfB*pk1PBlyK!Cu3z#op-4dMU* diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/subtypes.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab deleted file mode 100644 index 826a296d7622d7bdfb51d3b580f2ac289576016c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIup$)=77>4011_$_B5+=ZO0TO~jlj??qV3Bp5psEJK2CZZV1d0JV1P1=T7r3OV z3-J9(`}FRb6K}P-O&l}zuQ0Rk#|v^EWBgA4pNO@8!uYe*Z_(cm=R@APf6fmTt}(+S zF7b*Bd|>-A8*}*u6HM`dF`n`HHfyoQc;sA(TRdTbdu(urT&Gb16;J^cPyrQC0ToaI N6;J^cP=UWG&;jO+LN5RS diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream deleted file mode 100644 index 3aeb44950ad90adce547f0fdfd6809374909ec2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH_!Ab)$5Qcph^&mnHD&9-=;6W-IeSnbtTLWn(&diFwz3H+&w&npQx4`#>$;Vt0 z?;KT>P?Hj6aWN+pb?q+h4Z5o7`Yhv>7>&9*OMM8qLHDPiRJI&Md5StQ+yJRm1n<8U zuG8^Tj1YO~#9zvmcpo%T3Hh#58ZahCJV?FDdhYqmOx&w@@Hco?)}4c`YRxImzj;E& zE-1u#=%z$GcD}Jp`V&zPAMDkZX^&cO{{deUL|>twG~S*XaZe-KQf_zzJFh_}x%r1} fOS_O4cC3IEumV=V3RnRvU<Isz6|e$U;8@@f$J8LD diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len deleted file mode 100644 index 55df098132acd195d2993d5b3064fee557d9e07f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00E}E008L#-~a#s diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.len deleted file mode 100644 index cf8a30a1c969e61b953bddf5da4778377335bdd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz0D~U@0RRB` diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab.values.at deleted file mode 100644 index ee4d5b4aac3d655e05c626d4119f0ddd1ca7d7e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmeHFyKVwO4BQ^RAT%eDdPDvoCqzVwNa&DAZQYr}WU*IXZv=nOiAQnGDHRo^Ju}v5 z#&2$k(4ZC-)}l@EDO#*h6D32oC8XUq#0`XuYZHYQ-`z~K^%9XGl8J=m>p&gZ6K@rg zX|63R`ZCh|0z5`CcB5ahK<pQs52gF~zs;|n@d{HEPWU{bc+cY1O>f~w?W$KJOup(q k=SRtKb={pN?qv^u-~({$tIS3RTpVkRM#6(&zr3O83>V@BX#fBK diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i deleted file mode 100644 index 33f1fc37d8058ea99b64ae51b7355883c8c3a9b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)FG~Y)7zgmfSxhTpGKxW8f<ZwB1Myv`7!?en3v2!<nnbV|3=<4S#Ui+{Xf!UU z7%k@c+&kF8cDFk|zx=!B`+Yv~I4-FtwZtJnfB*pk1PBlyK%h{8%Si9mzBUUjA)EjK z0t5&UAV7csfm{TBBIRNAek+$SAp{5zAV7cs0Rp)Tyhq~O{9ZTrV1Wb(5FkK+0D*!9 zZX<u{<>b2H8sZ5M7@@#Z%xWDrPDeP>C;|k=EYOSj2j^$cV~#OCCxMU1*=Y9va*7i} zfB*pk1PEjhXvf{1wcb*OM_eU9fIuk(exv2e#X|a8$RR+0009C72oNAZfB*pk1PBZz zkbW@My17~(>at4&2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Fk)lflh2T_r2e! z?1B|rEd7zh-O=E)VryB4z(fl?M!V(3_RK_=RE_`v0worBjqcN(-R%;upgI8p1WGB; PkJk0(@oXu}XDIy-tPdtW diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/supertypes.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab deleted file mode 100644 index 8efbaaa2df5..00000000000 --- a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab +++ /dev/null @@ -1,2 +0,0 @@ -19 -0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab deleted file mode 100644 index 1b617c8bee657b3d7f04b4de48a4ab52d04ec5bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIutqQ_W9ES1N?{5(-OM=x4(3=pv2N4tmlgVV!WDt`en3hbkV9{g}1d|tG_6GDh z=wQh%{10ruvz@cCJ)8EiEJoFx!cqB5yqGj)`eL{{(LF559pP|mt?xzjez^Y28}AR; zaKRoApV5m;C%obTmkDW)oustGT1xWqfm`&`(i;02X@!lfw7@6MG05>RILu2EtQVv) r-f@JpqBOu}N$TRS@3l26U<Isz6|e$UzzSFaD_{kzfEBO;|5o4)#$!|; diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream deleted file mode 100644 index 5a9326fffebbe8c13fbf3b30aad4a1efe59f1c46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH~&q~8U5XOC>y3bH*4<4kYRXmTIX}TuaS!XArK9yAjK~NAuy!cE`+E^<10t3w{ zyClo+`{qw3D|eQWvs)rxV*$)T{F0)ZGL;NX0}^y~PF&>#9<!S;#1h>kVVqOT9v$f| zq%bHkB7+dS3{9%_SziZ?;u1>MZFCh$9pc~;e3kXo%-%H+V!!W*%iqI<sNTLmOsNij zO>$Vt$^fz2k=+z!n1T{NS|OfyQQ9y+SYhtccZ2+406D}3Ll$nmv|11fKD^K+_^!;d z=E|!{5u<gXEB?1h{Nq1SnPE;E3{*K^7UgW4<q_6cf?$_dFZPs-nTb30cYEwJylOGa zh~grYrX`%9EU8clpBAIAspRpEV9b4oeY2-yjvSy4cgPxtX9N5V6{z!@e%^MP>60Ds zk#^0J_*U(<FbMT_Pq<iT$h{q-bw*Z?4FR7**Ul~cgY-$!&Bsc7u)p>W{Nun6_=R!n diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len deleted file mode 100644 index bc1721ad72a1f49a7d7b438e2237f366381e833f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00G_?009aB_5c6? diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len deleted file mode 100644 index 14f7c061cc4bef2fdb72d8ebd5cc8c9a23a22d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00Bk`001HY8UO$Q diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at deleted file mode 100644 index dbc6bf90fdef9c972ed7287004893d199a230471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmW;6TMB|e6o6q(%S%^X!R)|Yh%Z4D^nS>L3gN_=Y5&pxJ$zj<sElgvt}kz+>%F;~ xT3ABVH4YNyt9+jF{^}!olS%XBk5k@o#yM|!#|4*Mam{-^@R3h^<_kC6{s7lI68iuE diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i deleted file mode 100644 index 3bee32461ba7012d1c138fd7f1420a942392a00c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)F-u!f7zW^LT|_z*9NZo1E`=@~1ec17IJ7v4(4lrq8W015ORS6FA}w_3){YSe z-Rw{rQ3OGRf(W4?C@zAFgM(jxz#Rff%(;E;c+biC-uJnXA&{F5W&N3};{wn6vh3rp z^H&`oWB>sI$p~CV($lvGGsy%NlmLNTfj_bG<n!6r+zl285FkK+009C72qY-58=03T z8}A=G`p*dP^yJ=en2-G+5}&^j`Cm-mRT8fue!&FxqtEI>X}Msv)M-(m9{XpnKiszX zG200cXoJ9yIAiQ$YP}6dIf4KI0t5&UD5$_q^lCnTc~#JQY7rnnfB*pk1PBlyP#}SU z_`k}Vt(~I+RZ@ij0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+0D(jWRwDQI@Zjr2<BLsz009C72oNC9V*+0yPkFpn>akej<Om$c{ZA8>YR<CT z1PHVs@GbV%-;MrzO}L8y0RsQ0K)gp`YjdQLTKT&O{I@!n`~AHZ>*dA0`P6#JOMn1@ WZVNPHVD0<w!*0(tj{pGzc>)iEdoxV{ diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab deleted file mode 100644 index 6843312afb2220972b906c00a787235613655d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH@%L&3j7=+jN`;8!;1WT|13lQwWn-?p{QETvG3El-u@RCk^Yt(UmVuB|NkQvx~ zlig(D|CXao)iEu5M5%|RlW@*s1!Ftk-|z@rahh!X&s((b#izf^j`!O?T{1~dUO<Xm zKY=tEJb(;2AhYBw0CME&4&+Jy1{BCPStQ3-phPY%K$+a0feIO%02_8l*2wu0uu=U3 l&>(xH%`x4F^Rg;3AOkWW12P~3G9UvoAOkWW12XUz2Hp_bO9}u0 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream deleted file mode 100644 index 54555db390322005a3d6c3030f581ae72805c531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIuff0ZZ002NzAqwq3Y<qP7BYcQk+K)4rdbNH(W3D$~z<>b*1`HT5V8DO@0|pHI GYv2R8Spcj6 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len deleted file mode 100644 index 2b895e774deea3bb925caf1a5567bf65555bbe6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 LcmZQz00UtF02=@l diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len deleted file mode 100644 index 14f7c061cc4bef2fdb72d8ebd5cc8c9a23a22d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00Bk`001HY8UO$Q diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at deleted file mode 100644 index 9acac0d4af7a0a3a7231b2734a204d8a6502d5a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3654 zcmdUyT}~S@5XUX;MRI}EXNW=&eL#s4+CC57VPmrEF=KDla;oyts#Ou77R1K`T#4Bv zL~w+8TU*}Q-+#V#Y|RcriQJo_BQAT}#Jve}@+o7;JCNqP5I;lR;w%$Gg{S7keoAt} z&XK=j3CupbIR!gmsu-FEvX|8t;zf$!FxfFfsL+lhh8eZ&(2_ht^!*A0GKgWDpoz7d zb+wo8+K4&HHrfT{+K2ujxJ44HiJfi0hxNWCu3n90qI&cGAjaCeCCP_H*1;?eNp^yH z5WO&;n==J|UNU!?fh+1WbE<{9OX3yuZDDQ{Q2TJekTSO}w^A9xKG>HfxUSxkq|BAM zR4HS)ta%aeT$m@73O>FI%@k9Vh@dEXEX;#OMVs!qg*8@?vCFRu^H-mi5i@Z||GzN* z^x;qOsKu0r6b^i)UBxcuIhCT~zA$$hW3j61(Knfm(z@wh7v@Tzlo_&z+8-lJH2#?1 z3KTR{q6~QQ+k4Yrf0>_p(1+4TE8_3savgKh+T~-G3xYtOm>+taErYZ+<UQy*ypGGt LIyJf>T9{t|3I~zv diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i deleted file mode 100644 index 41018a93c6b30454cefa6b650cadc18598d5f17c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIut4>2f6hP72Ck6WcY9tbgL{=h^NMvOtvJ%O@u3u2KPO@_*lSw97!*Q4mH}leY zQm-|ww;CV3*StPzQKwqgXFb$ct?IiT>!+UTT+el>b^X?+uC=Yd+ST~!zO`x}+WYo# zyf*|05FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U tAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAVA;_0{@WQ3>*Le diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab deleted file mode 100644 index 6a1c931aff7b65bd925f5b37369c83eb965476b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 T8~ED5*9N{e@U?;e*9QI*St!Jp diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream deleted file mode 100644 index f63557d8cf674d326eb75d17cceeb04fe9e4345d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmZwNdz_AS-oWvDa>_beRFdP+)H*cSacC-5#6GDf5o&rF$)bnB8qAssiH5awz*@A6 zOv;c$YK>GX3Zt}X)@enaJf00{wMj(J@BO={|DIm2UhmiMntSG+>$*PQ>%QFg<o6!b zs5rOF#90NOOyTs)^)IpfyMw0gd9cB`XZEkCJaWN+na>XITZ{WrP8Dn#vuEa)w|1(M z*Q;H#;@{q$H^1|=F>lr{&FB7|7tU~Rxt!{JV0dvUJ#O&ctJixRJ&qnnkK=}h=ceSG z&1mECn>wsL;_>u&dOSUzHJS{(_ryKdkGT0C!}15@k1JZZeC55@e>yuq(PYGu=Vsjg z+eZiAaNFbO`Yr4>yVJ|;wDtH*=FVQ0R&r&F&W9`49LRFViU+X&(#*qb(P+mC-r3<| zJ2tM~;6>g&y3bAgwpNuI>_2|xM!wvtUI+R;==WlNIKFgz`Nhay_1OB(OLLh>>G&h} zAN+DQS3EUqG>5Ib@fqf2<i+P3G;hew);F#A>qOq$>Yfd3|K7-<>_7M4EqP$Z@&D#G zr}sq@i9}!PL|X5-KaX9}>v`*%<JMN<I|n}bmPMc6a-5kh8|-6+-%rb7?uldD=s0q9 z&2c@rw)QtAJl^+-Ps=RjzS)0&gyVnR;SEkIYTJ$5Gc&HC^TR~?s;2DHX6NhN^3Q8h z;`X-B<wjGMU(2_8RjHd?7iO_ys~z$C&rkT@53Nt%vf~V^Ejto_udbOJ;`vCVY<bA` z533%C$M2>2)9Y9#64m4RIaxLRob~Ruj}>!E`r!raKf2&_+@6#B9BcKhaUU1d>obyf ze4h3tk3C+P%|uG0J>~n2$WNqpUPAj3*J1ngtz(L8r|n#GXlhPLl@r$_8V~uXr0SD* z>Co2_DJi>IZs!x7s7ns3Q~t{M^~RMZP@mK%^+|nFpVTKu*SfxAnepf9)mpFg`%|~n zEp<!XQn%c<d-L5)q*j`jwDS@kYc_cebse`i|NDh#=$rbczNv5OoBF1%scY(*y5_vj zccxR{Tw46IQtF)Zdo&#t*P(anoqDI<sdws~dZ*s0cj}#br{2qq&#QN9y;JYhJM~Vz zQ}6ug|3v6Lem(R~y(ia&S=2lAPQ6p_)I0S~y;JXTd+42dr{1Y|>OF1`y;JYhJM~Vz z({*&p{>6h_M|p73=0$6ol&d-<ZP8}7nXzsz(|avl%j@3xK7G+`O9%feb$qnzLxnZ1 z&z4&sb=<7&52qf!zg68&j=wc~SdVGkl$TSDPb@w=gs&Ccbv$XGXpbew9=D!c`K#!# zql+$Bug_T(t#GKpJ=V`{+;fyw4<@ECZ+PGS+&{U|R*t{n`gd7-$mLxO-#3<fa>~W8 zFSs%_+j`ZCnjQGjt0hZW>+8A4`1z@NtLXgG`KS4=`ue#{^Gx$g^Gowf^Gowf^Gowe z^Gb6{b4qhcb4qhcb4v3_uQN1<G>0^YG>0^YG>0^YG>0^YG=DUAG<R_w=8oo$=8oo$ z=8oo$=8oo$=8oo$=8opB%u<>=>W7Xy9e0{Lnmd|1YB+8Wa~BPBM{}247iQ7i(cID8 zQKvL_G<P(2G<R`(m^+#~nmd|1n!C6?%pJ`g%^l4h%^h`=e&NwH9Z^Tr5p_fzQAgAf zbwnNU*Y~A8OFdCf)D!hYJyB0gq^7<VO=*?MN|*B{P-n^Q9e<?Gs59z}I-}00GwO^w zqt2)^>Wn&z>(Ci>Mx9Y-)ERX~ol$4h8FfaTQD<eAQfJf|bw-_0XVe*WMxDj&p|fb{ zj5<rM3$v&*>Wn(0&Zsl$j5?#v;`Y!Pbw-_0XVh8T9y+7Ws59z}I^)@o6IJW9ELpg$ zX;w?VR?w$K()*%SZyD0%V3W?<UfTOcHp?fj?lbAdTPN(D-+9;JhP4j{OPE`~$)?vg zjr}3_h8v<y=5#t~-7LFx6~0z5qGi%iQLh`;Pw#r=pY-~{R)Z^5rv8gsp1Mx|)Iar4 z{Zs$cKlM-jQ~%UGbx++>_tZUgPkqyMl=`N=sc-6=`li0AZ|a-+roO3f>N~DO-_$qt zO?^|})Hn4_eN*4mH}y?@msv`EQ{U7#^-X<K-_$qt9k++RqoHr=JGm~*qQ0qb>YMte zzNv5OoBEF1L*LXl^-X<K-*J2BoBF1{sc-6=Iw~$5-%dx=5p_fzQAgAfbwnLeN7NB@ zL>*B_)Dd+=9Z^Tr5p_fzQAgAfbwnLeN7NB@L>*B_aUD9Mj;JH*h&rN<s3Yo#I--uK zBkHKkQtF60qK>E|>WDg`j;N!!J#-We9Z^Tgbzv5DL>*B_)Dd+=9Z^TrQQRInqK>E| z>WDgu+e1gx5p_fzQAgC#lmi*<bwnLeN7NB@L>*B_)Dd+=9Z^Tr5p_fzQAgAfbwnLe zN7NB@L>*B_)Dd+=9Z^Tr5p@*Tp(E;uI--uKBkG7cqK>E|>WDg`j>;^hj;JH*h&rN< zs3Yo#I*QvvN72v`b(CBeW>H7f5p_fzQAgAfbwnM-?V%&;h&rN<sH3<&bVMCdN7NB@ z#O2qfzSXw<!Y+F1Ra7uUPt+6jL_JYY)D!hYJyB0geSgC%)D?9_T~Sxm6?H{jQCHLz zbwyoKSJV}CMO{%>)D?9_T~SwY9lD~fs4MD<x}vVAE9#26qOPbb>Z;6A>WaFeuBa>O zin^k%sH?a=bQKL<QCG=zVHR~oT~Sxm6?H{jQCHMe+#b53uBa>Oin@y1Ls!%lbwyoK zSNyEighuP<_UzBqJq{h1_F0?LXK&2;xZ}nTy71zZ1$hH%G$^?^we~{V?`XS8zi*n} zeYqYl?9FbjN9vJ!q#mh9>XCY+9;rv_kUFFesYB|JI;0M%L+X$^qz<V=>X1654yi-x zkUFFesl&Jq9a4wXA$3R{Qis$bbx0jjhtwf;SY|18NF7p#)FE|9=Yu+=4&(OFVKj6| z9VXX>S=1qQNF7p#)FE|99a4vJd+3llqz<V=>M(8(9a4wXA$3R{Qb&vKIebA!)Dd+= z9Z^Tr5p_fzQAgAfbwnLeN7NB@L>*B_)Dd+=9Z^Tr5p_fzQAgAfbwnLeM{ylGqK>E| z>WDg`j;JH*h&rN<s3YpA%u?!zI--uKBkG7cqK>GexIJ_f4INQO$#r2CbwnLeN7NB@ zL>*B_)KT0XI--uKBkG7cirYg+)Dd+=9Z^TjUB2rdtM9-4Zk=#VueB@rU8R(Ube`$F za^+XU*YnIXd4oA<cC{C{e!zF*=bXrVbIcD<<##>TZfGJUZ&}*(`DdMn=;HUIj<<EN zl>R*%4ga2{fA5xALO-v;8+X6Z{QbcVKl|B|53J8`?0#jl%qvbYJ!9t~j=OZZMf+d& zo&Wv%w(rvOM#J;c^F+h*(DA!C{$DfvoZ3y^z0Gm^Q?>b*{QRspmwYtpn;i{VA$<R+ z<1-$xedf`fyLskpqmNIGoHb|j=o1fmo@jU+*ZpRC5j|ftJRcJ`eRz~_Z~ypnRvgf{ zXWZU?;nHZzt2L5tA5Fj4um^`etJ`gpM?LL4GSRxz@>;)}+c?pB&1nw1uj^sHF#b>n zJ~-?2n>^B{##Q`l`(uA#n_;78aOp47$MM34xAf-n+`qJ7zjZ4gX2+9>O5Ctx^4ov- zVfC?HrP;M;&IhI}uIqCGnj`9)iFOr=sb}geZV#Wo)UQ-?n(Gq1&qeQVaZb;Ti|Kkn z*9*E{(Di|jw0rGO^!)Vs1YIBKb2z#_@cwc2+R*ulUk~$2b4tHA%_Get%^!W9Me`L6 z^F(tLzaIAM#vNULGph9H19bhR{iOY5x6YFuru~iE!*QhjrTwM-rRyT?H|;N77iqs~ zziGc|zghIlujBLDZ)+V!Lx<5VkHp6vnp>$`T$kj;^}rGNab0&v-MByA|Mzw8|I_>Z z^nMb(pG5EPmwkOKy}v~7FVXw>^tm%#H|adk@u%ZY$3J@4+4wxpgSGPz4d;Q*1AV^t z#gCI#IR13}>A2HzXZbmQY)!|VjyoN9I_`Ab>A2Hzr{hk?osK&lch0yp>qR=QbUf)e z(s88YK>JVoP5T`U`%U}R`*^u+_KWt5x}yD~{iFS&{i6M%{i6M%{i6M%{i6M%{i6L! zt_Pi@o~Wm2=!xEcr1u|b|7rhe|7rhe|7rhe4(T}1afpWFK=(OU9lWWU<H29;ygZcE zGv4_#_cU#AD}BC8_e1pgE*(EQeso_%uXl7`ME6B>Uqtss^f@lQuTS?$be}}`M|6Kg z_eXS|l6GDa4e#sId86}2udj6fM6a`SKIweY`K0?NI<ItI>Hdk%FP&dHzjQxE=aufC z=>CcBpXmOH&NtmZ(d!W1H}O>S5tZrnyv+DKT{Hgk18etDbRR{pJ9IxquRnBOMXy7A z?5^yKbe~1n3%bvuZsPWEpA`-FS=3Q-U6@7J73zxauaaNi@(|ru(R~%&572!S-4Aeg zxZcp~FWom$muVB{Z__39NUsOfA@xW7QGfJzG}Iw=NF7p#)FJgneNkW0&=qw>T~Swb z-J{oU>Wn(0`#I{3dZYWgXy}f*qwc6X>WzA%-l#XauEce?u26r;^`Mi~A$3TvU(wJb z^+-KZhdkA?;4|ux@xC%?eE!Y<b?J!hHClXeh!gK`*PE_i^m#iMue;`L);ymbANPF2 zwaLeY>znO9k7w-x4VSUbjrHDPyiZLUpWo-}w)=dYUJvMVcKV#1jazq%`_nXW^LN%h zcTd_U>h(9d9ubeP&)t*jQE~0_cWa-!)93E=xjTLCPM^2a=j`-3JAKYhpR?2F>oliy zeWrP(d8K)!d8N6ed5r5YkI^uXG><fgG>0^Ybe)fe>pX9Na_isNZ)<Tpe*XPqZBFSv zfaa9$2WVbtUgP#KuQac8pFnfV)DC^(aW}t1dOr0l^Gowfb4zneb4zneb4zneb4zne zb4zneb4zo}M3`5aQ<_tnOPWiXOPWiXOPb4Qm`j>VnoF8XnoE8Y=91=;<}w=Qk>-)+ zkmitH4`}{q{%HPK?Y%RLY5r*b%8bur&aBNDeO^iPMDtT-{C<DWV(sr)Xr5@EXpU%( zXpU%(cya3F`18z@wfmCf_KROKeBK(jyHBys4fnxxzY^EsKA7%X=<jLh?`h~hhVEnN zb5@$q<a$(Gn@?-^%QUBS-%RsL^Gf&8G`Dm=P4i2CFGF)o_t!MfG|zOuO><56-8A1c z-!$Je-!$Je-!$Je-!$KG9p*b4=9}i5=9}i5=9}i5=9uO<uEQMD9Mc@r9Mc@f?O~2- zj%ki*j%jY|AK84#{aG};9wyhVGU<Ma=74@r_S;$GTKfLhyQfVyuk`*ceQrSaQ=ECI z=n+;fxM~*NFVOcF&zzO(`|0~>zUcet`&i*p>;3fothoA_vGj8ay5~J=KcZnjlIvEP zv>&t|aeMgpKkW~zZ++=UdcR=Xm<I3pInnU<k#zok+Me^5#Z&#=By~VvkK4odbszgb z_1srP!*z<DpPrwdm!7Bclor46_-J@MJ)Ry<kB?suk1O}@3u9dO=z2zvqxUE1{SoSk ziS`dSXT{N1@8HDme^*o|zh{j^%Fi>RO|~E9(LS{wXZaavX>oh=r<X=kGS1NTyxW4s zkGd|?^_H%ibe*L8`(|xljGsHx{XJd3>F=ny=Z|^U@#{~Xj5?my?px`+4jukddB-Ul z_CL99l}X2m_MhH&q4P=S^V_36|HJo3!+E3g_0#sN=3T1neA4sN*W>o^eG8v@;|k{| z8qN<rFFkME-ulccI!|=}y5p-qe_HWylZNy@Fx^MeePq%*CPmW*os5R-1wB9gy?e#> z3%gp=`jzL8owuf+d-dzD&a<6<KIgUFQk$+n^muyQ!!O^q+Sh42{hrzB8OQxRdK~?p z^!ViZj!E>s7JWY_4P5l{rqsDN`#yR+ef_8H+3DTm-)Pd~3ePv(?&}Qm{{Q~>f3<nP ASO5S3 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len deleted file mode 100644 index 1fe2ce1793163d25fa67ed0e47d00f7906aea255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00I3M00B+`7ytkO diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len deleted file mode 100644 index 5c57642393865391c332e87c964706eb9c57791b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz00Dyr008I!u>b%7 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at deleted file mode 100644 index 79e307948f7c756df989b3a040787718564bcffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12507 zcmeHN%WmXE6wRX_3F%Cd5epV9`U8;IvSfv3gM>h0-(p&Tgb3<{|EKOb<?B;@t890o zpg}m2E7w)`{i?FvU!Q&0?>_Di+aLG8JRUx7zk57vf7l<Met&x2|M~o3_w?KMyT5+k z{qgtyr{~AR?$`YnXX)=YUGLI$m#+JCJ*4aXA`NGo_WG5rgQAB(b4SWBE(d3ZS2v)Y zg0q1(=SeqWPZ~F7i_u)9>r!MD)Zn~K7;C|xW|RtVh?PoxCN#@Zp1Hi2p5SGeS%Lbh z%>yf{*QgBTrLgOEX_{bVA?t-5GOxBOym5Z!Ip)UVs|1!7r+ag6I}<Zca5HMtj(ROT z;;YYX#p9S@lX(p-v)-;vJ<{~xx!9#Jb<i2Y>J!Fjc+?76etE332{*l0=~~004g)r) zn|tc#Yskqof0HiqR&TjK#43%@vd?SJyH1j<ks6Wf^nnl4O{c9fG94_6Rtvd@fU;2` zE<0EFHj#M*Z87wvZxqAzOq1|e`fpTYc@*O|S}*RK&T7_V+tcfBlOp)@2&6l6M(3|} zf=%1&bPZ@+&Fb6>%6tww#!ga1UNgcunNNu|*S&gcxb77*_a%6jR7$IuC&L~kWMO%y z(G=M&8LE@Q5r23!<B#Z)vAo`OuNvG#okGt5+Hv2Ya@CWiUFBV@H>FhA>E`N6?d2?H zl+F+?VqEoQeGebXG*;%seA}9)_Sfp)*S-UH80hRcGj}t(L-8a+{R-<mJ77`FsxULU z_q6>rCQB(5cDgx(krV10z{44=dxFBugCZNq8GX;P=(2~f!snCtltTG&%=JL79>vpZ zXJXY*4#vW&QgX=Xcv6{jygNbX2*QJwd*~_f@Tc|cGiMq)LmE(B>3`u7sf_;2GIvw> zOnn1*xSJM!Ejvr#lyUtWIiEba|IjZ*k8b%+=KpW+b2M9WCcPrxZs5szC!MoyxW6$^ zZsI8k`BTZs*8D4Sb<WZ`ONX;`-i7D$o_U}@&DNhP*{@<QY5v63Q>(B4R>AJ6+-Ep@ zz)!(%;Uh+DWGr{2@~(f=QJF`rmGjf@z}YxlOs5&b#D07HX6C%4AP&Z(l?op7|5F$l zzv-Hsia(w6bj%BQ`K?D<`Z6i{*6zOx^DUh@+rMGPGivpFCEw<8C(!55n>u#jTKx6_ z(LU~IYwv9<K=wVDRFs#`v!Es1?-+clwI!qCd-|)MU(jZO3hw-n-|P4I)URsUb@)19 zp0qE(p9Lwj!`3%dUaLSsd)Junw1Y);de^w=U0M=GjUeMNGUJl+zH@vJ3Hhl9aE=gQ zzU4GOL_H~&WA88h(xQ8R<;f}dFj^AdO)F1!sR~Y|%PZX^7=FT60LGx?8FW{k>{D4g zQge({ai%7%MLnid<Q`{g^2YdrCVmHDm(HGW9{qb(_0hi%7uwP4#yB1GWGmb&_49h> z=ebwO?VvN`aQ>3W23~59=C8uU(HVu6Lj|5@|DawKt`R?aBhHYjtx<bL<&{`1DN1o9 zcS3!*48g6<MJcbCiS<34Y0V5gvKN`}+7H$NC^fqj9?nC>RCt(b?0I@h?hSisOoHmF z@UY%I<Bg0JpL17!>+y8GR;8}x9kPPwk;>S_9nk_@r{M5}6GzRB;uI8nLY!fZ=ooR_ zGIW8k9?zsNoPiec%-)>w6D2W5eCSqG`arn`Jt`6Ad=s}Rze2%ttDW+0v6=w<?)4rv z^}n$<UGE&j@bCT30`UNRiwl2wd)NN;KD57;@f~1}{0;G`BY%}#jL;{klYg<yHJ)oC NtdtMXh9hlx{|^wrV_5(I diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i deleted file mode 100644 index 0dd970c4c0165206f143da5a617e0ae97d5e823b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len deleted file mode 100644 index 131e265740f37d77b7c4a3676d2a7704ca3e4a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 McmZQz0D%Su009U9fdBvi diff --git a/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/last-build.bin b/samples/client/petstore/kotlin-jackson/build/kotlin/compileKotlin/last-build.bin deleted file mode 100644 index ced6aa0ca79dfd9ddf6adc6f00b37073d98dc732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmZ4UmVvdnh(RmAC|xfrwIr!1F*C1NFFU^^Co@kkGcUO)H8(Y{Br!+NsWdYu#WOE0 lfAeSN$RAJN#WOK5dNHsUmn0UIgalU<FfcF{$lYY9008@I9xMO= diff --git a/samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 87b738cbd051603d91cc39de6cb000dd98fe6b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55190 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 diff --git a/samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 7dc503f149d..00000000000 --- a/samples/client/petstore/kotlin-jackson/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/samples/client/petstore/kotlin-jackson/gradlew b/samples/client/petstore/kotlin-jackson/gradlew deleted file mode 100755 index af6708ff229..00000000000 --- a/samples/client/petstore/kotlin-jackson/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/kotlin-jackson/gradlew.bat b/samples/client/petstore/kotlin-jackson/gradlew.bat deleted file mode 100644 index 6d57edc706c..00000000000 --- a/samples/client/petstore/kotlin-jackson/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/samples/client/petstore/kotlin-jackson/pom.xml b/samples/client/petstore/kotlin-jackson/pom.xml deleted file mode 100644 index 76eedb89596..00000000000 --- a/samples/client/petstore/kotlin-jackson/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>org.openapitools</groupId> - <artifactId>KotlinJacksonPetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Jackson Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/Application.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/Application.kt deleted file mode 100644 index 81e53e2d2f6..00000000000 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/Application.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapitools - -import org.openapitools.client.apis.PetApi -import org.openapitools.client.apis.StoreApi -import org.openapitools.client.models.Category -import org.openapitools.client.models.Pet -import org.openapitools.client.models.Tag - -fun main() { - println("<top>.main") - val inventory = StoreApi().getInventory() - println("Inventory : $inventory") - val pet = Pet(name = "Elliot", photoUrls = listOf<String>("https://jameshooverstudios.com/wp-content/uploads/2015/04/Majestic-Dog-Photography-Elliot-Nov-5-2014.jpg", "https://express-images.franklymedia.com/6616/sites/981/2020/01/22105725/Elliott.jpg").toTypedArray(), id = 123456453, category = Category(id = 13259476, name = "dog"), tags = listOf<Tag>(Tag(id = 194093, name = "Elliot")).toTypedArray(), status = Pet.Status.AVAILABLE) - PetApi().addPet(pet) - val elliot = PetApi().getPetById(123456453) - println("Elliot : $elliot") - assert(pet == elliot) - println("<bottom>.main") - -} diff --git a/samples/client/petstore/kotlin-json-request-string/pom.xml b/samples/client/petstore/kotlin-json-request-string/pom.xml deleted file mode 100644 index 947997039a7..00000000000 --- a/samples/client/petstore/kotlin-json-request-string/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinJsonRequestStringClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Moshi Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-moshi-codegen/pom.xml b/samples/client/petstore/kotlin-moshi-codegen/pom.xml deleted file mode 100644 index 9cae12c1a8b..00000000000 --- a/samples/client/petstore/kotlin-moshi-codegen/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinMoshiPetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Moshi Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-multiplatform/pom.xml b/samples/client/petstore/kotlin-multiplatform/pom.xml deleted file mode 100644 index bf62ae66e66..00000000000 --- a/samples/client/petstore/kotlin-multiplatform/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinMultiPlatformClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin MultiPlatform Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>/bin/bash</executable> - <arguments> - <argument>gradlew</argument> - <argument>build</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-nonpublic/pom.xml b/samples/client/petstore/kotlin-nonpublic/pom.xml deleted file mode 100644 index 2b400e564b9..00000000000 --- a/samples/client/petstore/kotlin-nonpublic/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinNonpublicPetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Nonpublic Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-nullable/README.md b/samples/client/petstore/kotlin-nullable/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin-nullable/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin-nullable/pom.xml b/samples/client/petstore/kotlin-nullable/pom.xml deleted file mode 100644 index 2bf0f9666d6..00000000000 --- a/samples/client/petstore/kotlin-nullable/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinNullablePetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Nullable Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-okhttp3/README.md b/samples/client/petstore/kotlin-okhttp3/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin-okhttp3/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin-okhttp3/pom.xml b/samples/client/petstore/kotlin-okhttp3/pom.xml deleted file mode 100644 index 37cf659dcac..00000000000 --- a/samples/client/petstore/kotlin-okhttp3/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinOkhttp3PetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Okhttp3 Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-retrofit2/README.md b/samples/client/petstore/kotlin-retrofit2/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt deleted file mode 100644 index 75f3323445c..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ /dev/null @@ -1,41 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Call -import okhttp3.RequestBody -import okhttp3.ResponseBody -import okhttp3.MultipartBody - -import org.openapitools.client.models.ApiResponse -import org.openapitools.client.models.Pet - -interface PetApi { - @POST("/pet") - fun addPet(@Body body: Pet): Call<Unit> - - @DELETE("/pet/{petId}") - fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Call<Unit> - - @GET("/pet/findByStatus") - fun findPetsByStatus(@Query("status") status: CSVParams): Call<kotlin.Array<Pet>> - - @Deprecated("This api was deprecated") - @GET("/pet/findByTags") - fun findPetsByTags(@Query("tags") tags: CSVParams): Call<kotlin.Array<Pet>> - - @GET("/pet/{petId}") - fun getPetById(@Path("petId") petId: kotlin.Long): Call<Pet> - - @PUT("/pet") - fun updatePet(@Body body: Pet): Call<Unit> - - @FormUrlEncoded - @POST("/pet/{petId}") - fun updatePetWithForm(@Path("petId") petId: kotlin.Long, @Field("name") name: kotlin.String, @Field("status") status: kotlin.String): Call<Unit> - - @Multipart - @POST("/pet/{petId}/uploadImage") - fun uploadFile(@Path("petId") petId: kotlin.Long, @Part("additionalMetadata") additionalMetadata: kotlin.String, @Part file: MultipartBody.Part ): Call<ApiResponse> - -} diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt deleted file mode 100644 index cb0d5b8fa1b..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Call -import okhttp3.RequestBody -import okhttp3.ResponseBody -import okhttp3.MultipartBody - -import org.openapitools.client.models.Order - -interface StoreApi { - @DELETE("/store/order/{orderId}") - fun deleteOrder(@Path("orderId") orderId: kotlin.String): Call<Unit> - - @GET("/store/inventory") - fun getInventory(): Call<kotlin.collections.Map<kotlin.String, kotlin.Int>> - - @GET("/store/order/{orderId}") - fun getOrderById(@Path("orderId") orderId: kotlin.Long): Call<Order> - - @POST("/store/order") - fun placeOrder(@Body body: Order): Call<Order> - -} diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt deleted file mode 100644 index 84a6cd43e5e..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ /dev/null @@ -1,37 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Call -import okhttp3.RequestBody -import okhttp3.ResponseBody -import okhttp3.MultipartBody - -import org.openapitools.client.models.User - -interface UserApi { - @POST("/user") - fun createUser(@Body body: User): Call<Unit> - - @POST("/user/createWithArray") - fun createUsersWithArrayInput(@Body body: kotlin.Array<User>): Call<Unit> - - @POST("/user/createWithList") - fun createUsersWithListInput(@Body body: kotlin.Array<User>): Call<Unit> - - @DELETE("/user/{username}") - fun deleteUser(@Path("username") username: kotlin.String): Call<Unit> - - @GET("/user/{username}") - fun getUserByName(@Path("username") username: kotlin.String): Call<User> - - @GET("/user/login") - fun loginUser(@Query("username") username: kotlin.String, @Query("password") password: kotlin.String): Call<kotlin.String> - - @GET("/user/logout") - fun logoutUser(): Call<Unit> - - @PUT("/user/{username}") - fun updateUser(@Path("username") username: kotlin.String, @Body body: User): Call<Unit> - -} diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt deleted file mode 100644 index b539fda7438..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ /dev/null @@ -1,33 +0,0 @@ -package org.openapitools.client.infrastructure - -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.scalars.ScalarsConverterFactory -import retrofit2.converter.moshi.MoshiConverterFactory - -class ApiClient( - private var baseUrl: String = "http://petstore.swagger.io/v2", - private var okHttpClient: OkHttpClient -) { - init { - normalizeBaseUrl() - } - - val retrofitBuilder: Retrofit.Builder by lazy { - - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(okHttpClient).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-string/README.md b/samples/client/petstore/kotlin-string/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin-string/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin-string/pom.xml b/samples/client/petstore/kotlin-string/pom.xml deleted file mode 100644 index a8d5f88f257..00000000000 --- a/samples/client/petstore/kotlin-string/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>org.openapitools</groupId> - <artifactId>KotlinPetstoreStringTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>kotlin-string</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt b/samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt deleted file mode 100644 index e410c780b27..00000000000 --- a/samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt +++ /dev/null @@ -1,104 +0,0 @@ -package org.openapitools.client - -import io.kotlintest.shouldBe -import io.kotlintest.matchers.numerics.shouldBeGreaterThan -import io.kotlintest.matchers.string.shouldContain -import io.kotlintest.shouldThrow -import io.kotlintest.specs.ShouldSpec -import org.openapitools.client.apis.PetApi -import org.openapitools.client.infrastructure.ClientException -import org.openapitools.client.models.Category -import org.openapitools.client.models.Pet -import org.openapitools.client.models.Tag - -class PetApiTest : ShouldSpec() { - init { - - val petId:Long = 10006 - val api = PetApi() - - should("add a pet") { - - val pet = Pet( - id = petId, - name = "kotlin client test", - photoUrls = arrayOf("http://test_kotlin_unit_test.com"), - category = Category(petId, "test kotlin category"), - tags = arrayOf(Tag(petId, "test kotlin tag")) - ) - api.addPet(pet) - - } - - should("get pet by id") { - val result = api.getPetById(petId) - - result.id shouldBe (petId) - result.name shouldBe ("kotlin client test") - result.photoUrls[0] shouldBe ("http://test_kotlin_unit_test.com") - result.category!!.id shouldBe (petId) - result.category!!.name shouldBe ("test kotlin category") - result.tags!![0].id shouldBe (petId) - result.tags!![0].name shouldBe ("test kotlin tag") - - } - - should("find pet by status") { - val result = api.findPetsByStatus(arrayOf("available")) - - result.size.shouldBeGreaterThan(0) - - for(onePet in result) { - onePet.status.shouldBe(Pet.Status.available) - } - - val result2 = api.findPetsByStatus(arrayOf("unknown_and_incorrect_status")) - - result2.size.shouldBe(0) - - } - - should("update a pet") { - val pet = Pet( - id = petId, - name = "kotlin client updatePet", - status = Pet.Status.pending, - photoUrls = arrayOf("http://test_kotlin_unit_test.com") - ) - api.updatePet(pet) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet") - result.status shouldBe (Pet.Status.pending) - - } - - should("update a pet with form") { - val name = "kotlin client updatePet with Form" - val status = "pending" - - api.updatePetWithForm(petId, name, status) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet with Form") - result.status shouldBe (Pet.Status.pending) - - } - - should("delete a pet") { - api.deletePet("apiKey", petId) - - // verify updated Pet - val exception = shouldThrow<ClientException> { - api.getPetById(petId) - } - exception.message?.shouldContain("Pet not found") - } - - } - -} diff --git a/samples/client/petstore/kotlin-threetenbp/README.md b/samples/client/petstore/kotlin-threetenbp/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin-threetenbp/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin-threetenbp/pom.xml b/samples/client/petstore/kotlin-threetenbp/pom.xml deleted file mode 100644 index 7a670388889..00000000000 --- a/samples/client/petstore/kotlin-threetenbp/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>org.openapitools</groupId> - <artifactId>KotlinPetstoreThreetenbpTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>kotlin-threetenbp</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-threetenbp/src/test/kotlin/org/openapitools/client/PetApiTest.kt b/samples/client/petstore/kotlin-threetenbp/src/test/kotlin/org/openapitools/client/PetApiTest.kt deleted file mode 100644 index d1c20493bcc..00000000000 --- a/samples/client/petstore/kotlin-threetenbp/src/test/kotlin/org/openapitools/client/PetApiTest.kt +++ /dev/null @@ -1,104 +0,0 @@ -package org.openapitools.client - -import io.kotlintest.shouldBe -import io.kotlintest.matchers.numerics.shouldBeGreaterThan -import io.kotlintest.matchers.string.shouldContain -import io.kotlintest.shouldThrow -import io.kotlintest.specs.ShouldSpec -import org.openapitools.client.apis.PetApi -import org.openapitools.client.infrastructure.ClientException -import org.openapitools.client.models.Category -import org.openapitools.client.models.Pet -import org.openapitools.client.models.Tag - -class PetApiTest : ShouldSpec() { - init { - - val petId:Long = 10006 - val api = PetApi() - - should("add a pet") { - - val pet = Pet( - id = petId, - name = "kotlin client test", - photoUrls = arrayOf("http://test_kotlin_unit_test.com"), - category = Category(petId, "test kotlin category"), - tags = arrayOf(Tag(petId, "test kotlin tag")) - ) - api.addPet(pet) - - } - - should("get pet by id") { - val result = api.getPetById(petId) - - result.id shouldBe (petId) - result.name shouldBe ("kotlin client test") - result.photoUrls[0] shouldBe ("http://test_kotlin_unit_test.com") - result.category!!.id shouldBe (petId) - result.category!!.name shouldBe ("test kotlin category") - result.tags!![0].id shouldBe (petId) - result.tags!![0].name shouldBe ("test kotlin tag") - - } - - should("find pet by status") { - val result = api.findPetsByStatus(arrayOf("available")) - - result.size.shouldBeGreaterThan(0) - - for(onePet in result) { - onePet.status.shouldBe(Pet.Status.available) - } - - val result2 = api.findPetsByStatus(arrayOf("unknown_and_incorrect_status")) - - result2.size.shouldBe(0) - - } - - should("update a pet") { - val pet = Pet( - id = petId, - name = "kotlin client updatePet", - status = Pet.Status.pending, - photoUrls = arrayOf("http://test_kotlin_unit_test.com") - ) - api.updatePet(pet) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet") - result.status shouldBe (Pet.Status.pending) - - } - - should("update a pet with form") { - val name = "kotlin client updatePet with Form" - val status = "pending" - - api.updatePetWithForm(petId, name, status) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet with Form") - result.status shouldBe (Pet.Status.pending) - - } - - should("delete a pet") { - api.deletePet(petId, "apiKey") - - // verify updated Pet - val exception = shouldThrow<ClientException> { - api.getPetById(petId) - } - exception.message?.shouldContain("Pet not found") - } - - } - -} diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION deleted file mode 100644 index 58592f031f6..00000000000 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/.gitignore b/samples/client/petstore/kotlin/.gitignore deleted file mode 100644 index 2983e3c1db3..00000000000 --- a/samples/client/petstore/kotlin/.gitignore +++ /dev/null @@ -1,106 +0,0 @@ -./bin/ -# Created by https://www.gitignore.io/api/java,intellij,gradle - -### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### Intellij Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -.idea/sonarlint - -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Gradle ### -.gradle -/build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Cache of project -.gradletasknamecache - -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties - -# End of https://www.gitignore.io/api/java,intellij,gradle diff --git a/samples/client/petstore/kotlin/README.md b/samples/client/petstore/kotlin/README.md deleted file mode 100644 index aef4ea15bee..00000000000 --- a/samples/client/petstore/kotlin/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.41 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/PetApi.kt deleted file mode 100644 index 72d24c820e7..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/PetApi.kt +++ /dev/null @@ -1,278 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* OpenAPI spec version: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.apis - -import org.openapitools.client.models.ApiResponse -import org.openapitools.client.models.Pet - -import org.openapitools.client.infrastructure.* - -class PetApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { - - /** - * Add a new pet to the store - * - * @param body Pet object that needs to be added to the store - * @return void - */ - fun addPet(body: Pet) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/pet", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Deletes a pet - * - * @param petId Pet id to delete - * @param apiKey (optional, default to null) - * @return void - */ - fun deletePet(petId: kotlin.Long, apiKey: kotlin.String) : Unit { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf("api_key" to apiKey.toString()) - val localVariableConfig = RequestConfig( - RequestMethod.DELETE, - "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Finds Pets by status - * Multiple status values can be provided with comma separated strings - * @param status Status values that need to be considered for filter - * @return kotlin.Array<Pet> - */ - @Suppress("UNCHECKED_CAST") - fun findPetsByStatus(status: kotlin.Array<kotlin.String>) : kotlin.Array<Pet> { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf("status" to toMultiValue(status.toList(), "csv")) - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/pet/findByStatus", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<kotlin.Array<Pet>>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as kotlin.Array<Pet> - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Finds Pets by tags - * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - * @param tags Tags to filter by - * @return kotlin.Array<Pet> - */ - @Suppress("UNCHECKED_CAST") - fun findPetsByTags(tags: kotlin.Array<kotlin.String>) : kotlin.Array<Pet> { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf("tags" to toMultiValue(tags.toList(), "csv")) - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/pet/findByTags", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<kotlin.Array<Pet>>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as kotlin.Array<Pet> - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Find pet by ID - * Returns a single pet - * @param petId ID of pet to return - * @return Pet - */ - @Suppress("UNCHECKED_CAST") - fun getPetById(petId: kotlin.Long) : Pet { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Pet>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as Pet - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Update an existing pet - * - * @param body Pet object that needs to be added to the store - * @return void - */ - fun updatePet(body: Pet) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.PUT, - "/pet", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Updates a pet in the store with form data - * - * @param petId ID of pet that needs to be updated - * @param name Updated name of the pet (optional, default to null) - * @param status Updated status of the pet (optional, default to null) - * @return void - */ - fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String, status: kotlin.String) : Unit { - val localVariableBody: kotlin.Any? = mapOf("name" to "$name", "status" to "$status") - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf("Content-Type" to "multipart/form-data") - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * uploads an image - * - * @param petId ID of pet to update - * @param additionalMetadata Additional data to pass to server (optional, default to null) - * @param file file to upload (optional, default to null) - * @return ApiResponse - */ - @Suppress("UNCHECKED_CAST") - fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String, file: java.io.File) : ApiResponse { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to "$additionalMetadata", "file" to "$file") - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf("Content-Type" to "multipart/form-data") - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<ApiResponse>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as ApiResponse - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - -} diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/StoreApi.kt deleted file mode 100644 index 48ecd493a1e..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/StoreApi.kt +++ /dev/null @@ -1,146 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* OpenAPI spec version: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.apis - -import org.openapitools.client.models.Order - -import org.openapitools.client.infrastructure.* - -class StoreApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { - - /** - * Delete purchase order by ID - * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - * @param orderId ID of the order that needs to be deleted - * @return void - */ - fun deleteOrder(orderId: kotlin.String) : Unit { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.DELETE, - "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational reponses.") - ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Rediration responses.") - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Returns pet inventories by status - * Returns a map of status codes to quantities - * @return kotlin.collections.Map<kotlin.String, kotlin.Int> - */ - @Suppress("UNCHECKED_CAST") - fun getInventory() : kotlin.collections.Map<kotlin.String, kotlin.Int> { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/store/inventory", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<kotlin.collections.Map<kotlin.String, kotlin.Int>>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as kotlin.collections.Map<kotlin.String, kotlin.Int> - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Find purchase order by ID - * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - * @param orderId ID of pet that needs to be fetched - * @return Order - */ - @Suppress("UNCHECKED_CAST") - fun getOrderById(orderId: kotlin.Long) : Order { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Order>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as Order - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Place an order for a pet - * - * @param body order placed for purchasing the pet - * @return Order - */ - @Suppress("UNCHECKED_CAST") - fun placeOrder(body: Order) : Order { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/store/order", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Order>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as Order - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - -} diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/UserApi.kt deleted file mode 100644 index 130def3847f..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/apis/UserApi.kt +++ /dev/null @@ -1,271 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* OpenAPI spec version: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.apis - -import org.openapitools.client.models.User - -import org.openapitools.client.infrastructure.* - -class UserApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { - - /** - * Create user - * This can only be done by the logged in user. - * @param body Created user object - * @return void - */ - fun createUser(body: User) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/user", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Creates list of users with given input array - * - * @param body List of user object - * @return void - */ - fun createUsersWithArrayInput(body: kotlin.Array<User>) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/user/createWithArray", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Creates list of users with given input array - * - * @param body List of user object - * @return void - */ - fun createUsersWithListInput(body: kotlin.Array<User>) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.POST, - "/user/createWithList", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Delete user - * This can only be done by the logged in user. - * @param username The name that needs to be deleted - * @return void - */ - fun deleteUser(username: kotlin.String) : Unit { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.DELETE, - "/user/{username}".replace("{"+"username"+"}", "$username"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Get user by user name - * - * @param username The name that needs to be fetched. Use user1 for testing. - * @return User - */ - @Suppress("UNCHECKED_CAST") - fun getUserByName(username: kotlin.String) : User { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/user/{username}".replace("{"+"username"+"}", "$username"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<User>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as User - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Logs user into the system - * - * @param username The user name for login - * @param password The password for login in clear text - * @return kotlin.String - */ - @Suppress("UNCHECKED_CAST") - fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf("username" to listOf("$username"), "password" to listOf("$password")) - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/user/login", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<kotlin.String>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> (response as Success<*>).data as kotlin.String - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Logs out current logged in user session - * - * @return void - */ - fun logoutUser() : Unit { - val localVariableBody: kotlin.Any? = null - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.GET, - "/user/logout", - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - - /** - * Updated user - * This can only be done by the logged in user. - * @param username name that need to be deleted - * @param body Updated user object - * @return void - */ - fun updateUser(username: kotlin.String, body: User) : Unit { - val localVariableBody: kotlin.Any? = body - val localVariableQuery: MultiValueMap = mapOf() - val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf() - val localVariableConfig = RequestConfig( - RequestMethod.PUT, - "/user/{username}".replace("{"+"username"+"}", "$username"), - query = localVariableQuery, - headers = localVariableHeaders - ) - val response = request<Any?>( - localVariableConfig, - localVariableBody - ) - - return when (response.responseType) { - ResponseType.Success -> Unit - ResponseType.Informational -> TODO() - ResponseType.Redirection -> TODO() - ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error") - ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error") - else -> throw kotlin.IllegalStateException("Undefined ResponseType.") - } - } - -} diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiAbstractions.kt deleted file mode 100644 index c2c3f1f0eae..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiAbstractions.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapitools.client.infrastructure - -typealias MultiValueMap = Map<String,List<String>> - -fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) { - "csv" -> "," - "tsv" -> "\t" - "pipes" -> "|" - "ssv" -> " " - else -> "" -} - -val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" } - -fun <T: Any?> toMultiValue(items: List<T>, collectionFormat: String, map: (item: Any?) -> String = defaultMultiValueConverter): List<String> { - return when(collectionFormat) { - "multi" -> items.map(map) - else -> listOf(items.map(map).joinToString(separator = collectionDelimiter(collectionFormat))) - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiClient.kt deleted file mode 100644 index 9e79028a90b..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiClient.kt +++ /dev/null @@ -1,141 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.Moshi -import com.squareup.moshi.ToJson -import okhttp3.* -import java.io.File -import java.util.* - -open class ApiClient(val baseUrl: String) { - companion object { - protected const val ContentType = "Content-Type" - protected const val Accept = "Accept" - protected const val JsonMediaType = "application/json" - protected const val FormDataMediaType = "multipart/form-data" - protected const val XmlMediaType = "application/xml" - - @JvmStatic - val client by lazy { - builder.build() - } - - @JvmStatic - val builder: OkHttpClient.Builder = OkHttpClient.Builder() - - @JvmStatic - var defaultHeaders: Map<String, String> by ApplicationDelegates.setOnce(mapOf(ContentType to JsonMediaType, Accept to JsonMediaType)) - - @JvmStatic - val jsonHeaders: Map<String, String> = mapOf(ContentType to JsonMediaType, Accept to JsonMediaType) - } - - protected inline fun <reified T> requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = - when { - content is File -> RequestBody.create( - MediaType.parse(mediaType), content - ) - mediaType == FormDataMediaType -> { - var builder = FormBody.Builder() - // content's type *must* be Map<String, Any> - @Suppress("UNCHECKED_CAST") - (content as Map<String,String>).forEach { key, value -> - builder = builder.add(key, value) - } - builder.build() - } - mediaType == JsonMediaType -> RequestBody.create( - MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content) - ) - mediaType == XmlMediaType -> TODO("xml not currently supported.") - // TODO: this should be extended with other serializers - else -> TODO("requestBody currently only supports JSON body and File body.") - } - - protected inline fun <reified T: Any?> responseBody(body: ResponseBody?, mediaType: String = JsonMediaType): T? { - if(body == null) return null - return when(mediaType) { - JsonMediaType -> Moshi.Builder().add(object { - @ToJson - fun toJson(uuid: UUID) = uuid.toString() - @FromJson - fun fromJson(s: String) = UUID.fromString(s) - }) - .add(ByteArrayAdapter()) - .build().adapter(T::class.java).fromJson(body.source()) - else -> TODO() - } - } - - protected inline fun <reified T: Any?> request(requestConfig: RequestConfig, body : Any? = null): ApiInfrastructureResponse<T?> { - val httpUrl = HttpUrl.parse(baseUrl) ?: throw IllegalStateException("baseUrl is invalid.") - - var urlBuilder = httpUrl.newBuilder() - .addPathSegments(requestConfig.path.trimStart('/')) - - requestConfig.query.forEach { query -> - query.value.forEach { queryValue -> - urlBuilder = urlBuilder.addQueryParameter(query.key, queryValue) - } - } - - val url = urlBuilder.build() - val headers = requestConfig.headers + defaultHeaders - - if(headers[ContentType] ?: "" == "") { - throw kotlin.IllegalStateException("Missing Content-Type header. This is required.") - } - - if(headers[Accept] ?: "" == "") { - throw kotlin.IllegalStateException("Missing Accept header. This is required.") - } - - // TODO: support multiple contentType,accept options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() - val accept = (headers[Accept] as String).substringBefore(";").toLowerCase() - - var request : Request.Builder = when (requestConfig.method) { - RequestMethod.DELETE -> Request.Builder().url(url).delete() - RequestMethod.GET -> Request.Builder().url(url) - RequestMethod.HEAD -> Request.Builder().url(url).head() - RequestMethod.PATCH -> Request.Builder().url(url).patch(requestBody(body, contentType)) - RequestMethod.PUT -> Request.Builder().url(url).put(requestBody(body, contentType)) - RequestMethod.POST -> Request.Builder().url(url).post(requestBody(body, contentType)) - RequestMethod.OPTIONS -> Request.Builder().url(url).method("OPTIONS", null) - } - - headers.forEach { header -> request = request.addHeader(header.key, header.value) } - - val realRequest = request.build() - val response = client.newCall(realRequest).execute() - - // TODO: handle specific mapping types. e.g. Map<int, Class<?>> - when { - response.isRedirect -> return Redirection( - response.code(), - response.headers().toMultimap() - ) - response.isInformational -> return Informational( - response.message(), - response.code(), - response.headers().toMultimap() - ) - response.isSuccessful -> return Success( - responseBody(response.body(), accept), - response.code(), - response.headers().toMultimap() - ) - response.isClientError -> return ClientError( - response.body()?.string(), - response.code(), - response.headers().toMultimap() - ) - else -> return ServerError( - null, - response.body()?.string(), - response.code(), - response.headers().toMultimap() - ) - } - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt deleted file mode 100644 index f1a8aecc914..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt +++ /dev/null @@ -1,40 +0,0 @@ -package org.openapitools.client.infrastructure - -enum class ResponseType { - Success, Informational, Redirection, ClientError, ServerError -} - -abstract class ApiInfrastructureResponse<T>(val responseType: ResponseType) { - abstract val statusCode: Int - abstract val headers: Map<String,List<String>> -} - -class Success<T>( - val data: T, - override val statusCode: Int = -1, - override val headers: Map<String, List<String>> = mapOf() -): ApiInfrastructureResponse<T>(ResponseType.Success) - -class Informational<T>( - val statusText: String, - override val statusCode: Int = -1, - override val headers: Map<String, List<String>> = mapOf() -) : ApiInfrastructureResponse<T>(ResponseType.Informational) - -class Redirection<T>( - override val statusCode: Int = -1, - override val headers: Map<String, List<String>> = mapOf() -) : ApiInfrastructureResponse<T>(ResponseType.Redirection) - -class ClientError<T>( - val body: Any? = null, - override val statusCode: Int = -1, - override val headers: Map<String, List<String>> = mapOf() -) : ApiInfrastructureResponse<T>(ResponseType.ClientError) - -class ServerError<T>( - val message: String? = null, - val body: Any? = null, - override val statusCode: Int = -1, - override val headers: Map<String, List<String>> -): ApiInfrastructureResponse<T>(ResponseType.ServerError) \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Errors.kt deleted file mode 100644 index 2f3b0157ba7..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Errors.kt +++ /dev/null @@ -1,42 +0,0 @@ -@file:Suppress("unused") -package org.openapitools.client.infrastructure - -import java.lang.RuntimeException - -open class ClientException : RuntimeException { - - /** - * Constructs an [ClientException] with no detail message. - */ - constructor() : super() - - /** - * Constructs an [ClientException] with the specified detail message. - - * @param message the detail message. - */ - constructor(message: kotlin.String) : super(message) - - companion object { - private const val serialVersionUID: Long = 123L - } -} - -open class ServerException : RuntimeException { - - /** - * Constructs an [ServerException] with no detail message. - */ - constructor() : super() - - /** - * Constructs an [ServerException] with the specified detail message. - - * @param message the detail message. - */ - constructor(message: kotlin.String) : super(message) - - companion object { - private const val serialVersionUID: Long = 456L - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestConfig.kt deleted file mode 100644 index 86e2dadf9a8..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestConfig.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.openapitools.client.infrastructure - -/** - * Defines a config object for a given request. - * NOTE: This object doesn't include 'body' because it - * allows for caching of the constructed object - * for many request definitions. - * NOTE: Headers is a Map<String,String> because rfc2616 defines - * multi-valued headers as csv-only. - */ -data class RequestConfig( - val method: RequestMethod, - val path: String, - val headers: Map<String, String> = mapOf(), - val query: Map<String, List<String>> = mapOf() -) \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ResponseExtensions.kt deleted file mode 100644 index f50104a6f35..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ResponseExtensions.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.openapitools.client.infrastructure - -import okhttp3.Response - -/** - * Provides an extension to evaluation whether the response is a 1xx code - */ -val Response.isInformational : Boolean get() = this.code() in 100..199 - -/** - * Provides an extension to evaluation whether the response is a 3xx code - */ -val Response.isRedirect : Boolean get() = this.code() in 300..399 - -/** - * Provides an extension to evaluation whether the response is a 4xx code - */ -val Response.isClientError : Boolean get() = this.code() in 400..499 - -/** - * Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code - */ -val Response.isServerError : Boolean get() = this.code() in 500..999 \ No newline at end of file diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Serializer.kt deleted file mode 100644 index cf3fe8203d5..00000000000 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/Serializer.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.KotlinJsonAdapterFactory -import com.squareup.moshi.Moshi -import com.squareup.moshi.Rfc3339DateJsonAdapter -import java.util.* - -object Serializer { - @JvmStatic - val moshi: Moshi = Moshi.Builder() - .add(KotlinJsonAdapterFactory()) - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .build() -} diff --git a/samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 87b738cbd051603d91cc39de6cb000dd98fe6b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55190 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 diff --git a/samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 7dc503f149d..00000000000 --- a/samples/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/samples/client/petstore/kotlin/gradlew b/samples/client/petstore/kotlin/gradlew deleted file mode 100755 index 4453ccea33d..00000000000 --- a/samples/client/petstore/kotlin/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/kotlin/gradlew.bat b/samples/client/petstore/kotlin/gradlew.bat deleted file mode 100644 index e95643d6a2c..00000000000 --- a/samples/client/petstore/kotlin/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator-ignore b/samples/client/petstore/kotlin/gson/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-gson/.openapi-generator-ignore rename to samples/client/petstore/kotlin/gson/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin/gson/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-gson/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/gson/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-gson/README.md b/samples/client/petstore/kotlin/gson/README.md similarity index 99% rename from samples/client/petstore/kotlin-gson/README.md rename to samples/client/petstore/kotlin/gson/README.md index aef4ea15bee..8166d4aadba 100644 --- a/samples/client/petstore/kotlin-gson/README.md +++ b/samples/client/petstore/kotlin/gson/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-gson/build.gradle b/samples/client/petstore/kotlin/gson/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-gson/build.gradle rename to samples/client/petstore/kotlin/gson/build.gradle diff --git a/samples/client/petstore/kotlin-gson/docs/ApiResponse.md b/samples/client/petstore/kotlin/gson/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/ApiResponse.md rename to samples/client/petstore/kotlin/gson/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-gson/docs/Category.md b/samples/client/petstore/kotlin/gson/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/Category.md rename to samples/client/petstore/kotlin/gson/docs/Category.md diff --git a/samples/client/petstore/kotlin-gson/docs/Order.md b/samples/client/petstore/kotlin/gson/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/Order.md rename to samples/client/petstore/kotlin/gson/docs/Order.md diff --git a/samples/client/petstore/kotlin-gson/docs/Pet.md b/samples/client/petstore/kotlin/gson/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/Pet.md rename to samples/client/petstore/kotlin/gson/docs/Pet.md diff --git a/samples/client/petstore/kotlin-gson/docs/PetApi.md b/samples/client/petstore/kotlin/gson/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/PetApi.md rename to samples/client/petstore/kotlin/gson/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-gson/docs/StoreApi.md b/samples/client/petstore/kotlin/gson/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/StoreApi.md rename to samples/client/petstore/kotlin/gson/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-gson/docs/Tag.md b/samples/client/petstore/kotlin/gson/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/Tag.md rename to samples/client/petstore/kotlin/gson/docs/Tag.md diff --git a/samples/client/petstore/kotlin-gson/docs/User.md b/samples/client/petstore/kotlin/gson/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/User.md rename to samples/client/petstore/kotlin/gson/docs/User.md diff --git a/samples/client/petstore/kotlin-gson/docs/UserApi.md b/samples/client/petstore/kotlin/gson/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-gson/docs/UserApi.md rename to samples/client/petstore/kotlin/gson/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-gson/settings.gradle b/samples/client/petstore/kotlin/gson/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-gson/settings.gradle rename to samples/client/petstore/kotlin/gson/settings.gradle diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator-ignore b/samples/client/petstore/kotlin/jackson/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-jackson/.openapi-generator-ignore rename to samples/client/petstore/kotlin/jackson/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION b/samples/client/petstore/kotlin/jackson/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/jackson/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-nonpublic/README.md b/samples/client/petstore/kotlin/jackson/README.md similarity index 99% rename from samples/client/petstore/kotlin-nonpublic/README.md rename to samples/client/petstore/kotlin/jackson/README.md index aef4ea15bee..8166d4aadba 100644 --- a/samples/client/petstore/kotlin-nonpublic/README.md +++ b/samples/client/petstore/kotlin/jackson/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-jackson/build.gradle b/samples/client/petstore/kotlin/jackson/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-jackson/build.gradle rename to samples/client/petstore/kotlin/jackson/build.gradle diff --git a/samples/client/petstore/kotlin-jackson/docs/ApiResponse.md b/samples/client/petstore/kotlin/jackson/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/ApiResponse.md rename to samples/client/petstore/kotlin/jackson/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-jackson/docs/Category.md b/samples/client/petstore/kotlin/jackson/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/Category.md rename to samples/client/petstore/kotlin/jackson/docs/Category.md diff --git a/samples/client/petstore/kotlin-jackson/docs/Order.md b/samples/client/petstore/kotlin/jackson/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/Order.md rename to samples/client/petstore/kotlin/jackson/docs/Order.md diff --git a/samples/client/petstore/kotlin-jackson/docs/Pet.md b/samples/client/petstore/kotlin/jackson/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/Pet.md rename to samples/client/petstore/kotlin/jackson/docs/Pet.md diff --git a/samples/client/petstore/kotlin-jackson/docs/PetApi.md b/samples/client/petstore/kotlin/jackson/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/PetApi.md rename to samples/client/petstore/kotlin/jackson/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-jackson/docs/StoreApi.md b/samples/client/petstore/kotlin/jackson/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/StoreApi.md rename to samples/client/petstore/kotlin/jackson/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-jackson/docs/Tag.md b/samples/client/petstore/kotlin/jackson/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/Tag.md rename to samples/client/petstore/kotlin/jackson/docs/Tag.md diff --git a/samples/client/petstore/kotlin-jackson/docs/User.md b/samples/client/petstore/kotlin/jackson/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/User.md rename to samples/client/petstore/kotlin/jackson/docs/User.md diff --git a/samples/client/petstore/kotlin-jackson/docs/UserApi.md b/samples/client/petstore/kotlin/jackson/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-jackson/docs/UserApi.md rename to samples/client/petstore/kotlin/jackson/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-jackson/settings.gradle b/samples/client/petstore/kotlin/jackson/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-jackson/settings.gradle rename to samples/client/petstore/kotlin/jackson/settings.gradle diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator-ignore b/samples/client/petstore/kotlin/json-request-string/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/.openapi-generator-ignore rename to samples/client/petstore/kotlin/json-request-string/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin/json-request-string/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/json-request-string/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-json-request-string/README.md b/samples/client/petstore/kotlin/json-request-string/README.md similarity index 99% rename from samples/client/petstore/kotlin-json-request-string/README.md rename to samples/client/petstore/kotlin/json-request-string/README.md index 9e9c5a2326b..971d17b1e24 100644 --- a/samples/client/petstore/kotlin-json-request-string/README.md +++ b/samples/client/petstore/kotlin/json-request-string/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin/json-request-string/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/build.gradle rename to samples/client/petstore/kotlin/json-request-string/build.gradle diff --git a/samples/client/petstore/kotlin-json-request-string/docs/ApiResponse.md b/samples/client/petstore/kotlin/json-request-string/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/ApiResponse.md rename to samples/client/petstore/kotlin/json-request-string/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/Category.md b/samples/client/petstore/kotlin/json-request-string/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/Category.md rename to samples/client/petstore/kotlin/json-request-string/docs/Category.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/Order.md b/samples/client/petstore/kotlin/json-request-string/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/Order.md rename to samples/client/petstore/kotlin/json-request-string/docs/Order.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/Pet.md b/samples/client/petstore/kotlin/json-request-string/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/Pet.md rename to samples/client/petstore/kotlin/json-request-string/docs/Pet.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/PetApi.md b/samples/client/petstore/kotlin/json-request-string/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/PetApi.md rename to samples/client/petstore/kotlin/json-request-string/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/StoreApi.md b/samples/client/petstore/kotlin/json-request-string/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/StoreApi.md rename to samples/client/petstore/kotlin/json-request-string/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/Tag.md b/samples/client/petstore/kotlin/json-request-string/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/Tag.md rename to samples/client/petstore/kotlin/json-request-string/docs/Tag.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/User.md b/samples/client/petstore/kotlin/json-request-string/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/User.md rename to samples/client/petstore/kotlin/json-request-string/docs/User.md diff --git a/samples/client/petstore/kotlin-json-request-string/docs/UserApi.md b/samples/client/petstore/kotlin/json-request-string/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/docs/UserApi.md rename to samples/client/petstore/kotlin/json-request-string/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-json-request-string/settings.gradle b/samples/client/petstore/kotlin/json-request-string/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/settings.gradle rename to samples/client/petstore/kotlin/json-request-string/settings.gradle diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator-ignore b/samples/client/petstore/kotlin/moshi-codegen/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/.openapi-generator-ignore rename to samples/client/petstore/kotlin/moshi-codegen/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION b/samples/client/petstore/kotlin/moshi-codegen/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/moshi-codegen/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-jackson/README.md b/samples/client/petstore/kotlin/moshi-codegen/README.md similarity index 99% rename from samples/client/petstore/kotlin-jackson/README.md rename to samples/client/petstore/kotlin/moshi-codegen/README.md index aef4ea15bee..8166d4aadba 100644 --- a/samples/client/petstore/kotlin-jackson/README.md +++ b/samples/client/petstore/kotlin/moshi-codegen/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-moshi-codegen/build.gradle b/samples/client/petstore/kotlin/moshi-codegen/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/build.gradle rename to samples/client/petstore/kotlin/moshi-codegen/build.gradle diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/ApiResponse.md b/samples/client/petstore/kotlin/moshi-codegen/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/ApiResponse.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/Category.md b/samples/client/petstore/kotlin/moshi-codegen/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/Category.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/Category.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/Order.md b/samples/client/petstore/kotlin/moshi-codegen/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/Order.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/Order.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/Pet.md b/samples/client/petstore/kotlin/moshi-codegen/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/Pet.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/Pet.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/PetApi.md b/samples/client/petstore/kotlin/moshi-codegen/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/PetApi.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/StoreApi.md b/samples/client/petstore/kotlin/moshi-codegen/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/StoreApi.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/Tag.md b/samples/client/petstore/kotlin/moshi-codegen/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/Tag.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/Tag.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/User.md b/samples/client/petstore/kotlin/moshi-codegen/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/User.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/User.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/docs/UserApi.md b/samples/client/petstore/kotlin/moshi-codegen/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/docs/UserApi.md rename to samples/client/petstore/kotlin/moshi-codegen/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-moshi-codegen/settings.gradle b/samples/client/petstore/kotlin/moshi-codegen/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/settings.gradle rename to samples/client/petstore/kotlin/moshi-codegen/settings.gradle diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator-ignore b/samples/client/petstore/kotlin/multiplatform/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/.openapi-generator-ignore rename to samples/client/petstore/kotlin/multiplatform/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION b/samples/client/petstore/kotlin/multiplatform/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/multiplatform/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-multiplatform/README.md b/samples/client/petstore/kotlin/multiplatform/README.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/README.md rename to samples/client/petstore/kotlin/multiplatform/README.md diff --git a/samples/client/petstore/kotlin-multiplatform/build.gradle b/samples/client/petstore/kotlin/multiplatform/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/build.gradle rename to samples/client/petstore/kotlin/multiplatform/build.gradle diff --git a/samples/client/petstore/kotlin-multiplatform/docs/ApiResponse.md b/samples/client/petstore/kotlin/multiplatform/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/ApiResponse.md rename to samples/client/petstore/kotlin/multiplatform/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/Category.md b/samples/client/petstore/kotlin/multiplatform/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/Category.md rename to samples/client/petstore/kotlin/multiplatform/docs/Category.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/Order.md b/samples/client/petstore/kotlin/multiplatform/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/Order.md rename to samples/client/petstore/kotlin/multiplatform/docs/Order.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/Pet.md b/samples/client/petstore/kotlin/multiplatform/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/Pet.md rename to samples/client/petstore/kotlin/multiplatform/docs/Pet.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/PetApi.md b/samples/client/petstore/kotlin/multiplatform/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/PetApi.md rename to samples/client/petstore/kotlin/multiplatform/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/StoreApi.md b/samples/client/petstore/kotlin/multiplatform/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/StoreApi.md rename to samples/client/petstore/kotlin/multiplatform/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/Tag.md b/samples/client/petstore/kotlin/multiplatform/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/Tag.md rename to samples/client/petstore/kotlin/multiplatform/docs/Tag.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/User.md b/samples/client/petstore/kotlin/multiplatform/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/User.md rename to samples/client/petstore/kotlin/multiplatform/docs/User.md diff --git a/samples/client/petstore/kotlin-multiplatform/docs/UserApi.md b/samples/client/petstore/kotlin/multiplatform/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/docs/UserApi.md rename to samples/client/petstore/kotlin/multiplatform/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin/multiplatform/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.jar rename to samples/client/petstore/kotlin/multiplatform/gradle/wrapper/gradle-wrapper.jar diff --git a/samples/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin/multiplatform/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties rename to samples/client/petstore/kotlin/multiplatform/gradle/wrapper/gradle-wrapper.properties diff --git a/samples/client/petstore/kotlin-multiplatform/gradlew b/samples/client/petstore/kotlin/multiplatform/gradlew similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/gradlew rename to samples/client/petstore/kotlin/multiplatform/gradlew diff --git a/samples/client/petstore/kotlin-multiplatform/gradlew.bat b/samples/client/petstore/kotlin/multiplatform/gradlew.bat similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/gradlew.bat rename to samples/client/petstore/kotlin/multiplatform/gradlew.bat diff --git a/samples/client/petstore/kotlin-multiplatform/settings.gradle b/samples/client/petstore/kotlin/multiplatform/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/settings.gradle rename to samples/client/petstore/kotlin/multiplatform/settings.gradle diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonTest/kotlin/util/Coroutine.kt b/samples/client/petstore/kotlin/multiplatform/src/commonTest/kotlin/util/Coroutine.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/commonTest/kotlin/util/Coroutine.kt rename to samples/client/petstore/kotlin/multiplatform/src/commonTest/kotlin/util/Coroutine.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/iosTest/kotlin/util/Coroutine.kt b/samples/client/petstore/kotlin/multiplatform/src/iosTest/kotlin/util/Coroutine.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/iosTest/kotlin/util/Coroutine.kt rename to samples/client/petstore/kotlin/multiplatform/src/iosTest/kotlin/util/Coroutine.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/jsTest/kotlin/util/Coroutine.kt b/samples/client/petstore/kotlin/multiplatform/src/jsTest/kotlin/util/Coroutine.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/jsTest/kotlin/util/Coroutine.kt rename to samples/client/petstore/kotlin/multiplatform/src/jsTest/kotlin/util/Coroutine.kt diff --git a/samples/client/petstore/kotlin-multiplatform/src/jvmTest/kotlin/util/Coroutine.kt b/samples/client/petstore/kotlin/multiplatform/src/jvmTest/kotlin/util/Coroutine.kt similarity index 100% rename from samples/client/petstore/kotlin-multiplatform/src/jvmTest/kotlin/util/Coroutine.kt rename to samples/client/petstore/kotlin/multiplatform/src/jvmTest/kotlin/util/Coroutine.kt diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator-ignore b/samples/client/petstore/kotlin/nonpublic/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/.openapi-generator-ignore rename to samples/client/petstore/kotlin/nonpublic/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION b/samples/client/petstore/kotlin/nonpublic/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/nonpublic/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin-moshi-codegen/README.md b/samples/client/petstore/kotlin/nonpublic/README.md similarity index 99% rename from samples/client/petstore/kotlin-moshi-codegen/README.md rename to samples/client/petstore/kotlin/nonpublic/README.md index aef4ea15bee..8166d4aadba 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/README.md +++ b/samples/client/petstore/kotlin/nonpublic/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-nonpublic/build.gradle b/samples/client/petstore/kotlin/nonpublic/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/build.gradle rename to samples/client/petstore/kotlin/nonpublic/build.gradle diff --git a/samples/client/petstore/kotlin-nonpublic/docs/ApiResponse.md b/samples/client/petstore/kotlin/nonpublic/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/ApiResponse.md rename to samples/client/petstore/kotlin/nonpublic/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/Category.md b/samples/client/petstore/kotlin/nonpublic/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/Category.md rename to samples/client/petstore/kotlin/nonpublic/docs/Category.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/Order.md b/samples/client/petstore/kotlin/nonpublic/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/Order.md rename to samples/client/petstore/kotlin/nonpublic/docs/Order.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/Pet.md b/samples/client/petstore/kotlin/nonpublic/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/Pet.md rename to samples/client/petstore/kotlin/nonpublic/docs/Pet.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/PetApi.md b/samples/client/petstore/kotlin/nonpublic/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/PetApi.md rename to samples/client/petstore/kotlin/nonpublic/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/StoreApi.md b/samples/client/petstore/kotlin/nonpublic/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/StoreApi.md rename to samples/client/petstore/kotlin/nonpublic/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/Tag.md b/samples/client/petstore/kotlin/nonpublic/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/Tag.md rename to samples/client/petstore/kotlin/nonpublic/docs/Tag.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/User.md b/samples/client/petstore/kotlin/nonpublic/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/User.md rename to samples/client/petstore/kotlin/nonpublic/docs/User.md diff --git a/samples/client/petstore/kotlin-nonpublic/docs/UserApi.md b/samples/client/petstore/kotlin/nonpublic/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/docs/UserApi.md rename to samples/client/petstore/kotlin/nonpublic/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-nonpublic/settings.gradle b/samples/client/petstore/kotlin/nonpublic/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/settings.gradle rename to samples/client/petstore/kotlin/nonpublic/settings.gradle diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator-ignore b/samples/client/petstore/kotlin/nullable/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-nullable/.openapi-generator-ignore rename to samples/client/petstore/kotlin/nullable/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION b/samples/client/petstore/kotlin/nullable/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/nullable/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/nullable/README.md b/samples/client/petstore/kotlin/nullable/README.md new file mode 100644 index 00000000000..8166d4aadba --- /dev/null +++ b/samples/client/petstore/kotlin/nullable/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin-nullable/build.gradle b/samples/client/petstore/kotlin/nullable/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-nullable/build.gradle rename to samples/client/petstore/kotlin/nullable/build.gradle diff --git a/samples/client/petstore/kotlin-nullable/docs/ApiResponse.md b/samples/client/petstore/kotlin/nullable/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/ApiResponse.md rename to samples/client/petstore/kotlin/nullable/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-nullable/docs/Category.md b/samples/client/petstore/kotlin/nullable/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/Category.md rename to samples/client/petstore/kotlin/nullable/docs/Category.md diff --git a/samples/client/petstore/kotlin-nullable/docs/Order.md b/samples/client/petstore/kotlin/nullable/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/Order.md rename to samples/client/petstore/kotlin/nullable/docs/Order.md diff --git a/samples/client/petstore/kotlin-nullable/docs/Pet.md b/samples/client/petstore/kotlin/nullable/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/Pet.md rename to samples/client/petstore/kotlin/nullable/docs/Pet.md diff --git a/samples/client/petstore/kotlin-nullable/docs/PetApi.md b/samples/client/petstore/kotlin/nullable/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/PetApi.md rename to samples/client/petstore/kotlin/nullable/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-nullable/docs/StoreApi.md b/samples/client/petstore/kotlin/nullable/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/StoreApi.md rename to samples/client/petstore/kotlin/nullable/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-nullable/docs/Tag.md b/samples/client/petstore/kotlin/nullable/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/Tag.md rename to samples/client/petstore/kotlin/nullable/docs/Tag.md diff --git a/samples/client/petstore/kotlin-nullable/docs/User.md b/samples/client/petstore/kotlin/nullable/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/User.md rename to samples/client/petstore/kotlin/nullable/docs/User.md diff --git a/samples/client/petstore/kotlin-nullable/docs/UserApi.md b/samples/client/petstore/kotlin/nullable/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-nullable/docs/UserApi.md rename to samples/client/petstore/kotlin/nullable/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-nullable/settings.gradle b/samples/client/petstore/kotlin/nullable/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-nullable/settings.gradle rename to samples/client/petstore/kotlin/nullable/settings.gradle diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator-ignore b/samples/client/petstore/kotlin/okhttp3/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/.openapi-generator-ignore rename to samples/client/petstore/kotlin/okhttp3/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION b/samples/client/petstore/kotlin/okhttp3/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/okhttp3/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/okhttp3/README.md b/samples/client/petstore/kotlin/okhttp3/README.md new file mode 100644 index 00000000000..8166d4aadba --- /dev/null +++ b/samples/client/petstore/kotlin/okhttp3/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin/okhttp3/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/build.gradle rename to samples/client/petstore/kotlin/okhttp3/build.gradle diff --git a/samples/client/petstore/kotlin-okhttp3/docs/ApiResponse.md b/samples/client/petstore/kotlin/okhttp3/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/ApiResponse.md rename to samples/client/petstore/kotlin/okhttp3/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/Category.md b/samples/client/petstore/kotlin/okhttp3/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/Category.md rename to samples/client/petstore/kotlin/okhttp3/docs/Category.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/Order.md b/samples/client/petstore/kotlin/okhttp3/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/Order.md rename to samples/client/petstore/kotlin/okhttp3/docs/Order.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/Pet.md b/samples/client/petstore/kotlin/okhttp3/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/Pet.md rename to samples/client/petstore/kotlin/okhttp3/docs/Pet.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/PetApi.md b/samples/client/petstore/kotlin/okhttp3/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/PetApi.md rename to samples/client/petstore/kotlin/okhttp3/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/StoreApi.md b/samples/client/petstore/kotlin/okhttp3/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/StoreApi.md rename to samples/client/petstore/kotlin/okhttp3/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/Tag.md b/samples/client/petstore/kotlin/okhttp3/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/Tag.md rename to samples/client/petstore/kotlin/okhttp3/docs/Tag.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/User.md b/samples/client/petstore/kotlin/okhttp3/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/User.md rename to samples/client/petstore/kotlin/okhttp3/docs/User.md diff --git a/samples/client/petstore/kotlin-okhttp3/docs/UserApi.md b/samples/client/petstore/kotlin/okhttp3/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/docs/UserApi.md rename to samples/client/petstore/kotlin/okhttp3/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-okhttp3/settings.gradle b/samples/client/petstore/kotlin/okhttp3/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/settings.gradle rename to samples/client/petstore/kotlin/okhttp3/settings.gradle diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator-ignore b/samples/client/petstore/kotlin/petstore/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/.openapi-generator-ignore rename to samples/client/petstore/kotlin/petstore/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION b/samples/client/petstore/kotlin/petstore/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/petstore/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/petstore/README.md b/samples/client/petstore/kotlin/petstore/README.md new file mode 100644 index 00000000000..8166d4aadba --- /dev/null +++ b/samples/client/petstore/kotlin/petstore/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin-string/build.gradle b/samples/client/petstore/kotlin/petstore/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-string/build.gradle rename to samples/client/petstore/kotlin/petstore/build.gradle diff --git a/samples/client/petstore/kotlin-retrofit2/docs/ApiResponse.md b/samples/client/petstore/kotlin/petstore/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/ApiResponse.md rename to samples/client/petstore/kotlin/petstore/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/Category.md b/samples/client/petstore/kotlin/petstore/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/Category.md rename to samples/client/petstore/kotlin/petstore/docs/Category.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/Order.md b/samples/client/petstore/kotlin/petstore/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/Order.md rename to samples/client/petstore/kotlin/petstore/docs/Order.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/Pet.md b/samples/client/petstore/kotlin/petstore/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/Pet.md rename to samples/client/petstore/kotlin/petstore/docs/Pet.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/PetApi.md b/samples/client/petstore/kotlin/petstore/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/PetApi.md rename to samples/client/petstore/kotlin/petstore/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/StoreApi.md b/samples/client/petstore/kotlin/petstore/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/StoreApi.md rename to samples/client/petstore/kotlin/petstore/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/Tag.md b/samples/client/petstore/kotlin/petstore/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/Tag.md rename to samples/client/petstore/kotlin/petstore/docs/Tag.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/User.md b/samples/client/petstore/kotlin/petstore/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/User.md rename to samples/client/petstore/kotlin/petstore/docs/User.md diff --git a/samples/client/petstore/kotlin-retrofit2/docs/UserApi.md b/samples/client/petstore/kotlin/petstore/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/docs/UserApi.md rename to samples/client/petstore/kotlin/petstore/docs/UserApi.md diff --git a/samples/client/petstore/kotlin/settings.gradle b/samples/client/petstore/kotlin/petstore/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin/settings.gradle rename to samples/client/petstore/kotlin/petstore/settings.gradle diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin/pom.xml b/samples/client/petstore/kotlin/pom.xml deleted file mode 100644 index e52f9e969b0..00000000000 --- a/samples/client/petstore/kotlin/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<project> - <modelVersion>4.0.0</modelVersion> - <groupId>io.swagger</groupId> - <artifactId>KotlinPetstoreClientTests</artifactId> - <packaging>pom</packaging> - <version>1.0-SNAPSHOT</version> - <name>Kotlin Swagger Petstore Client</name> - <build> - <plugins> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>1.2.1</version> - <executions> - <execution> - <id>bundle-test</id> - <phase>integration-test</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>gradle</executable> - <arguments> - <argument>test</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/samples/client/petstore/kotlin-string/.openapi-generator-ignore b/samples/client/petstore/kotlin/retrofit2-coroutines/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-string/.openapi-generator-ignore rename to samples/client/petstore/kotlin/retrofit2-coroutines/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin/retrofit2-coroutines/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-string/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/retrofit2-coroutines/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/README.md b/samples/client/petstore/kotlin/retrofit2-coroutines/README.md new file mode 100644 index 00000000000..f374ed0b99f --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin-retrofit2/build.gradle b/samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/build.gradle rename to samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle diff --git a/samples/client/petstore/kotlin-string/docs/ApiResponse.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/ApiResponse.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-string/docs/Category.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/Category.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/Category.md diff --git a/samples/client/petstore/kotlin/docs/Order.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin/docs/Order.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/Order.md diff --git a/samples/client/petstore/kotlin-threetenbp/docs/Pet.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/Pet.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/Pet.md diff --git a/samples/client/petstore/kotlin/docs/PetApi.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/PetApi.md similarity index 58% rename from samples/client/petstore/kotlin/docs/PetApi.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/PetApi.md index ea93e174527..f7d027b6922 100644 --- a/samples/client/petstore/kotlin/docs/PetApi.md +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/PetApi.md @@ -4,38 +4,32 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**addPet**](PetApi.md#addPet) | **POST** pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** pet/{petId}/uploadImage | uploads an image -<a name="addPet"></a> -# **addPet** -> addPet(body) Add a new pet to the store ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val body : Pet = // Pet | Pet object that needs to be added to the store -try { - apiInstance.addPet(body) -} catch (e: ClientException) { - println("4xx response calling PetApi#addPet") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#addPet") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.addPet(body) } ``` @@ -52,37 +46,29 @@ null (empty response body) ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: application/json, application/xml - **Accept**: Not defined -<a name="deletePet"></a> -# **deletePet** -> deletePet(petId, apiKey) Deletes a pet ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete val apiKey : kotlin.String = apiKey_example // kotlin.String | -try { - apiInstance.deletePet(petId, apiKey) -} catch (e: ClientException) { - println("4xx response calling PetApi#deletePet") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#deletePet") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.deletePet(petId, apiKey) } ``` @@ -100,17 +86,12 @@ null (empty response body) ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: Not defined - **Accept**: Not defined -<a name="findPetsByStatus"></a> -# **findPetsByStatus** -> kotlin.Array<Pet> findPetsByStatus(status) Finds Pets by status @@ -119,20 +100,16 @@ Multiple status values can be provided with comma separated strings ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val status : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Status values that need to be considered for filter -try { - val result : kotlin.Array<Pet> = apiInstance.findPetsByStatus(status) - println(result) -} catch (e: ClientException) { - println("4xx response calling PetApi#findPetsByStatus") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#findPetsByStatus") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : kotlin.Array<Pet> = webService.findPetsByStatus(status) } ``` @@ -149,17 +126,12 @@ Name | Type | Description | Notes ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="findPetsByTags"></a> -# **findPetsByTags** -> kotlin.Array<Pet> findPetsByTags(tags) Finds Pets by tags @@ -168,20 +140,16 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val tags : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Tags to filter by -try { - val result : kotlin.Array<Pet> = apiInstance.findPetsByTags(tags) - println(result) -} catch (e: ClientException) { - println("4xx response calling PetApi#findPetsByTags") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#findPetsByTags") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : kotlin.Array<Pet> = webService.findPetsByTags(tags) } ``` @@ -198,17 +166,12 @@ Name | Type | Description | Notes ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="getPetById"></a> -# **getPetById** -> Pet getPetById(petId) Find pet by ID @@ -217,20 +180,16 @@ Returns a single pet ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return -try { - val result : Pet = apiInstance.getPetById(petId) - println(result) -} catch (e: ClientException) { - println("4xx response calling PetApi#getPetById") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#getPetById") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : Pet = webService.getPetById(petId) } ``` @@ -247,37 +206,28 @@ Name | Type | Description | Notes ### Authorization -Configure api_key: - ApiClient.apiKey["api_key"] = "" - ApiClient.apiKeyPrefix["api_key"] = "" ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="updatePet"></a> -# **updatePet** -> updatePet(body) Update an existing pet ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val body : Pet = // Pet | Pet object that needs to be added to the store -try { - apiInstance.updatePet(body) -} catch (e: ClientException) { - println("4xx response calling PetApi#updatePet") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#updatePet") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.updatePet(body) } ``` @@ -294,38 +244,30 @@ null (empty response body) ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: application/json, application/xml - **Accept**: Not defined -<a name="updatePetWithForm"></a> -# **updatePetWithForm** -> updatePetWithForm(petId, name, status) Updates a pet in the store with form data ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated val name : kotlin.String = name_example // kotlin.String | Updated name of the pet val status : kotlin.String = status_example // kotlin.String | Updated status of the pet -try { - apiInstance.updatePetWithForm(petId, name, status) -} catch (e: ClientException) { - println("4xx response calling PetApi#updatePetWithForm") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#updatePetWithForm") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.updatePetWithForm(petId, name, status) } ``` @@ -344,39 +286,30 @@ null (empty response body) ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers - **Content-Type**: application/x-www-form-urlencoded - **Accept**: Not defined -<a name="uploadFile"></a> -# **uploadFile** -> ApiResponse uploadFile(petId, additionalMetadata, file) uploads an image ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = PetApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload -try { - val result : ApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) - println(result) -} catch (e: ClientException) { - println("4xx response calling PetApi#uploadFile") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling PetApi#uploadFile") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : ApiResponse = webService.uploadFile(petId, additionalMetadata, file) } ``` @@ -395,8 +328,6 @@ Name | Type | Description | Notes ### Authorization -Configure petstore_auth: - ApiClient.accessToken = "" ### HTTP request headers diff --git a/samples/client/petstore/kotlin/docs/StoreApi.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/StoreApi.md similarity index 56% rename from samples/client/petstore/kotlin/docs/StoreApi.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/StoreApi.md index f4986041af8..95bf7785cad 100644 --- a/samples/client/petstore/kotlin/docs/StoreApi.md +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/StoreApi.md @@ -4,15 +4,12 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** store/order | Place an order for a pet -<a name="deleteOrder"></a> -# **deleteOrder** -> deleteOrder(orderId) Delete purchase order by ID @@ -21,19 +18,16 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = StoreApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted -try { - apiInstance.deleteOrder(orderId) -} catch (e: ClientException) { - println("4xx response calling StoreApi#deleteOrder") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling StoreApi#deleteOrder") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.deleteOrder(orderId) } ``` @@ -56,9 +50,6 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="getInventory"></a> -# **getInventory** -> kotlin.collections.Map<kotlin.String, kotlin.Int> getInventory() Returns pet inventories by status @@ -67,19 +58,15 @@ Returns a map of status codes to quantities ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = StoreApi() -try { - val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = apiInstance.getInventory() - println(result) -} catch (e: ClientException) { - println("4xx response calling StoreApi#getInventory") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling StoreApi#getInventory") - e.printStackTrace() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) + +launch(Dispatchers.IO) { + val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = webService.getInventory() } ``` @@ -93,18 +80,12 @@ This endpoint does not need any parameter. ### Authorization -Configure api_key: - ApiClient.apiKey["api_key"] = "" - ApiClient.apiKeyPrefix["api_key"] = "" ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/json -<a name="getOrderById"></a> -# **getOrderById** -> Order getOrderById(orderId) Find purchase order by ID @@ -113,20 +94,16 @@ For valid response try integer IDs with value <= 5 or > 10. Other val ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = StoreApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched -try { - val result : Order = apiInstance.getOrderById(orderId) - println(result) -} catch (e: ClientException) { - println("4xx response calling StoreApi#getOrderById") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling StoreApi#getOrderById") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : Order = webService.getOrderById(orderId) } ``` @@ -149,29 +126,22 @@ No authorization required - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="placeOrder"></a> -# **placeOrder** -> Order placeOrder(body) Place an order for a pet ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = StoreApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) val body : Order = // Order | order placed for purchasing the pet -try { - val result : Order = apiInstance.placeOrder(body) - println(result) -} catch (e: ClientException) { - println("4xx response calling StoreApi#placeOrder") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling StoreApi#placeOrder") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : Order = webService.placeOrder(body) } ``` diff --git a/samples/client/petstore/kotlin-string/docs/Tag.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/Tag.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/Tag.md diff --git a/samples/client/petstore/kotlin-string/docs/User.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/User.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/User.md diff --git a/samples/client/petstore/kotlin/docs/UserApi.md b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/UserApi.md similarity index 58% rename from samples/client/petstore/kotlin/docs/UserApi.md rename to samples/client/petstore/kotlin/retrofit2-coroutines/docs/UserApi.md index 0f55f06bc62..d9c78d7fba8 100644 --- a/samples/client/petstore/kotlin/docs/UserApi.md +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/docs/UserApi.md @@ -4,19 +4,16 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user +[**createUser**](UserApi.md#createUser) | **POST** user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** user/{username} | Updated user -<a name="createUser"></a> -# **createUser** -> createUser(body) Create user @@ -25,19 +22,16 @@ This can only be done by the logged in user. ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val body : User = // User | Created user object -try { - apiInstance.createUser(body) -} catch (e: ClientException) { - println("4xx response calling UserApi#createUser") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#createUser") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.createUser(body) } ``` @@ -60,28 +54,22 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="createUsersWithArrayInput"></a> -# **createUsersWithArrayInput** -> createUsersWithArrayInput(body) Creates list of users with given input array ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object -try { - apiInstance.createUsersWithArrayInput(body) -} catch (e: ClientException) { - println("4xx response calling UserApi#createUsersWithArrayInput") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#createUsersWithArrayInput") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.createUsersWithArrayInput(body) } ``` @@ -104,28 +92,22 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="createUsersWithListInput"></a> -# **createUsersWithListInput** -> createUsersWithListInput(body) Creates list of users with given input array ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object -try { - apiInstance.createUsersWithListInput(body) -} catch (e: ClientException) { - println("4xx response calling UserApi#createUsersWithListInput") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#createUsersWithListInput") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.createUsersWithListInput(body) } ``` @@ -148,9 +130,6 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="deleteUser"></a> -# **deleteUser** -> deleteUser(username) Delete user @@ -159,19 +138,16 @@ This can only be done by the logged in user. ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted -try { - apiInstance.deleteUser(username) -} catch (e: ClientException) { - println("4xx response calling UserApi#deleteUser") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#deleteUser") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.deleteUser(username) } ``` @@ -194,29 +170,22 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="getUserByName"></a> -# **getUserByName** -> User getUserByName(username) Get user by user name ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing. -try { - val result : User = apiInstance.getUserByName(username) - println(result) -} catch (e: ClientException) { - println("4xx response calling UserApi#getUserByName") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#getUserByName") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : User = webService.getUserByName(username) } ``` @@ -239,30 +208,23 @@ No authorization required - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="loginUser"></a> -# **loginUser** -> kotlin.String loginUser(username, password) Logs user into the system ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val username : kotlin.String = username_example // kotlin.String | The user name for login val password : kotlin.String = password_example // kotlin.String | The password for login in clear text -try { - val result : kotlin.String = apiInstance.loginUser(username, password) - println(result) -} catch (e: ClientException) { - println("4xx response calling UserApi#loginUser") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#loginUser") - e.printStackTrace() + +launch(Dispatchers.IO) { + val result : kotlin.String = webService.loginUser(username, password) } ``` @@ -286,27 +248,21 @@ No authorization required - **Content-Type**: Not defined - **Accept**: application/xml, application/json -<a name="logoutUser"></a> -# **logoutUser** -> logoutUser() Logs out current logged in user session ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() -try { - apiInstance.logoutUser() -} catch (e: ClientException) { - println("4xx response calling UserApi#logoutUser") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#logoutUser") - e.printStackTrace() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) + +launch(Dispatchers.IO) { + webService.logoutUser() } ``` @@ -326,9 +282,6 @@ No authorization required - **Content-Type**: Not defined - **Accept**: Not defined -<a name="updateUser"></a> -# **updateUser** -> updateUser(username, body) Updated user @@ -337,20 +290,17 @@ This can only be done by the logged in user. ### Example ```kotlin // Import classes: +//import org.openapitools.client.* //import org.openapitools.client.infrastructure.* //import org.openapitools.client.models.* -val apiInstance = UserApi() +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) val username : kotlin.String = username_example // kotlin.String | name that need to be deleted val body : User = // User | Updated user object -try { - apiInstance.updateUser(username, body) -} catch (e: ClientException) { - println("4xx response calling UserApi#updateUser") - e.printStackTrace() -} catch (e: ServerException) { - println("5xx response calling UserApi#updateUser") - e.printStackTrace() + +launch(Dispatchers.IO) { + webService.updateUser(username, body) } ``` diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/settings.gradle b/samples/client/petstore/kotlin/retrofit2-coroutines/settings.gradle new file mode 100644 index 00000000000..c05ae91b053 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/settings.gradle @@ -0,0 +1,2 @@ + +rootProject.name = 'kotlin-petstore-retrofit2-coroutines' \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt new file mode 100644 index 00000000000..8a64e1a9b10 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -0,0 +1,122 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.ApiResponse +import org.openapitools.client.models.Pet + +interface PetApi { + /** + * Add a new pet to the store + * + * Responses: + * - 405: Invalid input + * + * @param body Pet object that needs to be added to the store + * @return [Unit] + */ + @POST("pet") + suspend fun addPet(@Body body: Pet): Response<Unit> + + /** + * Deletes a pet + * + * Responses: + * - 400: Invalid pet value + * + * @param petId Pet id to delete + * @param apiKey (optional) + * @return [Unit] + */ + @DELETE("pet/{petId}") + suspend fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Response<Unit> + + /** + * Finds Pets by status + * Multiple status values can be provided with comma separated strings + * Responses: + * - 200: successful operation + * - 400: Invalid status value + * + * @param status Status values that need to be considered for filter + * @return [kotlin.Array<Pet>] + */ + @GET("pet/findByStatus") + suspend fun findPetsByStatus(@Query("status") status: CSVParams): Response<kotlin.Array<Pet>> + + /** + * Finds Pets by tags + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * Responses: + * - 200: successful operation + * - 400: Invalid tag value + * + * @param tags Tags to filter by + * @return [kotlin.Array<Pet>] + */ + @Deprecated("This api was deprecated") + @GET("pet/findByTags") + suspend fun findPetsByTags(@Query("tags") tags: CSVParams): Response<kotlin.Array<Pet>> + + /** + * Find pet by ID + * Returns a single pet + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Pet not found + * + * @param petId ID of pet to return + * @return [Pet] + */ + @GET("pet/{petId}") + suspend fun getPetById(@Path("petId") petId: kotlin.Long): Response<Pet> + + /** + * Update an existing pet + * + * Responses: + * - 400: Invalid ID supplied + * - 404: Pet not found + * - 405: Validation exception + * + * @param body Pet object that needs to be added to the store + * @return [Unit] + */ + @PUT("pet") + suspend fun updatePet(@Body body: Pet): Response<Unit> + + /** + * Updates a pet in the store with form data + * + * Responses: + * - 405: Invalid input + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet (optional) + * @param status Updated status of the pet (optional) + * @return [Unit] + */ + @FormUrlEncoded + @POST("pet/{petId}") + suspend fun updatePetWithForm(@Path("petId") petId: kotlin.Long, @Field("name") name: kotlin.String, @Field("status") status: kotlin.String): Response<Unit> + + /** + * uploads an image + * + * Responses: + * - 200: successful operation + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return [ApiResponse] + */ + @Multipart + @POST("pet/{petId}/uploadImage") + suspend fun uploadFile(@Path("petId") petId: kotlin.Long, @Part("additionalMetadata") additionalMetadata: kotlin.String, @Part file: MultipartBody.Part ): Response<ApiResponse> + +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt new file mode 100644 index 00000000000..a9c026f1e4c --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -0,0 +1,62 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.Order + +interface StoreApi { + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * Responses: + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of the order that needs to be deleted + * @return [Unit] + */ + @DELETE("store/order/{orderId}") + suspend fun deleteOrder(@Path("orderId") orderId: kotlin.String): Response<Unit> + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * Responses: + * - 200: successful operation + * + * @return [kotlin.collections.Map<kotlin.String, kotlin.Int>] + */ + @GET("store/inventory") + suspend fun getInventory(): Response<kotlin.collections.Map<kotlin.String, kotlin.Int>> + + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of pet that needs to be fetched + * @return [Order] + */ + @GET("store/order/{orderId}") + suspend fun getOrderById(@Path("orderId") orderId: kotlin.Long): Response<Order> + + /** + * Place an order for a pet + * + * Responses: + * - 200: successful operation + * - 400: Invalid Order + * + * @param body order placed for purchasing the pet + * @return [Order] + */ + @POST("store/order") + suspend fun placeOrder(@Body body: Order): Response<Order> + +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt new file mode 100644 index 00000000000..c18c38a100a --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -0,0 +1,113 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.User + +interface UserApi { + /** + * Create user + * This can only be done by the logged in user. + * Responses: + * - 0: successful operation + * + * @param body Created user object + * @return [Unit] + */ + @POST("user") + suspend fun createUser(@Body body: User): Response<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Unit] + */ + @POST("user/createWithArray") + suspend fun createUsersWithArrayInput(@Body body: kotlin.Array<User>): Response<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Unit] + */ + @POST("user/createWithList") + suspend fun createUsersWithListInput(@Body body: kotlin.Array<User>): Response<Unit> + + /** + * Delete user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be deleted + * @return [Unit] + */ + @DELETE("user/{username}") + suspend fun deleteUser(@Path("username") username: kotlin.String): Response<Unit> + + /** + * Get user by user name + * + * Responses: + * - 200: successful operation + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return [User] + */ + @GET("user/{username}") + suspend fun getUserByName(@Path("username") username: kotlin.String): Response<User> + + /** + * Logs user into the system + * + * Responses: + * - 200: successful operation + * - 400: Invalid username/password supplied + * + * @param username The user name for login + * @param password The password for login in clear text + * @return [kotlin.String] + */ + @GET("user/login") + suspend fun loginUser(@Query("username") username: kotlin.String, @Query("password") password: kotlin.String): Response<kotlin.String> + + /** + * Logs out current logged in user session + * + * Responses: + * - 0: successful operation + * + * @return [Unit] + */ + @GET("user/logout") + suspend fun logoutUser(): Response<Unit> + + /** + * Updated user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid user supplied + * - 404: User not found + * + * @param username name that need to be deleted + * @param body Updated user object + * @return [Unit] + */ + @PUT("user/{username}") + suspend fun updateUser(@Path("username") username: kotlin.String, @Body body: User): Response<Unit> + +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt new file mode 100644 index 00000000000..575bea19540 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt @@ -0,0 +1,33 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import kotlin.jvm.Throws +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response +import okhttp3.Credentials + +class HttpBasicAuth( + private var username: String = "", + private var password: String = "" +) : Interceptor { + + fun setCredentials(username: String, password: String) { + this.username = username + this.password = password + } + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && username.isNotBlank() && password.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", Credentials.basic(username, password)) + .build() + } + return chain.proceed(request) + } +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt new file mode 100644 index 00000000000..775ad903c43 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt @@ -0,0 +1,39 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response + +class HttpBearerAuth( + private var schema: String = "", + var bearerToken: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && bearerToken.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", headerValue()) + .build() + } + return chain.proceed(request) + } + + private fun headerValue(): String { + return if (schema.isNotBlank()) { + "${upperCaseBearer()} $bearerToken" + } else { + bearerToken + } + } + + private fun upperCaseBearer(): String { + return if (schema.toLowerCase().equals("bearer")) "Bearer" else schema + } + +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt new file mode 100644 index 00000000000..aecba0cd55b --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -0,0 +1,84 @@ +package org.openapitools.client.infrastructure + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.converter.scalars.ScalarsConverterFactory +import com.squareup.moshi.Moshi +import retrofit2.converter.moshi.MoshiConverterFactory + +class ApiClient( + private var baseUrl: String = BASE_URL, + private val okHttpClientBuilder: OkHttpClient.Builder? = null, + private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder +) { + private val apiAuthorizations = mutableMapOf<String, Interceptor>() + + private val retrofitBuilder: Retrofit.Builder by lazy { + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + } + + private val clientBuilder: OkHttpClient.Builder by lazy { + okHttpClientBuilder ?: defaultClientBuilder + } + + private val defaultClientBuilder: OkHttpClient.Builder by lazy { + OkHttpClient().newBuilder() + } + + init { + normalizeBaseUrl() + } + + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, + authNames: Array<String> + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + authNames.forEach { authName -> + val auth = when (authName) { + "api_key" -> "petstore_auth" -> + else -> throw RuntimeException("auth name $authName not found in available auth names") + } + addAuthorization(authName, auth); + } + } + + /** + * Adds an authorization to be used by the client + * @param authName Authentication name + * @param authorization Authorization interceptor + * @return ApiClient + */ + fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { + if (apiAuthorizations.containsKey(authName)) { + throw RuntimeException("auth name $authName already in api authorizations") + } + apiAuthorizations[authName] = authorization + clientBuilder.addInterceptor(authorization) + return this + } + + fun <S> createService(serviceClass: Class<S>): S { + return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) + } + + private fun normalizeBaseUrl() { + if (!baseUrl.endsWith("/")) { + baseUrl += "/" + } + } + + private inline fun <T, reified U> Iterable<T>.firstAs(): U { + for (element in this) if (element is U) return element + throw NoSuchElementException("Collection contains no element for generic parameter U") + } + + companion object { + const val BASE_URL: String = "http://petstore.swagger.io/v2" + } +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator-ignore b/samples/client/petstore/kotlin/retrofit2/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/.openapi-generator-ignore rename to samples/client/petstore/kotlin/retrofit2/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin/retrofit2/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/retrofit2/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/retrofit2/README.md b/samples/client/petstore/kotlin/retrofit2/README.md new file mode 100644 index 00000000000..f374ed0b99f --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin/retrofit2/build.gradle b/samples/client/petstore/kotlin/retrofit2/build.gradle new file mode 100644 index 00000000000..392d9a352e6 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/build.gradle @@ -0,0 +1,40 @@ +group 'org.openapitools' +version '1.0.0' + +wrapper { + gradleVersion = '4.9' + distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" +} + +buildscript { + ext.kotlin_version = '1.3.61' + ext.retrofitVersion = '2.6.2' + + repositories { + maven { url "https://repo1.maven.org/maven2" } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: 'kotlin' + +repositories { + maven { url "https://repo1.maven.org/maven2" } +} + +test { + useJUnitPlatform() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + compile "com.squareup.moshi:moshi-kotlin:1.9.2" + compile "com.squareup.moshi:moshi-adapters:1.9.2" + compile "com.squareup.retrofit2:retrofit:$retrofitVersion" + compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" + compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" +} diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator-ignore b/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/.openapi-generator-ignore rename to samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin/.openapi-generator/VERSION b/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/kotlin/.openapi-generator/VERSION rename to samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/README.md b/samples/client/petstore/kotlin/retrofit2/coroutines/README.md new file mode 100644 index 00000000000..f374ed0b99f --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle b/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle new file mode 100644 index 00000000000..392d9a352e6 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle @@ -0,0 +1,40 @@ +group 'org.openapitools' +version '1.0.0' + +wrapper { + gradleVersion = '4.9' + distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" +} + +buildscript { + ext.kotlin_version = '1.3.61' + ext.retrofitVersion = '2.6.2' + + repositories { + maven { url "https://repo1.maven.org/maven2" } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: 'kotlin' + +repositories { + maven { url "https://repo1.maven.org/maven2" } +} + +test { + useJUnitPlatform() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + compile "com.squareup.moshi:moshi-kotlin:1.9.2" + compile "com.squareup.moshi:moshi-adapters:1.9.2" + compile "com.squareup.retrofit2:retrofit:$retrofitVersion" + compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" + compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" +} diff --git a/samples/client/petstore/kotlin-threetenbp/docs/ApiResponse.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/ApiResponse.md rename to samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin-threetenbp/docs/Category.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/Category.md rename to samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md new file mode 100644 index 00000000000..5112f08958d --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md @@ -0,0 +1,22 @@ + +# Order + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**petId** | **kotlin.Long** | | [optional] +**quantity** | **kotlin.Int** | | [optional] +**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | | [optional] +**status** | [**inline**](#StatusEnum) | Order Status | [optional] +**complete** | **kotlin.Boolean** | | [optional] + + +<a name="StatusEnum"></a> +## Enum: status +Name | Value +---- | ----- +status | placed, approved, delivered + + + diff --git a/samples/client/petstore/kotlin/docs/Pet.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin/docs/Pet.md rename to samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md new file mode 100644 index 00000000000..f7d027b6922 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md @@ -0,0 +1,336 @@ +# PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** pet/{petId}/uploadImage | uploads an image + + + +Add a new pet to the store + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val body : Pet = // Pet | Pet object that needs to be added to the store + +launch(Dispatchers.IO) { + webService.addPet(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +Deletes a pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete +val apiKey : kotlin.String = apiKey_example // kotlin.String | + +launch(Dispatchers.IO) { + webService.deletePet(petId, apiKey) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| Pet id to delete | + **apiKey** | **kotlin.String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val status : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Status values that need to be considered for filter + +launch(Dispatchers.IO) { + val result : kotlin.Array<Pet> = webService.findPetsByStatus(status) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold] + +### Return type + +[**kotlin.Array<Pet>**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val tags : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Tags to filter by + +launch(Dispatchers.IO) { + val result : kotlin.Array<Pet> = webService.findPetsByTags(tags) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Tags to filter by | + +### Return type + +[**kotlin.Array<Pet>**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Find pet by ID + +Returns a single pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return + +launch(Dispatchers.IO) { + val result : Pet = webService.getPetById(petId) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Update an existing pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val body : Pet = // Pet | Pet object that needs to be added to the store + +launch(Dispatchers.IO) { + webService.updatePet(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +Updates a pet in the store with form data + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated +val name : kotlin.String = name_example // kotlin.String | Updated name of the pet +val status : kotlin.String = status_example // kotlin.String | Updated status of the pet + +launch(Dispatchers.IO) { + webService.updatePetWithForm(petId, name, status) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet that needs to be updated | + **name** | **kotlin.String**| Updated name of the pet | [optional] + **status** | **kotlin.String**| Updated status of the pet | [optional] + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +uploads an image + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update +val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server +val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload + +launch(Dispatchers.IO) { + val result : ApiResponse = webService.uploadFile(petId, additionalMetadata, file) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet to update | + **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] + **file** | **java.io.File**| file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md new file mode 100644 index 00000000000..95bf7785cad --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md @@ -0,0 +1,166 @@ +# StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** store/order | Place an order for a pet + + + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted + +launch(Dispatchers.IO) { + webService.deleteOrder(orderId) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **kotlin.String**| ID of the order that needs to be deleted | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) + +launch(Dispatchers.IO) { + val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = webService.getInventory() +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**kotlin.collections.Map<kotlin.String, kotlin.Int>** + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched + +launch(Dispatchers.IO) { + val result : Order = webService.getOrderById(orderId) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **kotlin.Long**| ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Place an order for a pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val body : Order = // Order | order placed for purchasing the pet + +launch(Dispatchers.IO) { + val result : Order = webService.placeOrder(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Order**](Order.md)| order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + diff --git a/samples/client/petstore/kotlin-threetenbp/docs/Tag.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/Tag.md rename to samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md diff --git a/samples/client/petstore/kotlin-threetenbp/docs/User.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/User.md rename to samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md new file mode 100644 index 00000000000..d9c78d7fba8 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md @@ -0,0 +1,326 @@ +# UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** user/{username} | Updated user + + + +Create user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : User = // User | Created user object + +launch(Dispatchers.IO) { + webService.createUser(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**User**](User.md)| Created user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Creates list of users with given input array + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object + +launch(Dispatchers.IO) { + webService.createUsersWithArrayInput(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**kotlin.Array<User>**](User.md)| List of user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Creates list of users with given input array + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object + +launch(Dispatchers.IO) { + webService.createUsersWithListInput(body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**kotlin.Array<User>**](User.md)| List of user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Delete user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted + +launch(Dispatchers.IO) { + webService.deleteUser(username) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The name that needs to be deleted | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Get user by user name + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing. + +launch(Dispatchers.IO) { + val result : User = webService.getUserByName(username) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Logs user into the system + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The user name for login +val password : kotlin.String = password_example // kotlin.String | The password for login in clear text + +launch(Dispatchers.IO) { + val result : kotlin.String = webService.loginUser(username, password) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The user name for login | + **password** | **kotlin.String**| The password for login in clear text | + +### Return type + +**kotlin.String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Logs out current logged in user session + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) + +launch(Dispatchers.IO) { + webService.logoutUser() +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Updated user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | name that need to be deleted +val body : User = // User | Updated user object + +launch(Dispatchers.IO) { + webService.updateUser(username, body) +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| name that need to be deleted | + **body** | [**User**](User.md)| Updated user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle b/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle new file mode 100644 index 00000000000..c05ae91b053 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle @@ -0,0 +1,2 @@ + +rootProject.name = 'kotlin-petstore-retrofit2-coroutines' \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt new file mode 100644 index 00000000000..8a64e1a9b10 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -0,0 +1,122 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.ApiResponse +import org.openapitools.client.models.Pet + +interface PetApi { + /** + * Add a new pet to the store + * + * Responses: + * - 405: Invalid input + * + * @param body Pet object that needs to be added to the store + * @return [Unit] + */ + @POST("pet") + suspend fun addPet(@Body body: Pet): Response<Unit> + + /** + * Deletes a pet + * + * Responses: + * - 400: Invalid pet value + * + * @param petId Pet id to delete + * @param apiKey (optional) + * @return [Unit] + */ + @DELETE("pet/{petId}") + suspend fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Response<Unit> + + /** + * Finds Pets by status + * Multiple status values can be provided with comma separated strings + * Responses: + * - 200: successful operation + * - 400: Invalid status value + * + * @param status Status values that need to be considered for filter + * @return [kotlin.Array<Pet>] + */ + @GET("pet/findByStatus") + suspend fun findPetsByStatus(@Query("status") status: CSVParams): Response<kotlin.Array<Pet>> + + /** + * Finds Pets by tags + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * Responses: + * - 200: successful operation + * - 400: Invalid tag value + * + * @param tags Tags to filter by + * @return [kotlin.Array<Pet>] + */ + @Deprecated("This api was deprecated") + @GET("pet/findByTags") + suspend fun findPetsByTags(@Query("tags") tags: CSVParams): Response<kotlin.Array<Pet>> + + /** + * Find pet by ID + * Returns a single pet + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Pet not found + * + * @param petId ID of pet to return + * @return [Pet] + */ + @GET("pet/{petId}") + suspend fun getPetById(@Path("petId") petId: kotlin.Long): Response<Pet> + + /** + * Update an existing pet + * + * Responses: + * - 400: Invalid ID supplied + * - 404: Pet not found + * - 405: Validation exception + * + * @param body Pet object that needs to be added to the store + * @return [Unit] + */ + @PUT("pet") + suspend fun updatePet(@Body body: Pet): Response<Unit> + + /** + * Updates a pet in the store with form data + * + * Responses: + * - 405: Invalid input + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet (optional) + * @param status Updated status of the pet (optional) + * @return [Unit] + */ + @FormUrlEncoded + @POST("pet/{petId}") + suspend fun updatePetWithForm(@Path("petId") petId: kotlin.Long, @Field("name") name: kotlin.String, @Field("status") status: kotlin.String): Response<Unit> + + /** + * uploads an image + * + * Responses: + * - 200: successful operation + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return [ApiResponse] + */ + @Multipart + @POST("pet/{petId}/uploadImage") + suspend fun uploadFile(@Path("petId") petId: kotlin.Long, @Part("additionalMetadata") additionalMetadata: kotlin.String, @Part file: MultipartBody.Part ): Response<ApiResponse> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt new file mode 100644 index 00000000000..a9c026f1e4c --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -0,0 +1,62 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.Order + +interface StoreApi { + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * Responses: + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of the order that needs to be deleted + * @return [Unit] + */ + @DELETE("store/order/{orderId}") + suspend fun deleteOrder(@Path("orderId") orderId: kotlin.String): Response<Unit> + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * Responses: + * - 200: successful operation + * + * @return [kotlin.collections.Map<kotlin.String, kotlin.Int>] + */ + @GET("store/inventory") + suspend fun getInventory(): Response<kotlin.collections.Map<kotlin.String, kotlin.Int>> + + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of pet that needs to be fetched + * @return [Order] + */ + @GET("store/order/{orderId}") + suspend fun getOrderById(@Path("orderId") orderId: kotlin.Long): Response<Order> + + /** + * Place an order for a pet + * + * Responses: + * - 200: successful operation + * - 400: Invalid Order + * + * @param body order placed for purchasing the pet + * @return [Order] + */ + @POST("store/order") + suspend fun placeOrder(@Body body: Order): Response<Order> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt new file mode 100644 index 00000000000..c18c38a100a --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -0,0 +1,113 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Response +import okhttp3.RequestBody + +import org.openapitools.client.models.User + +interface UserApi { + /** + * Create user + * This can only be done by the logged in user. + * Responses: + * - 0: successful operation + * + * @param body Created user object + * @return [Unit] + */ + @POST("user") + suspend fun createUser(@Body body: User): Response<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Unit] + */ + @POST("user/createWithArray") + suspend fun createUsersWithArrayInput(@Body body: kotlin.Array<User>): Response<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Unit] + */ + @POST("user/createWithList") + suspend fun createUsersWithListInput(@Body body: kotlin.Array<User>): Response<Unit> + + /** + * Delete user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be deleted + * @return [Unit] + */ + @DELETE("user/{username}") + suspend fun deleteUser(@Path("username") username: kotlin.String): Response<Unit> + + /** + * Get user by user name + * + * Responses: + * - 200: successful operation + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return [User] + */ + @GET("user/{username}") + suspend fun getUserByName(@Path("username") username: kotlin.String): Response<User> + + /** + * Logs user into the system + * + * Responses: + * - 200: successful operation + * - 400: Invalid username/password supplied + * + * @param username The user name for login + * @param password The password for login in clear text + * @return [kotlin.String] + */ + @GET("user/login") + suspend fun loginUser(@Query("username") username: kotlin.String, @Query("password") password: kotlin.String): Response<kotlin.String> + + /** + * Logs out current logged in user session + * + * Responses: + * - 0: successful operation + * + * @return [Unit] + */ + @GET("user/logout") + suspend fun logoutUser(): Response<Unit> + + /** + * Updated user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid user supplied + * - 404: User not found + * + * @param username name that need to be deleted + * @param body Updated user object + * @return [Unit] + */ + @PUT("user/{username}") + suspend fun updateUser(@Path("username") username: kotlin.String, @Body body: User): Response<Unit> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt new file mode 100644 index 00000000000..575bea19540 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt @@ -0,0 +1,33 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import kotlin.jvm.Throws +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response +import okhttp3.Credentials + +class HttpBasicAuth( + private var username: String = "", + private var password: String = "" +) : Interceptor { + + fun setCredentials(username: String, password: String) { + this.username = username + this.password = password + } + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && username.isNotBlank() && password.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", Credentials.basic(username, password)) + .build() + } + return chain.proceed(request) + } +} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt new file mode 100644 index 00000000000..775ad903c43 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt @@ -0,0 +1,39 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response + +class HttpBearerAuth( + private var schema: String = "", + var bearerToken: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && bearerToken.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", headerValue()) + .build() + } + return chain.proceed(request) + } + + private fun headerValue(): String { + return if (schema.isNotBlank()) { + "${upperCaseBearer()} $bearerToken" + } else { + bearerToken + } + } + + private fun upperCaseBearer(): String { + return if (schema.toLowerCase().equals("bearer")) "Bearer" else schema + } + +} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt new file mode 100644 index 00000000000..aecba0cd55b --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -0,0 +1,84 @@ +package org.openapitools.client.infrastructure + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.converter.scalars.ScalarsConverterFactory +import com.squareup.moshi.Moshi +import retrofit2.converter.moshi.MoshiConverterFactory + +class ApiClient( + private var baseUrl: String = BASE_URL, + private val okHttpClientBuilder: OkHttpClient.Builder? = null, + private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder +) { + private val apiAuthorizations = mutableMapOf<String, Interceptor>() + + private val retrofitBuilder: Retrofit.Builder by lazy { + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + } + + private val clientBuilder: OkHttpClient.Builder by lazy { + okHttpClientBuilder ?: defaultClientBuilder + } + + private val defaultClientBuilder: OkHttpClient.Builder by lazy { + OkHttpClient().newBuilder() + } + + init { + normalizeBaseUrl() + } + + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, + authNames: Array<String> + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + authNames.forEach { authName -> + val auth = when (authName) { + "api_key" -> "petstore_auth" -> + else -> throw RuntimeException("auth name $authName not found in available auth names") + } + addAuthorization(authName, auth); + } + } + + /** + * Adds an authorization to be used by the client + * @param authName Authentication name + * @param authorization Authorization interceptor + * @return ApiClient + */ + fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { + if (apiAuthorizations.containsKey(authName)) { + throw RuntimeException("auth name $authName already in api authorizations") + } + apiAuthorizations[authName] = authorization + clientBuilder.addInterceptor(authorization) + return this + } + + fun <S> createService(serviceClass: Class<S>): S { + return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) + } + + private fun normalizeBaseUrl() { + if (!baseUrl.endsWith("/")) { + baseUrl += "/" + } + } + + private inline fun <T, reified U> Iterable<T>.firstAs(): U { + for (element in this) if (element is U) return element + throw NoSuchElementException("Collection contains no element for generic parameter U") + } + + companion object { + const val BASE_URL: String = "http://petstore.swagger.io/v2" + } +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt new file mode 100644 index 00000000000..001e99325d2 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt @@ -0,0 +1,56 @@ +package org.openapitools.client.infrastructure + +class CollectionFormats { + + open class CSVParams { + + var params: List<String> + + constructor(params: List<String>) { + this.params = params + } + + constructor(vararg params: String) { + this.params = listOf(*params) + } + + override fun toString(): String { + return params.joinToString(",") + } + } + + open class SSVParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString(" ") + } + } + + class TSVParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("\t") + } + } + + class PIPESParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("|") + } + } + + class SPACEParams : SSVParams() +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 70% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt index 44a8b1f896c..f59f4a0cd97 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Order.kt +++ b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -22,29 +22,39 @@ import com.squareup.moshi.Json * @param status Order Status * @param complete */ + data class Order ( - val id: kotlin.Long? = null, - val petId: kotlin.Long? = null, - val quantity: kotlin.Int? = null, - val shipDate: java.time.LocalDateTime? = null, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "petId") + val petId: kotlin.Long? = null +, + @Json(name = "quantity") + val quantity: kotlin.Int? = null +, + @Json(name = "shipDate") + val shipDate: java.time.OffsetDateTime? = null +, /* Order Status */ - val status: Order.Status? = null, + @Json(name = "status") + val status: Order.Status? = null +, + @Json(name = "complete") val complete: kotlin.Boolean? = null + ) { /** * Order Status * Values: placed,approved,delivered */ - enum class Status(val value: kotlin.String){ - @Json(name = "placed") placed("placed"), + enum class Status(val value: kotlin.String){ + @Json(name = "placed") placed("placed"), @Json(name = "approved") approved("approved"), - @Json(name = "delivered") delivered("delivered"); - } - } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin/docs/ApiResponse.md b/samples/client/petstore/kotlin/retrofit2/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/kotlin/docs/ApiResponse.md rename to samples/client/petstore/kotlin/retrofit2/docs/ApiResponse.md diff --git a/samples/client/petstore/kotlin/docs/Category.md b/samples/client/petstore/kotlin/retrofit2/docs/Category.md similarity index 100% rename from samples/client/petstore/kotlin/docs/Category.md rename to samples/client/petstore/kotlin/retrofit2/docs/Category.md diff --git a/samples/client/petstore/kotlin/retrofit2/docs/Order.md b/samples/client/petstore/kotlin/retrofit2/docs/Order.md new file mode 100644 index 00000000000..5112f08958d --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/docs/Order.md @@ -0,0 +1,22 @@ + +# Order + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**petId** | **kotlin.Long** | | [optional] +**quantity** | **kotlin.Int** | | [optional] +**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | | [optional] +**status** | [**inline**](#StatusEnum) | Order Status | [optional] +**complete** | **kotlin.Boolean** | | [optional] + + +<a name="StatusEnum"></a> +## Enum: status +Name | Value +---- | ----- +status | placed, approved, delivered + + + diff --git a/samples/client/petstore/kotlin/retrofit2/docs/Pet.md b/samples/client/petstore/kotlin/retrofit2/docs/Pet.md new file mode 100644 index 00000000000..70c340005d1 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/docs/Pet.md @@ -0,0 +1,22 @@ + +# Pet + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **kotlin.String** | | +**photoUrls** | **kotlin.Array<kotlin.String>** | | +**id** | **kotlin.Long** | | [optional] +**category** | [**Category**](Category.md) | | [optional] +**tags** | [**kotlin.Array<Tag>**](Tag.md) | | [optional] +**status** | [**inline**](#StatusEnum) | pet status in the store | [optional] + + +<a name="StatusEnum"></a> +## Enum: status +Name | Value +---- | ----- +status | available, pending, sold + + + diff --git a/samples/client/petstore/kotlin/retrofit2/docs/PetApi.md b/samples/client/petstore/kotlin/retrofit2/docs/PetApi.md new file mode 100644 index 00000000000..a67cc80830b --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/docs/PetApi.md @@ -0,0 +1,320 @@ +# PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** pet/{petId}/uploadImage | uploads an image + + + +Add a new pet to the store + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val body : Pet = // Pet | Pet object that needs to be added to the store + +webService.addPet(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +Deletes a pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete +val apiKey : kotlin.String = apiKey_example // kotlin.String | + +webService.deletePet(petId, apiKey) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| Pet id to delete | + **apiKey** | **kotlin.String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val status : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Status values that need to be considered for filter + +val result : kotlin.Array<Pet> = webService.findPetsByStatus(status) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold] + +### Return type + +[**kotlin.Array<Pet>**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val tags : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Tags to filter by + +val result : kotlin.Array<Pet> = webService.findPetsByTags(tags) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Tags to filter by | + +### Return type + +[**kotlin.Array<Pet>**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Find pet by ID + +Returns a single pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return + +val result : Pet = webService.getPetById(petId) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Update an existing pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val body : Pet = // Pet | Pet object that needs to be added to the store + +webService.updatePet(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +Updates a pet in the store with form data + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated +val name : kotlin.String = name_example // kotlin.String | Updated name of the pet +val status : kotlin.String = status_example // kotlin.String | Updated status of the pet + +webService.updatePetWithForm(petId, name, status) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet that needs to be updated | + **name** | **kotlin.String**| Updated name of the pet | [optional] + **status** | **kotlin.String**| Updated status of the pet | [optional] + +### Return type + +null (empty response body) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +uploads an image + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(PetApi::class.java) +val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update +val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server +val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload + +val result : ApiResponse = webService.uploadFile(petId, additionalMetadata, file) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **kotlin.Long**| ID of pet to update | + **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] + **file** | **java.io.File**| file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + diff --git a/samples/client/petstore/kotlin/retrofit2/docs/StoreApi.md b/samples/client/petstore/kotlin/retrofit2/docs/StoreApi.md new file mode 100644 index 00000000000..d3ca3e35896 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/docs/StoreApi.md @@ -0,0 +1,158 @@ +# StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** store/order | Place an order for a pet + + + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted + +webService.deleteOrder(orderId) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **kotlin.String**| ID of the order that needs to be deleted | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) + +val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = webService.getInventory() +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**kotlin.collections.Map<kotlin.String, kotlin.Int>** + +### Authorization + + + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched + +val result : Order = webService.getOrderById(orderId) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **kotlin.Long**| ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Place an order for a pet + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(StoreApi::class.java) +val body : Order = // Order | order placed for purchasing the pet + +val result : Order = webService.placeOrder(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Order**](Order.md)| order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + diff --git a/samples/client/petstore/kotlin/docs/Tag.md b/samples/client/petstore/kotlin/retrofit2/docs/Tag.md similarity index 100% rename from samples/client/petstore/kotlin/docs/Tag.md rename to samples/client/petstore/kotlin/retrofit2/docs/Tag.md diff --git a/samples/client/petstore/kotlin/docs/User.md b/samples/client/petstore/kotlin/retrofit2/docs/User.md similarity index 100% rename from samples/client/petstore/kotlin/docs/User.md rename to samples/client/petstore/kotlin/retrofit2/docs/User.md diff --git a/samples/client/petstore/kotlin/retrofit2/docs/UserApi.md b/samples/client/petstore/kotlin/retrofit2/docs/UserApi.md new file mode 100644 index 00000000000..33a4a3feba1 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/docs/UserApi.md @@ -0,0 +1,310 @@ +# UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** user/{username} | Updated user + + + +Create user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : User = // User | Created user object + +webService.createUser(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**User**](User.md)| Created user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Creates list of users with given input array + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object + +webService.createUsersWithArrayInput(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**kotlin.Array<User>**](User.md)| List of user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Creates list of users with given input array + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object + +webService.createUsersWithListInput(body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**kotlin.Array<User>**](User.md)| List of user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Delete user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted + +webService.deleteUser(username) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The name that needs to be deleted | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Get user by user name + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing. + +val result : User = webService.getUserByName(username) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Logs user into the system + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | The user name for login +val password : kotlin.String = password_example // kotlin.String | The password for login in clear text + +val result : kotlin.String = webService.loginUser(username, password) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| The user name for login | + **password** | **kotlin.String**| The password for login in clear text | + +### Return type + +**kotlin.String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +Logs out current logged in user session + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) + +webService.logoutUser() +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +Updated user + +This can only be done by the logged in user. + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(UserApi::class.java) +val username : kotlin.String = username_example // kotlin.String | name that need to be deleted +val body : User = // User | Updated user object + +webService.updateUser(username, body) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **kotlin.String**| name that need to be deleted | + **body** | [**User**](User.md)| Updated user object | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + diff --git a/samples/client/petstore/kotlin-retrofit2/settings.gradle b/samples/client/petstore/kotlin/retrofit2/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-retrofit2/settings.gradle rename to samples/client/petstore/kotlin/retrofit2/settings.gradle diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt new file mode 100644 index 00000000000..483caf70884 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -0,0 +1,122 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Call +import okhttp3.RequestBody + +import org.openapitools.client.models.ApiResponse +import org.openapitools.client.models.Pet + +interface PetApi { + /** + * Add a new pet to the store + * + * Responses: + * - 405: Invalid input + * + * @param body Pet object that needs to be added to the store + * @return [Call]<[Unit]> + */ + @POST("pet") + fun addPet(@Body body: Pet): Call<Unit> + + /** + * Deletes a pet + * + * Responses: + * - 400: Invalid pet value + * + * @param petId Pet id to delete + * @param apiKey (optional) + * @return [Call]<[Unit]> + */ + @DELETE("pet/{petId}") + fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Call<Unit> + + /** + * Finds Pets by status + * Multiple status values can be provided with comma separated strings + * Responses: + * - 200: successful operation + * - 400: Invalid status value + * + * @param status Status values that need to be considered for filter + * @return [Call]<[kotlin.Array<Pet>]> + */ + @GET("pet/findByStatus") + fun findPetsByStatus(@Query("status") status: CSVParams): Call<kotlin.Array<Pet>> + + /** + * Finds Pets by tags + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * Responses: + * - 200: successful operation + * - 400: Invalid tag value + * + * @param tags Tags to filter by + * @return [Call]<[kotlin.Array<Pet>]> + */ + @Deprecated("This api was deprecated") + @GET("pet/findByTags") + fun findPetsByTags(@Query("tags") tags: CSVParams): Call<kotlin.Array<Pet>> + + /** + * Find pet by ID + * Returns a single pet + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Pet not found + * + * @param petId ID of pet to return + * @return [Call]<[Pet]> + */ + @GET("pet/{petId}") + fun getPetById(@Path("petId") petId: kotlin.Long): Call<Pet> + + /** + * Update an existing pet + * + * Responses: + * - 400: Invalid ID supplied + * - 404: Pet not found + * - 405: Validation exception + * + * @param body Pet object that needs to be added to the store + * @return [Call]<[Unit]> + */ + @PUT("pet") + fun updatePet(@Body body: Pet): Call<Unit> + + /** + * Updates a pet in the store with form data + * + * Responses: + * - 405: Invalid input + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet (optional) + * @param status Updated status of the pet (optional) + * @return [Call]<[Unit]> + */ + @FormUrlEncoded + @POST("pet/{petId}") + fun updatePetWithForm(@Path("petId") petId: kotlin.Long, @Field("name") name: kotlin.String, @Field("status") status: kotlin.String): Call<Unit> + + /** + * uploads an image + * + * Responses: + * - 200: successful operation + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return [Call]<[ApiResponse]> + */ + @Multipart + @POST("pet/{petId}/uploadImage") + fun uploadFile(@Path("petId") petId: kotlin.Long, @Part("additionalMetadata") additionalMetadata: kotlin.String, @Part file: MultipartBody.Part ): Call<ApiResponse> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt new file mode 100644 index 00000000000..45b6d20b1c7 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -0,0 +1,62 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Call +import okhttp3.RequestBody + +import org.openapitools.client.models.Order + +interface StoreApi { + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * Responses: + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of the order that needs to be deleted + * @return [Call]<[Unit]> + */ + @DELETE("store/order/{orderId}") + fun deleteOrder(@Path("orderId") orderId: kotlin.String): Call<Unit> + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * Responses: + * - 200: successful operation + * + * @return [Call]<[kotlin.collections.Map<kotlin.String, kotlin.Int>]> + */ + @GET("store/inventory") + fun getInventory(): Call<kotlin.collections.Map<kotlin.String, kotlin.Int>> + + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * Responses: + * - 200: successful operation + * - 400: Invalid ID supplied + * - 404: Order not found + * + * @param orderId ID of pet that needs to be fetched + * @return [Call]<[Order]> + */ + @GET("store/order/{orderId}") + fun getOrderById(@Path("orderId") orderId: kotlin.Long): Call<Order> + + /** + * Place an order for a pet + * + * Responses: + * - 200: successful operation + * - 400: Invalid Order + * + * @param body order placed for purchasing the pet + * @return [Call]<[Order]> + */ + @POST("store/order") + fun placeOrder(@Body body: Order): Call<Order> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt new file mode 100644 index 00000000000..fe9c793fdf0 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -0,0 +1,113 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Call +import okhttp3.RequestBody + +import org.openapitools.client.models.User + +interface UserApi { + /** + * Create user + * This can only be done by the logged in user. + * Responses: + * - 0: successful operation + * + * @param body Created user object + * @return [Call]<[Unit]> + */ + @POST("user") + fun createUser(@Body body: User): Call<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Call]<[Unit]> + */ + @POST("user/createWithArray") + fun createUsersWithArrayInput(@Body body: kotlin.Array<User>): Call<Unit> + + /** + * Creates list of users with given input array + * + * Responses: + * - 0: successful operation + * + * @param body List of user object + * @return [Call]<[Unit]> + */ + @POST("user/createWithList") + fun createUsersWithListInput(@Body body: kotlin.Array<User>): Call<Unit> + + /** + * Delete user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be deleted + * @return [Call]<[Unit]> + */ + @DELETE("user/{username}") + fun deleteUser(@Path("username") username: kotlin.String): Call<Unit> + + /** + * Get user by user name + * + * Responses: + * - 200: successful operation + * - 400: Invalid username supplied + * - 404: User not found + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return [Call]<[User]> + */ + @GET("user/{username}") + fun getUserByName(@Path("username") username: kotlin.String): Call<User> + + /** + * Logs user into the system + * + * Responses: + * - 200: successful operation + * - 400: Invalid username/password supplied + * + * @param username The user name for login + * @param password The password for login in clear text + * @return [Call]<[kotlin.String]> + */ + @GET("user/login") + fun loginUser(@Query("username") username: kotlin.String, @Query("password") password: kotlin.String): Call<kotlin.String> + + /** + * Logs out current logged in user session + * + * Responses: + * - 0: successful operation + * + * @return [Call]<[Unit]> + */ + @GET("user/logout") + fun logoutUser(): Call<Unit> + + /** + * Updated user + * This can only be done by the logged in user. + * Responses: + * - 400: Invalid user supplied + * - 404: User not found + * + * @param username name that need to be deleted + * @param body Updated user object + * @return [Call]<[Unit]> + */ + @PUT("user/{username}") + fun updateUser(@Path("username") username: kotlin.String, @Body body: User): Call<Unit> + +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt new file mode 100644 index 00000000000..575bea19540 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt @@ -0,0 +1,33 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import kotlin.jvm.Throws +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response +import okhttp3.Credentials + +class HttpBasicAuth( + private var username: String = "", + private var password: String = "" +) : Interceptor { + + fun setCredentials(username: String, password: String) { + this.username = username + this.password = password + } + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && username.isNotBlank() && password.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", Credentials.basic(username, password)) + .build() + } + return chain.proceed(request) + } +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt new file mode 100644 index 00000000000..775ad903c43 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt @@ -0,0 +1,39 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Response + +class HttpBearerAuth( + private var schema: String = "", + var bearerToken: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") == null && bearerToken.isNotBlank()) { + request = request.newBuilder() + .addHeader("Authorization", headerValue()) + .build() + } + return chain.proceed(request) + } + + private fun headerValue(): String { + return if (schema.isNotBlank()) { + "${upperCaseBearer()} $bearerToken" + } else { + bearerToken + } + } + + private fun upperCaseBearer(): String { + return if (schema.toLowerCase().equals("bearer")) "Bearer" else schema + } + +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt new file mode 100644 index 00000000000..aecba0cd55b --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -0,0 +1,84 @@ +package org.openapitools.client.infrastructure + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.converter.scalars.ScalarsConverterFactory +import com.squareup.moshi.Moshi +import retrofit2.converter.moshi.MoshiConverterFactory + +class ApiClient( + private var baseUrl: String = BASE_URL, + private val okHttpClientBuilder: OkHttpClient.Builder? = null, + private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder +) { + private val apiAuthorizations = mutableMapOf<String, Interceptor>() + + private val retrofitBuilder: Retrofit.Builder by lazy { + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + } + + private val clientBuilder: OkHttpClient.Builder by lazy { + okHttpClientBuilder ?: defaultClientBuilder + } + + private val defaultClientBuilder: OkHttpClient.Builder by lazy { + OkHttpClient().newBuilder() + } + + init { + normalizeBaseUrl() + } + + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, + authNames: Array<String> + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + authNames.forEach { authName -> + val auth = when (authName) { + "api_key" -> "petstore_auth" -> + else -> throw RuntimeException("auth name $authName not found in available auth names") + } + addAuthorization(authName, auth); + } + } + + /** + * Adds an authorization to be used by the client + * @param authName Authentication name + * @param authorization Authorization interceptor + * @return ApiClient + */ + fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { + if (apiAuthorizations.containsKey(authName)) { + throw RuntimeException("auth name $authName already in api authorizations") + } + apiAuthorizations[authName] = authorization + clientBuilder.addInterceptor(authorization) + return this + } + + fun <S> createService(serviceClass: Class<S>): S { + return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) + } + + private fun normalizeBaseUrl() { + if (!baseUrl.endsWith("/")) { + baseUrl += "/" + } + } + + private inline fun <T, reified U> Iterable<T>.firstAs(): U { + for (element in this) if (element is U) return element + throw NoSuchElementException("Collection contains no element for generic parameter U") + } + + companion object { + const val BASE_URL: String = "http://petstore.swagger.io/v2" + } +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt new file mode 100644 index 00000000000..001e99325d2 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt @@ -0,0 +1,56 @@ +package org.openapitools.client.infrastructure + +class CollectionFormats { + + open class CSVParams { + + var params: List<String> + + constructor(params: List<String>) { + this.params = params + } + + constructor(vararg params: String) { + this.params = listOf(*params) + } + + override fun toString(): String { + return params.joinToString(",") + } + } + + open class SSVParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString(" ") + } + } + + class TSVParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("\t") + } + } + + class PIPESParams : CSVParams { + + constructor(params: List<String>) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("|") + } + } + + class SPACEParams : SSVParams() +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 70% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt index b950bdafb57..5078a38f945 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/ApiResponse.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -12,17 +12,23 @@ package org.openapitools.client.models +import com.squareup.moshi.Json /** * Describes the result of uploading an image resource * @param code * @param type * @param message */ + data class ApiResponse ( - val code: kotlin.Int? = null, - val type: kotlin.String? = null, + @Json(name = "code") + val code: kotlin.Int? = null +, + @Json(name = "type") + val type: kotlin.String? = null +, + @Json(name = "message") val message: kotlin.String? = null -) { -} +) diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 75% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt index af700f5488a..5473b36a379 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Category.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -12,15 +12,19 @@ package org.openapitools.client.models +import com.squareup.moshi.Json /** * A category for a pet * @param id * @param name */ + data class Category ( - val id: kotlin.Long? = null, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "name") val name: kotlin.String? = null -) { -} +) diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt new file mode 100644 index 00000000000..f59f4a0cd97 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt @@ -0,0 +1,60 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * An order for a pets from the pet store + * @param id + * @param petId + * @param quantity + * @param shipDate + * @param status Order Status + * @param complete + */ + +data class Order ( + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "petId") + val petId: kotlin.Long? = null +, + @Json(name = "quantity") + val quantity: kotlin.Int? = null +, + @Json(name = "shipDate") + val shipDate: java.time.OffsetDateTime? = null +, + /* Order Status */ + @Json(name = "status") + val status: Order.Status? = null +, + @Json(name = "complete") + val complete: kotlin.Boolean? = null + +) { + + /** + * Order Status + * Values: placed,approved,delivered + */ + + + enum class Status(val value: kotlin.String){ + @Json(name = "placed") placed("placed"), + @Json(name = "approved") approved("approved"), + @Json(name = "delivered") delivered("delivered"); + } +} + diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 72% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt index 583dd3fb3ae..9830ead3359 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Pet.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -17,36 +17,46 @@ import org.openapitools.client.models.Tag import com.squareup.moshi.Json /** * A pet for sale in the pet store - * @param id - * @param category * @param name * @param photoUrls + * @param id + * @param category * @param tags * @param status pet status in the store */ + data class Pet ( - val name: kotlin.String, - val photoUrls: kotlin.Array<kotlin.String>, - val id: kotlin.Long? = null, - val category: Category? = null, - val tags: kotlin.Array<Tag>? = null, + @Json(name = "name") + val name: kotlin.String +, + @Json(name = "photoUrls") + val photoUrls: kotlin.Array<kotlin.String> +, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "category") + val category: Category? = null +, + @Json(name = "tags") + val tags: kotlin.Array<Tag>? = null +, /* pet status in the store */ + @Json(name = "status") val status: Pet.Status? = null + ) { /** * pet status in the store * Values: available,pending,sold */ - enum class Status(val value: kotlin.String){ - @Json(name = "available") available("available"), + enum class Status(val value: kotlin.String){ + @Json(name = "available") available("available"), @Json(name = "pending") pending("pending"), - @Json(name = "sold") sold("sold"); - } - } diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 74% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt index d2ae2ead613..ccdd4390d1a 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/Tag.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -12,15 +12,19 @@ package org.openapitools.client.models +import com.squareup.moshi.Json /** * A tag for a pet * @param id * @param name */ + data class Tag ( - val id: kotlin.Long? = null, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "name") val name: kotlin.String? = null -) { -} +) diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 53% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt index a9695bb62ba..e2679988c51 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/models/User.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * -* OpenAPI spec version: 1.0.0 +* The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -12,6 +12,7 @@ package org.openapitools.client.models +import com.squareup.moshi.Json /** * A User who is purchasing from the pet store * @param id @@ -23,17 +24,32 @@ package org.openapitools.client.models * @param phone * @param userStatus User Status */ + data class User ( - val id: kotlin.Long? = null, - val username: kotlin.String? = null, - val firstName: kotlin.String? = null, - val lastName: kotlin.String? = null, - val email: kotlin.String? = null, - val password: kotlin.String? = null, - val phone: kotlin.String? = null, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "username") + val username: kotlin.String? = null +, + @Json(name = "firstName") + val firstName: kotlin.String? = null +, + @Json(name = "lastName") + val lastName: kotlin.String? = null +, + @Json(name = "email") + val email: kotlin.String? = null +, + @Json(name = "password") + val password: kotlin.String? = null +, + @Json(name = "phone") + val phone: kotlin.String? = null +, /* User Status */ + @Json(name = "userStatus") val userStatus: kotlin.Int? = null -) { -} +) diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt deleted file mode 100644 index dd34bd48b2c..00000000000 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt +++ /dev/null @@ -1,29 +0,0 @@ -package org.openapitools.client.infrastructure - -import kotlin.properties.ReadWriteProperty -import kotlin.reflect.KProperty - -object ApplicationDelegates { - /** - * Provides a property delegate, allowing the property to be set once and only once. - * - * If unset (no default value), a get on the property will throw [IllegalStateException]. - */ - fun <T> setOnce(defaultValue: T? = null) : ReadWriteProperty<Any?, T> = SetOnce(defaultValue) - - private class SetOnce<T>(defaultValue: T? = null) : ReadWriteProperty<Any?, T> { - private var isSet = false - private var value: T? = defaultValue - - override fun getValue(thisRef: Any?, property: KProperty<*>): T { - return value ?: throw IllegalStateException("${property.name} not initialized") - } - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) = synchronized(this) { - if (!isSet) { - this.value = value - isSet = true - } - } - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt deleted file mode 100644 index 931b12b8bd7..00000000000 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.openapitools.client.infrastructure - -/** - * Provides enumerated HTTP verbs - */ -enum class RequestMethod { - GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt b/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt deleted file mode 100644 index d1c20493bcc..00000000000 --- a/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt +++ /dev/null @@ -1,104 +0,0 @@ -package org.openapitools.client - -import io.kotlintest.shouldBe -import io.kotlintest.matchers.numerics.shouldBeGreaterThan -import io.kotlintest.matchers.string.shouldContain -import io.kotlintest.shouldThrow -import io.kotlintest.specs.ShouldSpec -import org.openapitools.client.apis.PetApi -import org.openapitools.client.infrastructure.ClientException -import org.openapitools.client.models.Category -import org.openapitools.client.models.Pet -import org.openapitools.client.models.Tag - -class PetApiTest : ShouldSpec() { - init { - - val petId:Long = 10006 - val api = PetApi() - - should("add a pet") { - - val pet = Pet( - id = petId, - name = "kotlin client test", - photoUrls = arrayOf("http://test_kotlin_unit_test.com"), - category = Category(petId, "test kotlin category"), - tags = arrayOf(Tag(petId, "test kotlin tag")) - ) - api.addPet(pet) - - } - - should("get pet by id") { - val result = api.getPetById(petId) - - result.id shouldBe (petId) - result.name shouldBe ("kotlin client test") - result.photoUrls[0] shouldBe ("http://test_kotlin_unit_test.com") - result.category!!.id shouldBe (petId) - result.category!!.name shouldBe ("test kotlin category") - result.tags!![0].id shouldBe (petId) - result.tags!![0].name shouldBe ("test kotlin tag") - - } - - should("find pet by status") { - val result = api.findPetsByStatus(arrayOf("available")) - - result.size.shouldBeGreaterThan(0) - - for(onePet in result) { - onePet.status.shouldBe(Pet.Status.available) - } - - val result2 = api.findPetsByStatus(arrayOf("unknown_and_incorrect_status")) - - result2.size.shouldBe(0) - - } - - should("update a pet") { - val pet = Pet( - id = petId, - name = "kotlin client updatePet", - status = Pet.Status.pending, - photoUrls = arrayOf("http://test_kotlin_unit_test.com") - ) - api.updatePet(pet) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet") - result.status shouldBe (Pet.Status.pending) - - } - - should("update a pet with form") { - val name = "kotlin client updatePet with Form" - val status = "pending" - - api.updatePetWithForm(petId, name, status) - - // verify updated Pet - val result = api.getPetById(petId) - result.id shouldBe (petId) - result.name shouldBe ("kotlin client updatePet with Form") - result.status shouldBe (Pet.Status.pending) - - } - - should("delete a pet") { - api.deletePet(petId, "apiKey") - - // verify updated Pet - val exception = shouldThrow<ClientException> { - api.getPetById(petId) - } - exception.message?.shouldContain("Pet not found") - } - - } - -} diff --git a/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt b/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt deleted file mode 100644 index 733df971a8b..00000000000 --- a/samples/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt +++ /dev/null @@ -1,48 +0,0 @@ -package org.openapitools.client - -import io.kotlintest.shouldBe -import io.kotlintest.specs.ShouldSpec -import org.openapitools.client.apis.PetApi -import org.openapitools.client.apis.StoreApi -import org.openapitools.client.models.Order -import org.openapitools.client.models.Pet -import java.time.OffsetDateTime.now - -class StoreApiTest : ShouldSpec() { - init { - - val petId:Long = 10006 - val petApi = PetApi() - val storeApi = StoreApi() - - val pet = Pet( - id = petId, - name = "kotlin client test", - photoUrls = arrayOf("http://test_kotlin_unit_test.com") - ) - petApi.addPet(pet) - - should("add an order") { - - val order = Order( - id = 12, - petId = petId, - quantity = 2, - shipDate = now(), - complete = true - ) - storeApi.placeOrder(order); - - } - - should("get order by id") { - val result = storeApi.getOrderById(12) - - // verify order - result.petId shouldBe (petId) - result.quantity shouldBe (2) - } - - } - -} diff --git a/samples/client/petstore/kotlin/.openapi-generator-ignore b/samples/client/petstore/kotlin/string/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/kotlin/.openapi-generator-ignore rename to samples/client/petstore/kotlin/string/.openapi-generator-ignore diff --git a/samples/client/petstore/kotlin/string/.openapi-generator/VERSION b/samples/client/petstore/kotlin/string/.openapi-generator/VERSION new file mode 100644 index 00000000000..bfbf77eb7fa --- /dev/null +++ b/samples/client/petstore/kotlin/string/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/string/README.md b/samples/client/petstore/kotlin/string/README.md new file mode 100644 index 00000000000..8166d4aadba --- /dev/null +++ b/samples/client/petstore/kotlin/string/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin/build.gradle b/samples/client/petstore/kotlin/string/build.gradle similarity index 100% rename from samples/client/petstore/kotlin/build.gradle rename to samples/client/petstore/kotlin/string/build.gradle diff --git a/samples/client/petstore/kotlin/string/docs/ApiResponse.md b/samples/client/petstore/kotlin/string/docs/ApiResponse.md new file mode 100644 index 00000000000..6b4c6bf2779 --- /dev/null +++ b/samples/client/petstore/kotlin/string/docs/ApiResponse.md @@ -0,0 +1,12 @@ + +# ApiResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **kotlin.Int** | | [optional] +**type** | **kotlin.String** | | [optional] +**message** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin/string/docs/Category.md b/samples/client/petstore/kotlin/string/docs/Category.md new file mode 100644 index 00000000000..2c28a670fc7 --- /dev/null +++ b/samples/client/petstore/kotlin/string/docs/Category.md @@ -0,0 +1,11 @@ + +# Category + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**name** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin-string/docs/Order.md b/samples/client/petstore/kotlin/string/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/Order.md rename to samples/client/petstore/kotlin/string/docs/Order.md diff --git a/samples/client/petstore/kotlin-string/docs/Pet.md b/samples/client/petstore/kotlin/string/docs/Pet.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/Pet.md rename to samples/client/petstore/kotlin/string/docs/Pet.md diff --git a/samples/client/petstore/kotlin-string/docs/PetApi.md b/samples/client/petstore/kotlin/string/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/PetApi.md rename to samples/client/petstore/kotlin/string/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-string/docs/StoreApi.md b/samples/client/petstore/kotlin/string/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/StoreApi.md rename to samples/client/petstore/kotlin/string/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin/string/docs/Tag.md b/samples/client/petstore/kotlin/string/docs/Tag.md new file mode 100644 index 00000000000..60ce1bcdbad --- /dev/null +++ b/samples/client/petstore/kotlin/string/docs/Tag.md @@ -0,0 +1,11 @@ + +# Tag + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**name** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin/string/docs/User.md b/samples/client/petstore/kotlin/string/docs/User.md new file mode 100644 index 00000000000..e801729b5ed --- /dev/null +++ b/samples/client/petstore/kotlin/string/docs/User.md @@ -0,0 +1,17 @@ + +# User + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**username** | **kotlin.String** | | [optional] +**firstName** | **kotlin.String** | | [optional] +**lastName** | **kotlin.String** | | [optional] +**email** | **kotlin.String** | | [optional] +**password** | **kotlin.String** | | [optional] +**phone** | **kotlin.String** | | [optional] +**userStatus** | **kotlin.Int** | User Status | [optional] + + + diff --git a/samples/client/petstore/kotlin-string/docs/UserApi.md b/samples/client/petstore/kotlin/string/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-string/docs/UserApi.md rename to samples/client/petstore/kotlin/string/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-string/settings.gradle b/samples/client/petstore/kotlin/string/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-string/settings.gradle rename to samples/client/petstore/kotlin/string/settings.gradle diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt new file mode 100644 index 00000000000..b2e1654479a --- /dev/null +++ b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +class LocalDateAdapter { + @ToJson + fun toJson(value: LocalDate): String { + return DateTimeFormatter.ISO_LOCAL_DATE.format(value) + } + + @FromJson + fun fromJson(value: String): LocalDate { + return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE) + } + +} diff --git a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt new file mode 100644 index 00000000000..e082db94811 --- /dev/null +++ b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + +class LocalDateTimeAdapter { + @ToJson + fun toJson(value: LocalDateTime): String { + return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value) + } + + @FromJson + fun fromJson(value: String): LocalDateTime { + return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME) + } + +} diff --git a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt new file mode 100644 index 00000000000..87437871a31 --- /dev/null +++ b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.OffsetDateTime +import java.time.format.DateTimeFormatter + +class OffsetDateTimeAdapter { + @ToJson + fun toJson(value: OffsetDateTime): String { + return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value) + } + + @FromJson + fun fromJson(value: String): OffsetDateTime { + return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME) + } + +} diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Category.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Pet.kt similarity index 100% rename from samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Pet.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Tag.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/Tag.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/User.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt rename to samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin/threetenbp/.openapi-generator-ignore b/samples/client/petstore/kotlin/threetenbp/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/kotlin/threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin/threetenbp/.openapi-generator/VERSION new file mode 100644 index 00000000000..bfbf77eb7fa --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/threetenbp/README.md b/samples/client/petstore/kotlin/threetenbp/README.md new file mode 100644 index 00000000000..8166d4aadba --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/README.md @@ -0,0 +1,90 @@ +# org.openapitools.client - Kotlin client library for OpenAPI Petstore + +## Requires + +* Kotlin 1.3.61 +* Gradle 4.9 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + +<a name="documentation-for-api-endpoints"></a> +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +<a name="documentation-for-models"></a> +## Documentation for Models + + - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) + - [org.openapitools.client.models.Category](docs/Category.md) + - [org.openapitools.client.models.Order](docs/Order.md) + - [org.openapitools.client.models.Pet](docs/Pet.md) + - [org.openapitools.client.models.Tag](docs/Tag.md) + - [org.openapitools.client.models.User](docs/User.md) + + +<a name="documentation-for-authorization"></a> +## Documentation for Authorization + +<a name="api_key"></a> +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +<a name="petstore_auth"></a> +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/kotlin-threetenbp/build.gradle b/samples/client/petstore/kotlin/threetenbp/build.gradle similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/build.gradle rename to samples/client/petstore/kotlin/threetenbp/build.gradle diff --git a/samples/client/petstore/kotlin/threetenbp/docs/ApiResponse.md b/samples/client/petstore/kotlin/threetenbp/docs/ApiResponse.md new file mode 100644 index 00000000000..6b4c6bf2779 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/docs/ApiResponse.md @@ -0,0 +1,12 @@ + +# ApiResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **kotlin.Int** | | [optional] +**type** | **kotlin.String** | | [optional] +**message** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin/threetenbp/docs/Category.md b/samples/client/petstore/kotlin/threetenbp/docs/Category.md new file mode 100644 index 00000000000..2c28a670fc7 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/docs/Category.md @@ -0,0 +1,11 @@ + +# Category + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**name** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin-threetenbp/docs/Order.md b/samples/client/petstore/kotlin/threetenbp/docs/Order.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/Order.md rename to samples/client/petstore/kotlin/threetenbp/docs/Order.md diff --git a/samples/client/petstore/kotlin/threetenbp/docs/Pet.md b/samples/client/petstore/kotlin/threetenbp/docs/Pet.md new file mode 100644 index 00000000000..70c340005d1 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/docs/Pet.md @@ -0,0 +1,22 @@ + +# Pet + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **kotlin.String** | | +**photoUrls** | **kotlin.Array<kotlin.String>** | | +**id** | **kotlin.Long** | | [optional] +**category** | [**Category**](Category.md) | | [optional] +**tags** | [**kotlin.Array<Tag>**](Tag.md) | | [optional] +**status** | [**inline**](#StatusEnum) | pet status in the store | [optional] + + +<a name="StatusEnum"></a> +## Enum: status +Name | Value +---- | ----- +status | available, pending, sold + + + diff --git a/samples/client/petstore/kotlin-threetenbp/docs/PetApi.md b/samples/client/petstore/kotlin/threetenbp/docs/PetApi.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/PetApi.md rename to samples/client/petstore/kotlin/threetenbp/docs/PetApi.md diff --git a/samples/client/petstore/kotlin-threetenbp/docs/StoreApi.md b/samples/client/petstore/kotlin/threetenbp/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/StoreApi.md rename to samples/client/petstore/kotlin/threetenbp/docs/StoreApi.md diff --git a/samples/client/petstore/kotlin/threetenbp/docs/Tag.md b/samples/client/petstore/kotlin/threetenbp/docs/Tag.md new file mode 100644 index 00000000000..60ce1bcdbad --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/docs/Tag.md @@ -0,0 +1,11 @@ + +# Tag + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**name** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin/threetenbp/docs/User.md b/samples/client/petstore/kotlin/threetenbp/docs/User.md new file mode 100644 index 00000000000..e801729b5ed --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/docs/User.md @@ -0,0 +1,17 @@ + +# User + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **kotlin.Long** | | [optional] +**username** | **kotlin.String** | | [optional] +**firstName** | **kotlin.String** | | [optional] +**lastName** | **kotlin.String** | | [optional] +**email** | **kotlin.String** | | [optional] +**password** | **kotlin.String** | | [optional] +**phone** | **kotlin.String** | | [optional] +**userStatus** | **kotlin.Int** | User Status | [optional] + + + diff --git a/samples/client/petstore/kotlin-threetenbp/docs/UserApi.md b/samples/client/petstore/kotlin/threetenbp/docs/UserApi.md similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/docs/UserApi.md rename to samples/client/petstore/kotlin/threetenbp/docs/UserApi.md diff --git a/samples/client/petstore/kotlin-threetenbp/settings.gradle b/samples/client/petstore/kotlin/threetenbp/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/settings.gradle rename to samples/client/petstore/kotlin/threetenbp/settings.gradle diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt similarity index 99% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt index 617ac3fe906..ff5e2a81ee8 100644 --- a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt @@ -9,4 +9,4 @@ class ByteArrayAdapter { @FromJson fun fromJson(data: String): ByteArray = data.toByteArray() -} \ No newline at end of file +} diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt new file mode 100644 index 00000000000..697559b2ec1 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -0,0 +1,23 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.Moshi +import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter +import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory +import java.util.Date + +object Serializer { + @JvmStatic + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + + @JvmStatic + val moshi: Moshi by lazy { + moshiBuilder.build() + } +} diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt new file mode 100644 index 00000000000..a4a44cc18b7 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.util.UUID + +class UUIDAdapter { + @ToJson + fun toJson(uuid: UUID) = uuid.toString() + + @FromJson + fun fromJson(s: String) = UUID.fromString(s) +} diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt new file mode 100644 index 00000000000..5078a38f945 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt @@ -0,0 +1,34 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * Describes the result of uploading an image resource + * @param code + * @param type + * @param message + */ + +data class ApiResponse ( + @Json(name = "code") + val code: kotlin.Int? = null +, + @Json(name = "type") + val type: kotlin.String? = null +, + @Json(name = "message") + val message: kotlin.String? = null + +) + diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt new file mode 100644 index 00000000000..5473b36a379 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt @@ -0,0 +1,30 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * A category for a pet + * @param id + * @param name + */ + +data class Category ( + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "name") + val name: kotlin.String? = null + +) + diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt similarity index 100% rename from samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt rename to samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt new file mode 100644 index 00000000000..9830ead3359 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt @@ -0,0 +1,62 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + +import org.openapitools.client.models.Category +import org.openapitools.client.models.Tag + +import com.squareup.moshi.Json +/** + * A pet for sale in the pet store + * @param name + * @param photoUrls + * @param id + * @param category + * @param tags + * @param status pet status in the store + */ + +data class Pet ( + @Json(name = "name") + val name: kotlin.String +, + @Json(name = "photoUrls") + val photoUrls: kotlin.Array<kotlin.String> +, + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "category") + val category: Category? = null +, + @Json(name = "tags") + val tags: kotlin.Array<Tag>? = null +, + /* pet status in the store */ + @Json(name = "status") + val status: Pet.Status? = null + +) { + + /** + * pet status in the store + * Values: available,pending,sold + */ + + + enum class Status(val value: kotlin.String){ + @Json(name = "available") available("available"), + @Json(name = "pending") pending("pending"), + @Json(name = "sold") sold("sold"); + } +} + diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt new file mode 100644 index 00000000000..ccdd4390d1a --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt @@ -0,0 +1,30 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * A tag for a pet + * @param id + * @param name + */ + +data class Tag ( + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "name") + val name: kotlin.String? = null + +) + diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt new file mode 100644 index 00000000000..e2679988c51 --- /dev/null +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt @@ -0,0 +1,55 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * A User who is purchasing from the pet store + * @param id + * @param username + * @param firstName + * @param lastName + * @param email + * @param password + * @param phone + * @param userStatus User Status + */ + +data class User ( + @Json(name = "id") + val id: kotlin.Long? = null +, + @Json(name = "username") + val username: kotlin.String? = null +, + @Json(name = "firstName") + val firstName: kotlin.String? = null +, + @Json(name = "lastName") + val lastName: kotlin.String? = null +, + @Json(name = "email") + val email: kotlin.String? = null +, + @Json(name = "password") + val password: kotlin.String? = null +, + @Json(name = "phone") + val phone: kotlin.String? = null +, + /* User Status */ + @Json(name = "userStatus") + val userStatus: kotlin.Int? = null + +) + diff --git a/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator-ignore b/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator/VERSION b/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator/VERSION new file mode 100644 index 00000000000..bfbf77eb7fa --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/README.md b/samples/client/petstore/kotlin/uppercase-enum/README.md similarity index 98% rename from samples/client/petstore/kotlin-uppercase-enum/README.md rename to samples/client/petstore/kotlin/uppercase-enum/README.md index 9d5f9e7e33e..0dbeb6c6ac5 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/README.md +++ b/samples/client/petstore/kotlin/uppercase-enum/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.41 +* Kotlin 1.3.61 * Gradle 4.9 ## Build diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin/uppercase-enum/build.gradle similarity index 88% rename from samples/client/petstore/kotlin-uppercase-enum/build.gradle rename to samples/client/petstore/kotlin/uppercase-enum/build.gradle index ed72aa19d9e..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin/uppercase-enum/build.gradle @@ -10,7 +10,7 @@ buildscript { ext.kotlin_version = '1.3.61' repositories { - mavenCentral() + maven { url "https://repo1.maven.org/maven2" } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" @@ -20,7 +20,7 @@ buildscript { apply plugin: 'kotlin' repositories { - mavenCentral() + maven { url "https://repo1.maven.org/maven2" } } test { diff --git a/samples/client/petstore/kotlin-uppercase-enum/docs/EnumApi.md b/samples/client/petstore/kotlin/uppercase-enum/docs/EnumApi.md similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/docs/EnumApi.md rename to samples/client/petstore/kotlin/uppercase-enum/docs/EnumApi.md diff --git a/samples/client/petstore/kotlin-uppercase-enum/docs/PetEnum.md b/samples/client/petstore/kotlin/uppercase-enum/docs/PetEnum.md similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/docs/PetEnum.md rename to samples/client/petstore/kotlin/uppercase-enum/docs/PetEnum.md diff --git a/samples/client/petstore/kotlin-uppercase-enum/settings.gradle b/samples/client/petstore/kotlin/uppercase-enum/settings.gradle similarity index 100% rename from samples/client/petstore/kotlin-uppercase-enum/settings.gradle rename to samples/client/petstore/kotlin/uppercase-enum/settings.gradle diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt similarity index 89% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt index 8ed4de2768f..ef1dc34d038 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt @@ -58,11 +58,11 @@ class EnumApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiCl ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.") ResponseType.ClientError -> { val localVarError = localVarResponse as ClientError<*> - throw ClientException(localVarError.body as? String ?: "Client error", localVarError.statusCode) + throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse) } ResponseType.ServerError -> { val localVarError = localVarResponse as ServerError<*> - throw ServerException(localVarError.message ?: "Server error", localVarError.statusCode) + throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse) } } } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt similarity index 64% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index d1d58ffd0e9..76490dd26ce 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -10,7 +10,16 @@ import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.ResponseBody import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request +import okhttp3.Headers +import okhttp3.MultipartBody import java.io.File +import java.net.URLConnection +import java.util.Date +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.LocalTime +import java.time.OffsetDateTime +import java.time.OffsetTime open class ApiClient(val baseUrl: String) { companion object { @@ -37,17 +46,55 @@ open class ApiClient(val baseUrl: String) { val builder: OkHttpClient.Builder = OkHttpClient.Builder() } + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + protected fun guessContentTypeFromFile(file: File): String { + val contentType = URLConnection.guessContentTypeFromName(file.name) + return contentType ?: "application/octet-stream" + } + protected inline fun <reified T> requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { content is File -> content.asRequestBody( mediaType.toMediaTypeOrNull() ) - mediaType == FormDataMediaType || mediaType == FormUrlEncMediaType -> { + mediaType == FormDataMediaType -> { + MultipartBody.Builder() + .setType(MultipartBody.FORM) + .apply { + // content's type *must* be Map<String, Any?> + @Suppress("UNCHECKED_CAST") + (content as Map<String, Any?>).forEach { (key, value) -> + if (value is File) { + val partHeaders = Headers.headersOf( + "Content-Disposition", + "form-data; name=\"$key\"; filename=\"${value.name}\"" + ) + val fileMediaType = guessContentTypeFromFile(value).toMediaTypeOrNull() + addPart(partHeaders, value.asRequestBody(fileMediaType)) + } else { + val partHeaders = Headers.headersOf( + "Content-Disposition", + "form-data; name=\"$key\"" + ) + addPart( + partHeaders, + parameterToString(value).toRequestBody(null) + ) + } + } + }.build() + } + mediaType == FormUrlEncMediaType -> { FormBody.Builder().apply { - // content's type *must* be Map<String, Any> + // content's type *must* be Map<String, Any?> @Suppress("UNCHECKED_CAST") - (content as Map<String,String>).forEach { (key, value) -> - add(key, value) + (content as Map<String, Any?>).forEach { (key, value) -> + add(key, parameterToString(value)) } }.build() } @@ -139,12 +186,13 @@ open class ApiClient(val baseUrl: String) { response.headers.toMultimap() ) response.isClientError -> return ClientError( + response.message, response.body?.string(), response.code, response.headers.toMultimap() ) else -> return ServerError( - null, + response.message, response.body?.string(), response.code, response.headers.toMultimap() @@ -152,7 +200,33 @@ open class ApiClient(val baseUrl: String) { } } + protected fun parameterToString(value: Any?): String { + when (value) { + null -> { + return "" + } + is Array<*> -> { + return toMultiValue(value, "csv").toString() + } + is Iterable<*> -> { + return toMultiValue(value, "csv").toString() + } + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { + return parseDateToQueryString<Any>(value) + } + else -> { + return value.toString() + } + } + } + protected inline fun <reified T: Any> parseDateToQueryString(value : T): String { - return value.toString() + /* + .replace("\"", "") converts the json object string to an actual string for the query parameter. + The moshi or gson adapter allows a more generic solution instead of trying to use a native + formatter. It also easily allows to provide a simple way to define a custom date format pattern + inside a gson/moshi adapter. + */ + return Serializer.moshi.adapter(T::class.java).toJson(value).replace("\"", "") } } diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt similarity index 90% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt index f1a8aecc914..9dc8d8dbbfa 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt @@ -4,7 +4,9 @@ enum class ResponseType { Success, Informational, Redirection, ClientError, ServerError } -abstract class ApiInfrastructureResponse<T>(val responseType: ResponseType) { +interface Response + +abstract class ApiInfrastructureResponse<T>(val responseType: ResponseType): Response { abstract val statusCode: Int abstract val headers: Map<String,List<String>> } @@ -27,6 +29,7 @@ class Redirection<T>( ) : ApiInfrastructureResponse<T>(ResponseType.Redirection) class ClientError<T>( + val message: String? = null, val body: Any? = null, override val statusCode: Int = -1, override val headers: Map<String, List<String>> = mapOf() diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt similarity index 100% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/ApplicationDelegates.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt new file mode 100644 index 00000000000..ff5e2a81ee8 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt @@ -0,0 +1,12 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson + +class ByteArrayAdapter { + @ToJson + fun toJson(data: ByteArray): String = String(data) + + @FromJson + fun fromJson(data: String): ByteArray = data.toByteArray() +} diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt similarity index 71% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt index 41f529a5f36..b5310e71f13 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt @@ -3,14 +3,14 @@ package org.openapitools.client.infrastructure import java.lang.RuntimeException -open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1) : RuntimeException(message) { +open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) { companion object { private const val serialVersionUID: Long = 123L } } -open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1) : RuntimeException(message) { +open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) { companion object { private const val serialVersionUID: Long = 456L diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt new file mode 100644 index 00000000000..b2e1654479a --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +class LocalDateAdapter { + @ToJson + fun toJson(value: LocalDate): String { + return DateTimeFormatter.ISO_LOCAL_DATE.format(value) + } + + @FromJson + fun fromJson(value: String): LocalDate { + return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE) + } + +} diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt new file mode 100644 index 00000000000..e082db94811 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + +class LocalDateTimeAdapter { + @ToJson + fun toJson(value: LocalDateTime): String { + return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value) + } + + @FromJson + fun fromJson(value: String): LocalDateTime { + return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME) + } + +} diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt new file mode 100644 index 00000000000..87437871a31 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt @@ -0,0 +1,19 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.time.OffsetDateTime +import java.time.format.DateTimeFormatter + +class OffsetDateTimeAdapter { + @ToJson + fun toJson(value: OffsetDateTime): String { + return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value) + } + + @FromJson + fun fromJson(value: String): OffsetDateTime { + return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME) + } + +} diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt similarity index 100% rename from samples/client/petstore/kotlin/bin/org/openapitools/client/infrastructure/RequestMethod.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt similarity index 100% rename from samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt new file mode 100644 index 00000000000..697559b2ec1 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -0,0 +1,23 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.Moshi +import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter +import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory +import java.util.Date + +object Serializer { + @JvmStatic + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + + @JvmStatic + val moshi: Moshi by lazy { + moshiBuilder.build() + } +} diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt new file mode 100644 index 00000000000..a4a44cc18b7 --- /dev/null +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.util.UUID + +class UUIDAdapter { + @ToJson + fun toJson(uuid: UUID) = uuid.toString() + + @FromJson + fun fromJson(s: String) = UUID.fromString(s) +} diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt similarity index 69% rename from samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt rename to samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt index 14d9c16c408..1d31ee94c35 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt @@ -19,6 +19,7 @@ import com.squareup.moshi.Json * Values: MY_FIRST_VALUE,MY_SECOND_VALUE */ + enum class PetEnum(val value: kotlin.String){ @@ -31,5 +32,13 @@ enum class PetEnum(val value: kotlin.String){ + /** + This override toString avoids using the enum var name and uses the actual api value instead. + In cases the var name and value are different, the client would send incorrect enums to the server. + **/ + override fun toString(): String { + return value + } + } -- GitLab From 69b18dd8082e2ae97903848e727e022465843534 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Fri, 20 Mar 2020 11:31:37 +0100 Subject: [PATCH 02/15] remove unnecessary sample project --- .../coroutines/.openapi-generator-ignore | 23 -- .../coroutines/.openapi-generator/VERSION | 1 - .../kotlin/retrofit2/coroutines/README.md | 90 ----- .../kotlin/retrofit2/coroutines/build.gradle | 40 --- .../retrofit2/coroutines/docs/ApiResponse.md | 12 - .../retrofit2/coroutines/docs/Category.md | 11 - .../kotlin/retrofit2/coroutines/docs/Order.md | 22 -- .../kotlin/retrofit2/coroutines/docs/Pet.md | 22 -- .../retrofit2/coroutines/docs/PetApi.md | 336 ------------------ .../retrofit2/coroutines/docs/StoreApi.md | 166 --------- .../kotlin/retrofit2/coroutines/docs/Tag.md | 11 - .../kotlin/retrofit2/coroutines/docs/User.md | 17 - .../retrofit2/coroutines/docs/UserApi.md | 326 ----------------- .../retrofit2/coroutines/settings.gradle | 2 - .../org/openapitools/client/apis/PetApi.kt | 122 ------- .../org/openapitools/client/apis/StoreApi.kt | 62 ---- .../org/openapitools/client/apis/UserApi.kt | 113 ------ .../openapitools/client/auth/HttpBasicAuth.kt | 33 -- .../client/auth/HttpBearerAuth.kt | 39 -- .../client/infrastructure/ApiClient.kt | 84 ----- .../client/infrastructure/ByteArrayAdapter.kt | 12 - .../infrastructure/CollectionFormats.kt | 56 --- .../client/infrastructure/LocalDateAdapter.kt | 19 - .../infrastructure/LocalDateTimeAdapter.kt | 19 - .../infrastructure/OffsetDateTimeAdapter.kt | 19 - .../client/infrastructure/Serializer.kt | 23 -- .../client/infrastructure/UUIDAdapter.kt | 13 - .../openapitools/client/models/ApiResponse.kt | 34 -- .../openapitools/client/models/Category.kt | 30 -- .../org/openapitools/client/models/Order.kt | 60 ---- .../org/openapitools/client/models/Pet.kt | 62 ---- .../org/openapitools/client/models/Tag.kt | 30 -- .../org/openapitools/client/models/User.kt | 55 --- 33 files changed, 1964 deletions(-) delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/README.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt delete mode 100644 samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore b/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore deleted file mode 100644 index 7484ee590a3..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# OpenAPI Generator Ignore -# Generated by openapi-generator https://github.com/openapitools/openapi-generator - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION b/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION deleted file mode 100644 index bfbf77eb7fa..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -4.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/README.md b/samples/client/petstore/kotlin/retrofit2/coroutines/README.md deleted file mode 100644 index f374ed0b99f..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# org.openapitools.client - Kotlin client library for OpenAPI Petstore - -## Requires - -* Kotlin 1.3.61 -* Gradle 4.9 - -## Build - -First, create the gradle wrapper script: - -``` -gradle wrapper -``` - -Then, run: - -``` -./gradlew check assemble -``` - -This runs all tests and packages the library. - -## Features/Implementation Notes - -* Supports JSON inputs/outputs, File inputs, and Form inputs. -* Supports collection formats for query parameters: csv, tsv, ssv, pipes. -* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. -* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. - -<a name="documentation-for-api-endpoints"></a> -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** pet | Add a new pet to the store -*PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](docs/PetApi.md#getpetbyid) | **GET** pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](docs/PetApi.md#updatepet) | **PUT** pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](docs/PetApi.md#uploadfile) | **POST** pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](docs/StoreApi.md#getinventory) | **GET** store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](docs/StoreApi.md#getorderbyid) | **GET** store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeorder) | **POST** store/order | Place an order for a pet -*UserApi* | [**createUser**](docs/UserApi.md#createuser) | **POST** user | Create user -*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](docs/UserApi.md#deleteuser) | **DELETE** user/{username} | Delete user -*UserApi* | [**getUserByName**](docs/UserApi.md#getuserbyname) | **GET** user/{username} | Get user by user name -*UserApi* | [**loginUser**](docs/UserApi.md#loginuser) | **GET** user/login | Logs user into the system -*UserApi* | [**logoutUser**](docs/UserApi.md#logoutuser) | **GET** user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](docs/UserApi.md#updateuser) | **PUT** user/{username} | Updated user - - -<a name="documentation-for-models"></a> -## Documentation for Models - - - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md) - - [org.openapitools.client.models.Category](docs/Category.md) - - [org.openapitools.client.models.Order](docs/Order.md) - - [org.openapitools.client.models.Pet](docs/Pet.md) - - [org.openapitools.client.models.Tag](docs/Tag.md) - - [org.openapitools.client.models.User](docs/User.md) - - -<a name="documentation-for-authorization"></a> -## Documentation for Authorization - -<a name="api_key"></a> -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -<a name="petstore_auth"></a> -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle b/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle deleted file mode 100644 index 392d9a352e6..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/build.gradle +++ /dev/null @@ -1,40 +0,0 @@ -group 'org.openapitools' -version '1.0.0' - -wrapper { - gradleVersion = '4.9' - distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" -} - -buildscript { - ext.kotlin_version = '1.3.61' - ext.retrofitVersion = '2.6.2' - - repositories { - maven { url "https://repo1.maven.org/maven2" } - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -apply plugin: 'kotlin' - -repositories { - maven { url "https://repo1.maven.org/maven2" } -} - -test { - useJUnitPlatform() -} - -dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.9.2" - compile "com.squareup.moshi:moshi-adapters:1.9.2" - compile "com.squareup.retrofit2:retrofit:$retrofitVersion" - compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" - compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md deleted file mode 100644 index 6b4c6bf2779..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/ApiResponse.md +++ /dev/null @@ -1,12 +0,0 @@ - -# ApiResponse - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**code** | **kotlin.Int** | | [optional] -**type** | **kotlin.String** | | [optional] -**message** | **kotlin.String** | | [optional] - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md deleted file mode 100644 index 2c28a670fc7..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Category.md +++ /dev/null @@ -1,11 +0,0 @@ - -# Category - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**id** | **kotlin.Long** | | [optional] -**name** | **kotlin.String** | | [optional] - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md deleted file mode 100644 index 5112f08958d..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Order.md +++ /dev/null @@ -1,22 +0,0 @@ - -# Order - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**id** | **kotlin.Long** | | [optional] -**petId** | **kotlin.Long** | | [optional] -**quantity** | **kotlin.Int** | | [optional] -**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) | | [optional] -**status** | [**inline**](#StatusEnum) | Order Status | [optional] -**complete** | **kotlin.Boolean** | | [optional] - - -<a name="StatusEnum"></a> -## Enum: status -Name | Value ----- | ----- -status | placed, approved, delivered - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md deleted file mode 100644 index 70c340005d1..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Pet.md +++ /dev/null @@ -1,22 +0,0 @@ - -# Pet - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**name** | **kotlin.String** | | -**photoUrls** | **kotlin.Array<kotlin.String>** | | -**id** | **kotlin.Long** | | [optional] -**category** | [**Category**](Category.md) | | [optional] -**tags** | [**kotlin.Array<Tag>**](Tag.md) | | [optional] -**status** | [**inline**](#StatusEnum) | pet status in the store | [optional] - - -<a name="StatusEnum"></a> -## Enum: status -Name | Value ----- | ----- -status | available, pending, sold - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md deleted file mode 100644 index f7d027b6922..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/PetApi.md +++ /dev/null @@ -1,336 +0,0 @@ -# PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** pet/{petId}/uploadImage | uploads an image - - - -Add a new pet to the store - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val body : Pet = // Pet | Pet object that needs to be added to the store - -launch(Dispatchers.IO) { - webService.addPet(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | - -### Return type - -null (empty response body) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: Not defined - - -Deletes a pet - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete -val apiKey : kotlin.String = apiKey_example // kotlin.String | - -launch(Dispatchers.IO) { - webService.deletePet(petId, apiKey) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | **kotlin.Long**| Pet id to delete | - **apiKey** | **kotlin.String**| | [optional] - -### Return type - -null (empty response body) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Finds Pets by status - -Multiple status values can be provided with comma separated strings - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val status : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Status values that need to be considered for filter - -launch(Dispatchers.IO) { - val result : kotlin.Array<Pet> = webService.findPetsByStatus(status) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold] - -### Return type - -[**kotlin.Array<Pet>**](Pet.md) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Finds Pets by tags - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val tags : kotlin.Array<kotlin.String> = // kotlin.Array<kotlin.String> | Tags to filter by - -launch(Dispatchers.IO) { - val result : kotlin.Array<Pet> = webService.findPetsByTags(tags) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | [**kotlin.Array<kotlin.String>**](kotlin.String.md)| Tags to filter by | - -### Return type - -[**kotlin.Array<Pet>**](Pet.md) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Find pet by ID - -Returns a single pet - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return - -launch(Dispatchers.IO) { - val result : Pet = webService.getPetById(petId) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | **kotlin.Long**| ID of pet to return | - -### Return type - -[**Pet**](Pet.md) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Update an existing pet - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val body : Pet = // Pet | Pet object that needs to be added to the store - -launch(Dispatchers.IO) { - webService.updatePet(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | - -### Return type - -null (empty response body) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: Not defined - - -Updates a pet in the store with form data - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated -val name : kotlin.String = name_example // kotlin.String | Updated name of the pet -val status : kotlin.String = status_example // kotlin.String | Updated status of the pet - -launch(Dispatchers.IO) { - webService.updatePetWithForm(petId, name, status) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | **kotlin.Long**| ID of pet that needs to be updated | - **name** | **kotlin.String**| Updated name of the pet | [optional] - **status** | **kotlin.String**| Updated status of the pet | [optional] - -### Return type - -null (empty response body) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -uploads an image - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(PetApi::class.java) -val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update -val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload - -launch(Dispatchers.IO) { - val result : ApiResponse = webService.uploadFile(petId, additionalMetadata, file) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | **kotlin.Long**| ID of pet to update | - **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] - **file** | **java.io.File**| file to upload | [optional] - -### Return type - -[**ApiResponse**](ApiResponse.md) - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md deleted file mode 100644 index 95bf7785cad..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/StoreApi.md +++ /dev/null @@ -1,166 +0,0 @@ -# StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** store/order | Place an order for a pet - - - -Delete purchase order by ID - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(StoreApi::class.java) -val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted - -launch(Dispatchers.IO) { - webService.deleteOrder(orderId) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | **kotlin.String**| ID of the order that needs to be deleted | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Returns pet inventories by status - -Returns a map of status codes to quantities - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(StoreApi::class.java) - -launch(Dispatchers.IO) { - val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = webService.getInventory() -} -``` - -### Parameters -This endpoint does not need any parameter. - -### Return type - -**kotlin.collections.Map<kotlin.String, kotlin.Int>** - -### Authorization - - - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -Find purchase order by ID - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(StoreApi::class.java) -val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched - -launch(Dispatchers.IO) { - val result : Order = webService.getOrderById(orderId) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | **kotlin.Long**| ID of pet that needs to be fetched | - -### Return type - -[**Order**](Order.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Place an order for a pet - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(StoreApi::class.java) -val body : Order = // Order | order placed for purchasing the pet - -launch(Dispatchers.IO) { - val result : Order = webService.placeOrder(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**Order**](Order.md)| order placed for purchasing the pet | - -### Return type - -[**Order**](Order.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md deleted file mode 100644 index 60ce1bcdbad..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/Tag.md +++ /dev/null @@ -1,11 +0,0 @@ - -# Tag - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**id** | **kotlin.Long** | | [optional] -**name** | **kotlin.String** | | [optional] - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md deleted file mode 100644 index e801729b5ed..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/User.md +++ /dev/null @@ -1,17 +0,0 @@ - -# User - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**id** | **kotlin.Long** | | [optional] -**username** | **kotlin.String** | | [optional] -**firstName** | **kotlin.String** | | [optional] -**lastName** | **kotlin.String** | | [optional] -**email** | **kotlin.String** | | [optional] -**password** | **kotlin.String** | | [optional] -**phone** | **kotlin.String** | | [optional] -**userStatus** | **kotlin.Int** | User Status | [optional] - - - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md b/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md deleted file mode 100644 index d9c78d7fba8..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/docs/UserApi.md +++ /dev/null @@ -1,326 +0,0 @@ -# UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** user/{username} | Updated user - - - -Create user - -This can only be done by the logged in user. - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val body : User = // User | Created user object - -launch(Dispatchers.IO) { - webService.createUser(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**User**](User.md)| Created user object | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Creates list of users with given input array - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object - -launch(Dispatchers.IO) { - webService.createUsersWithArrayInput(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**kotlin.Array<User>**](User.md)| List of user object | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Creates list of users with given input array - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val body : kotlin.Array<User> = // kotlin.Array<User> | List of user object - -launch(Dispatchers.IO) { - webService.createUsersWithListInput(body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **body** | [**kotlin.Array<User>**](User.md)| List of user object | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Delete user - -This can only be done by the logged in user. - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted - -launch(Dispatchers.IO) { - webService.deleteUser(username) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **kotlin.String**| The name that needs to be deleted | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Get user by user name - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing. - -launch(Dispatchers.IO) { - val result : User = webService.getUserByName(username) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **kotlin.String**| The name that needs to be fetched. Use user1 for testing. | - -### Return type - -[**User**](User.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Logs user into the system - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val username : kotlin.String = username_example // kotlin.String | The user name for login -val password : kotlin.String = password_example // kotlin.String | The password for login in clear text - -launch(Dispatchers.IO) { - val result : kotlin.String = webService.loginUser(username, password) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **kotlin.String**| The user name for login | - **password** | **kotlin.String**| The password for login in clear text | - -### Return type - -**kotlin.String** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -Logs out current logged in user session - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) - -launch(Dispatchers.IO) { - webService.logoutUser() -} -``` - -### Parameters -This endpoint does not need any parameter. - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -Updated user - -This can only be done by the logged in user. - -### Example -```kotlin -// Import classes: -//import org.openapitools.client.* -//import org.openapitools.client.infrastructure.* -//import org.openapitools.client.models.* - -val apiClient = ApiClient() -val webService = apiClient.createWebservice(UserApi::class.java) -val username : kotlin.String = username_example // kotlin.String | name that need to be deleted -val body : User = // User | Updated user object - -launch(Dispatchers.IO) { - webService.updateUser(username, body) -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **kotlin.String**| name that need to be deleted | - **body** | [**User**](User.md)| Updated user object | - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle b/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle deleted file mode 100644 index c05ae91b053..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ - -rootProject.name = 'kotlin-petstore-retrofit2-coroutines' \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt deleted file mode 100644 index 8a64e1a9b10..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ /dev/null @@ -1,122 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Response -import okhttp3.RequestBody - -import org.openapitools.client.models.ApiResponse -import org.openapitools.client.models.Pet - -interface PetApi { - /** - * Add a new pet to the store - * - * Responses: - * - 405: Invalid input - * - * @param body Pet object that needs to be added to the store - * @return [Unit] - */ - @POST("pet") - suspend fun addPet(@Body body: Pet): Response<Unit> - - /** - * Deletes a pet - * - * Responses: - * - 400: Invalid pet value - * - * @param petId Pet id to delete - * @param apiKey (optional) - * @return [Unit] - */ - @DELETE("pet/{petId}") - suspend fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Response<Unit> - - /** - * Finds Pets by status - * Multiple status values can be provided with comma separated strings - * Responses: - * - 200: successful operation - * - 400: Invalid status value - * - * @param status Status values that need to be considered for filter - * @return [kotlin.Array<Pet>] - */ - @GET("pet/findByStatus") - suspend fun findPetsByStatus(@Query("status") status: CSVParams): Response<kotlin.Array<Pet>> - - /** - * Finds Pets by tags - * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - * Responses: - * - 200: successful operation - * - 400: Invalid tag value - * - * @param tags Tags to filter by - * @return [kotlin.Array<Pet>] - */ - @Deprecated("This api was deprecated") - @GET("pet/findByTags") - suspend fun findPetsByTags(@Query("tags") tags: CSVParams): Response<kotlin.Array<Pet>> - - /** - * Find pet by ID - * Returns a single pet - * Responses: - * - 200: successful operation - * - 400: Invalid ID supplied - * - 404: Pet not found - * - * @param petId ID of pet to return - * @return [Pet] - */ - @GET("pet/{petId}") - suspend fun getPetById(@Path("petId") petId: kotlin.Long): Response<Pet> - - /** - * Update an existing pet - * - * Responses: - * - 400: Invalid ID supplied - * - 404: Pet not found - * - 405: Validation exception - * - * @param body Pet object that needs to be added to the store - * @return [Unit] - */ - @PUT("pet") - suspend fun updatePet(@Body body: Pet): Response<Unit> - - /** - * Updates a pet in the store with form data - * - * Responses: - * - 405: Invalid input - * - * @param petId ID of pet that needs to be updated - * @param name Updated name of the pet (optional) - * @param status Updated status of the pet (optional) - * @return [Unit] - */ - @FormUrlEncoded - @POST("pet/{petId}") - suspend fun updatePetWithForm(@Path("petId") petId: kotlin.Long, @Field("name") name: kotlin.String, @Field("status") status: kotlin.String): Response<Unit> - - /** - * uploads an image - * - * Responses: - * - 200: successful operation - * - * @param petId ID of pet to update - * @param additionalMetadata Additional data to pass to server (optional) - * @param file file to upload (optional) - * @return [ApiResponse] - */ - @Multipart - @POST("pet/{petId}/uploadImage") - suspend fun uploadFile(@Path("petId") petId: kotlin.Long, @Part("additionalMetadata") additionalMetadata: kotlin.String, @Part file: MultipartBody.Part ): Response<ApiResponse> - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt deleted file mode 100644 index a9c026f1e4c..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ /dev/null @@ -1,62 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Response -import okhttp3.RequestBody - -import org.openapitools.client.models.Order - -interface StoreApi { - /** - * Delete purchase order by ID - * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - * Responses: - * - 400: Invalid ID supplied - * - 404: Order not found - * - * @param orderId ID of the order that needs to be deleted - * @return [Unit] - */ - @DELETE("store/order/{orderId}") - suspend fun deleteOrder(@Path("orderId") orderId: kotlin.String): Response<Unit> - - /** - * Returns pet inventories by status - * Returns a map of status codes to quantities - * Responses: - * - 200: successful operation - * - * @return [kotlin.collections.Map<kotlin.String, kotlin.Int>] - */ - @GET("store/inventory") - suspend fun getInventory(): Response<kotlin.collections.Map<kotlin.String, kotlin.Int>> - - /** - * Find purchase order by ID - * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - * Responses: - * - 200: successful operation - * - 400: Invalid ID supplied - * - 404: Order not found - * - * @param orderId ID of pet that needs to be fetched - * @return [Order] - */ - @GET("store/order/{orderId}") - suspend fun getOrderById(@Path("orderId") orderId: kotlin.Long): Response<Order> - - /** - * Place an order for a pet - * - * Responses: - * - 200: successful operation - * - 400: Invalid Order - * - * @param body order placed for purchasing the pet - * @return [Order] - */ - @POST("store/order") - suspend fun placeOrder(@Body body: Order): Response<Order> - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt deleted file mode 100644 index c18c38a100a..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ /dev/null @@ -1,113 +0,0 @@ -package org.openapitools.client.apis - -import org.openapitools.client.infrastructure.CollectionFormats.* -import retrofit2.http.* -import retrofit2.Response -import okhttp3.RequestBody - -import org.openapitools.client.models.User - -interface UserApi { - /** - * Create user - * This can only be done by the logged in user. - * Responses: - * - 0: successful operation - * - * @param body Created user object - * @return [Unit] - */ - @POST("user") - suspend fun createUser(@Body body: User): Response<Unit> - - /** - * Creates list of users with given input array - * - * Responses: - * - 0: successful operation - * - * @param body List of user object - * @return [Unit] - */ - @POST("user/createWithArray") - suspend fun createUsersWithArrayInput(@Body body: kotlin.Array<User>): Response<Unit> - - /** - * Creates list of users with given input array - * - * Responses: - * - 0: successful operation - * - * @param body List of user object - * @return [Unit] - */ - @POST("user/createWithList") - suspend fun createUsersWithListInput(@Body body: kotlin.Array<User>): Response<Unit> - - /** - * Delete user - * This can only be done by the logged in user. - * Responses: - * - 400: Invalid username supplied - * - 404: User not found - * - * @param username The name that needs to be deleted - * @return [Unit] - */ - @DELETE("user/{username}") - suspend fun deleteUser(@Path("username") username: kotlin.String): Response<Unit> - - /** - * Get user by user name - * - * Responses: - * - 200: successful operation - * - 400: Invalid username supplied - * - 404: User not found - * - * @param username The name that needs to be fetched. Use user1 for testing. - * @return [User] - */ - @GET("user/{username}") - suspend fun getUserByName(@Path("username") username: kotlin.String): Response<User> - - /** - * Logs user into the system - * - * Responses: - * - 200: successful operation - * - 400: Invalid username/password supplied - * - * @param username The user name for login - * @param password The password for login in clear text - * @return [kotlin.String] - */ - @GET("user/login") - suspend fun loginUser(@Query("username") username: kotlin.String, @Query("password") password: kotlin.String): Response<kotlin.String> - - /** - * Logs out current logged in user session - * - * Responses: - * - 0: successful operation - * - * @return [Unit] - */ - @GET("user/logout") - suspend fun logoutUser(): Response<Unit> - - /** - * Updated user - * This can only be done by the logged in user. - * Responses: - * - 400: Invalid user supplied - * - 404: User not found - * - * @param username name that need to be deleted - * @param body Updated user object - * @return [Unit] - */ - @PUT("user/{username}") - suspend fun updateUser(@Path("username") username: kotlin.String, @Body body: User): Response<Unit> - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt deleted file mode 100644 index 575bea19540..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt +++ /dev/null @@ -1,33 +0,0 @@ -package org.openapitools.client.auth - -import java.io.IOException - -import kotlin.jvm.Throws -import okhttp3.Interceptor -import okhttp3.Interceptor.Chain -import okhttp3.Response -import okhttp3.Credentials - -class HttpBasicAuth( - private var username: String = "", - private var password: String = "" -) : Interceptor { - - fun setCredentials(username: String, password: String) { - this.username = username - this.password = password - } - - @Throws(IOException::class) - override fun intercept(chain: Chain): Response { - var request = chain.request() - - // If the request already have an authorization (eg. Basic auth), do nothing - if (request.header("Authorization") == null && username.isNotBlank() && password.isNotBlank()) { - request = request.newBuilder() - .addHeader("Authorization", Credentials.basic(username, password)) - .build() - } - return chain.proceed(request) - } -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt deleted file mode 100644 index 775ad903c43..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt +++ /dev/null @@ -1,39 +0,0 @@ -package org.openapitools.client.auth - -import java.io.IOException - -import okhttp3.Interceptor -import okhttp3.Interceptor.Chain -import okhttp3.Response - -class HttpBearerAuth( - private var schema: String = "", - var bearerToken: String = "" -) : Interceptor { - - @Throws(IOException::class) - override fun intercept(chain: Chain): Response { - var request = chain.request() - - // If the request already have an authorization (eg. Basic auth), do nothing - if (request.header("Authorization") == null && bearerToken.isNotBlank()) { - request = request.newBuilder() - .addHeader("Authorization", headerValue()) - .build() - } - return chain.proceed(request) - } - - private fun headerValue(): String { - return if (schema.isNotBlank()) { - "${upperCaseBearer()} $bearerToken" - } else { - bearerToken - } - } - - private fun upperCaseBearer(): String { - return if (schema.toLowerCase().equals("bearer")) "Bearer" else schema - } - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt deleted file mode 100644 index aecba0cd55b..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ /dev/null @@ -1,84 +0,0 @@ -package org.openapitools.client.infrastructure - -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.scalars.ScalarsConverterFactory -import com.squareup.moshi.Moshi -import retrofit2.converter.moshi.MoshiConverterFactory - -class ApiClient( - private var baseUrl: String = BASE_URL, - private val okHttpClientBuilder: OkHttpClient.Builder? = null, - private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder -) { - private val apiAuthorizations = mutableMapOf<String, Interceptor>() - - private val retrofitBuilder: Retrofit.Builder by lazy { - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - } - - private val clientBuilder: OkHttpClient.Builder by lazy { - okHttpClientBuilder ?: defaultClientBuilder - } - - private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient().newBuilder() - } - - init { - normalizeBaseUrl() - } - - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, - authNames: Array<String> - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { - authNames.forEach { authName -> - val auth = when (authName) { - "api_key" -> "petstore_auth" -> - else -> throw RuntimeException("auth name $authName not found in available auth names") - } - addAuthorization(authName, auth); - } - } - - /** - * Adds an authorization to be used by the client - * @param authName Authentication name - * @param authorization Authorization interceptor - * @return ApiClient - */ - fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { - if (apiAuthorizations.containsKey(authName)) { - throw RuntimeException("auth name $authName already in api authorizations") - } - apiAuthorizations[authName] = authorization - clientBuilder.addInterceptor(authorization) - return this - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } - - private inline fun <T, reified U> Iterable<T>.firstAs(): U { - for (element in this) if (element is U) return element - throw NoSuchElementException("Collection contains no element for generic parameter U") - } - - companion object { - const val BASE_URL: String = "http://petstore.swagger.io/v2" - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt deleted file mode 100644 index ff5e2a81ee8..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson - -class ByteArrayAdapter { - @ToJson - fun toJson(data: ByteArray): String = String(data) - - @FromJson - fun fromJson(data: String): ByteArray = data.toByteArray() -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt deleted file mode 100644 index 001e99325d2..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt +++ /dev/null @@ -1,56 +0,0 @@ -package org.openapitools.client.infrastructure - -class CollectionFormats { - - open class CSVParams { - - var params: List<String> - - constructor(params: List<String>) { - this.params = params - } - - constructor(vararg params: String) { - this.params = listOf(*params) - } - - override fun toString(): String { - return params.joinToString(",") - } - } - - open class SSVParams : CSVParams { - - constructor(params: List<String>) : super(params) - - constructor(vararg params: String) : super(*params) - - override fun toString(): String { - return params.joinToString(" ") - } - } - - class TSVParams : CSVParams { - - constructor(params: List<String>) : super(params) - - constructor(vararg params: String) : super(*params) - - override fun toString(): String { - return params.joinToString("\t") - } - } - - class PIPESParams : CSVParams { - - constructor(params: List<String>) : super(params) - - constructor(vararg params: String) : super(*params) - - override fun toString(): String { - return params.joinToString("|") - } - } - - class SPACEParams : SSVParams() -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt deleted file mode 100644 index b2e1654479a..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson -import java.time.LocalDate -import java.time.format.DateTimeFormatter - -class LocalDateAdapter { - @ToJson - fun toJson(value: LocalDate): String { - return DateTimeFormatter.ISO_LOCAL_DATE.format(value) - } - - @FromJson - fun fromJson(value: String): LocalDate { - return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE) - } - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt deleted file mode 100644 index e082db94811..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter - -class LocalDateTimeAdapter { - @ToJson - fun toJson(value: LocalDateTime): String { - return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value) - } - - @FromJson - fun fromJson(value: String): LocalDateTime { - return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME) - } - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt deleted file mode 100644 index 87437871a31..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson -import java.time.OffsetDateTime -import java.time.format.DateTimeFormatter - -class OffsetDateTimeAdapter { - @ToJson - fun toJson(value: OffsetDateTime): String { - return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value) - } - - @FromJson - fun fromJson(value: String): OffsetDateTime { - return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME) - } - -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt deleted file mode 100644 index 697559b2ec1..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.Moshi -import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter -import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory -import java.util.Date - -object Serializer { - @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - - @JvmStatic - val moshi: Moshi by lazy { - moshiBuilder.build() - } -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt deleted file mode 100644 index a4a44cc18b7..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ /dev/null @@ -1,13 +0,0 @@ -package org.openapitools.client.infrastructure - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson -import java.util.UUID - -class UUIDAdapter { - @ToJson - fun toJson(uuid: UUID) = uuid.toString() - - @FromJson - fun fromJson(s: String) = UUID.fromString(s) -} diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt deleted file mode 100644 index 5078a38f945..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt +++ /dev/null @@ -1,34 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * Describes the result of uploading an image resource - * @param code - * @param type - * @param message - */ - -data class ApiResponse ( - @Json(name = "code") - val code: kotlin.Int? = null -, - @Json(name = "type") - val type: kotlin.String? = null -, - @Json(name = "message") - val message: kotlin.String? = null - -) - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt deleted file mode 100644 index 5473b36a379..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt +++ /dev/null @@ -1,30 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * A category for a pet - * @param id - * @param name - */ - -data class Category ( - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "name") - val name: kotlin.String? = null - -) - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt deleted file mode 100644 index f59f4a0cd97..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt +++ /dev/null @@ -1,60 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * An order for a pets from the pet store - * @param id - * @param petId - * @param quantity - * @param shipDate - * @param status Order Status - * @param complete - */ - -data class Order ( - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "petId") - val petId: kotlin.Long? = null -, - @Json(name = "quantity") - val quantity: kotlin.Int? = null -, - @Json(name = "shipDate") - val shipDate: java.time.OffsetDateTime? = null -, - /* Order Status */ - @Json(name = "status") - val status: Order.Status? = null -, - @Json(name = "complete") - val complete: kotlin.Boolean? = null - -) { - - /** - * Order Status - * Values: placed,approved,delivered - */ - - - enum class Status(val value: kotlin.String){ - @Json(name = "placed") placed("placed"), - @Json(name = "approved") approved("approved"), - @Json(name = "delivered") delivered("delivered"); - } -} - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt deleted file mode 100644 index 9830ead3359..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt +++ /dev/null @@ -1,62 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - -import org.openapitools.client.models.Category -import org.openapitools.client.models.Tag - -import com.squareup.moshi.Json -/** - * A pet for sale in the pet store - * @param name - * @param photoUrls - * @param id - * @param category - * @param tags - * @param status pet status in the store - */ - -data class Pet ( - @Json(name = "name") - val name: kotlin.String -, - @Json(name = "photoUrls") - val photoUrls: kotlin.Array<kotlin.String> -, - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "category") - val category: Category? = null -, - @Json(name = "tags") - val tags: kotlin.Array<Tag>? = null -, - /* pet status in the store */ - @Json(name = "status") - val status: Pet.Status? = null - -) { - - /** - * pet status in the store - * Values: available,pending,sold - */ - - - enum class Status(val value: kotlin.String){ - @Json(name = "available") available("available"), - @Json(name = "pending") pending("pending"), - @Json(name = "sold") sold("sold"); - } -} - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt deleted file mode 100644 index ccdd4390d1a..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt +++ /dev/null @@ -1,30 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * A tag for a pet - * @param id - * @param name - */ - -data class Tag ( - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "name") - val name: kotlin.String? = null - -) - diff --git a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt deleted file mode 100644 index e2679988c51..00000000000 --- a/samples/client/petstore/kotlin/retrofit2/coroutines/src/main/kotlin/org/openapitools/client/models/User.kt +++ /dev/null @@ -1,55 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * A User who is purchasing from the pet store - * @param id - * @param username - * @param firstName - * @param lastName - * @param email - * @param password - * @param phone - * @param userStatus User Status - */ - -data class User ( - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "username") - val username: kotlin.String? = null -, - @Json(name = "firstName") - val firstName: kotlin.String? = null -, - @Json(name = "lastName") - val lastName: kotlin.String? = null -, - @Json(name = "email") - val email: kotlin.String? = null -, - @Json(name = "password") - val password: kotlin.String? = null -, - @Json(name = "phone") - val phone: kotlin.String? = null -, - /* User Status */ - @Json(name = "userStatus") - val userStatus: kotlin.Int? = null - -) - -- GitLab From 824b9bb5566d7755cce0026d0dae5dfbedc23f6d Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Fri, 20 Mar 2020 12:03:16 +0100 Subject: [PATCH 03/15] fixed use of serializerBuilder in ApiClient --- .../jvm-retrofit2/infrastructure/ApiClient.kt.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 1e501cc5f27..6da8c47078b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -38,10 +38,10 @@ import retrofit2.converter.moshi.MoshiConverterFactory .baseUrl(baseUrl) .addConverterFactory(ScalarsConverterFactory.create()) {{#gson}} - .addConverterFactory(GsonConverterFactory.create(Serializer.gson)) + .addConverterFactory(GsonConverterFactory.create(serializerBuilder.create())) {{/gson}} {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build())) {{/moshi}} } -- GitLab From e0fd01cf6dec0ae2bc2256dd14e1d77ea61360df Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Mon, 23 Mar 2020 17:29:55 +0100 Subject: [PATCH 04/15] Add OAuth Intercepter to kotlin-retrofit2 --- .../openapitools/client/models/Category.kt | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt deleted file mode 100644 index 5473b36a379..00000000000 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt +++ /dev/null @@ -1,30 +0,0 @@ -/** -* OpenAPI Petstore -* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -* -* The version of the OpenAPI document: 1.0.0 -* -* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.client.models - - -import com.squareup.moshi.Json -/** - * A category for a pet - * @param id - * @param name - */ - -data class Category ( - @Json(name = "id") - val id: kotlin.Long? = null -, - @Json(name = "name") - val name: kotlin.String? = null - -) - -- GitLab From 96aa9873ee708662d25e6d4f61a984fc365d8df9 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Mon, 23 Mar 2020 17:30:12 +0100 Subject: [PATCH 05/15] Add OAuth Intercepter to kotlin-retrofit2 --- bin/kotlin-client-all.sh | 8 +- bin/windows/kotlin-client-all.bat | 9 +- bin/windows/kotlin-client-jackson.bat | 11 ++ .../kotlin-client-retrofit2-suspend.bat | 2 +- bin/windows/kotlin-client-uppercase-enum.bat | 10 + .../languages/KotlinClientCodegen.java | 4 + .../kotlin-client/build.gradle.mustache | 3 + .../kotlin-client/data_class_opt_var.mustache | 2 +- .../kotlin-client/data_class_req_var.mustache | 2 +- .../jvm-retrofit2/auth/ApiKeyAuth.kt.mustache | 49 +++++ .../jvm-retrofit2/auth/OAuth.kt.mustache | 151 +++++++++++++++ .../jvm-retrofit2/auth/OAuthFlow.kt.mustache | 5 + .../auth/OAuthOkHttpClient.kt.mustache | 61 +++++++ .../infrastructure/ApiClient.kt.mustache | 139 ++++++++++++-- .../kotlin/retrofit2-coroutines/build.gradle | 1 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../kotlin/retrofit2-coroutines/gradlew | 172 ++++++++++++++++++ .../kotlin/retrofit2-coroutines/gradlew.bat | 84 +++++++++ .../retrofit2-coroutines/local.properties | 8 + .../openapitools/client/auth/ApiKeyAuth.kt | 49 +++++ .../org/openapitools/client/auth/OAuth.kt | 151 +++++++++++++++ .../org/openapitools/client/auth/OAuthFlow.kt | 5 + .../client/auth/OAuthOkHttpClient.kt | 61 +++++++ .../client/infrastructure/ApiClient.kt | 117 +++++++++++- .../openapitools/client/models/ApiResponse.kt | 7 +- .../openapitools/client/models/Category.kt | 28 +++ .../org/openapitools/client/models/Order.kt | 16 +- .../org/openapitools/client/models/Pet.kt | 16 +- .../org/openapitools/client/models/Tag.kt | 4 +- .../org/openapitools/client/models/User.kt | 22 +-- 31 files changed, 1127 insertions(+), 76 deletions(-) create mode 100644 bin/windows/kotlin-client-jackson.bat create mode 100644 bin/windows/kotlin-client-uppercase-enum.bat create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthFlow.kt.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/gradlew create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/gradlew.bat create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/local.properties create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt create mode 100644 samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/bin/kotlin-client-all.sh b/bin/kotlin-client-all.sh index 137c6eb5e89..c4177e9c242 100755 --- a/bin/kotlin-client-all.sh +++ b/bin/kotlin-client-all.sh @@ -2,13 +2,15 @@ ./bin/kotlin-client-gson.sh ./bin/kotlin-client-jackson.sh +./bin/kotlin-client-json-request-string.sh ./bin/kotlin-client-moshi-codegen.sh ./bin/kotlin-client-nonpublic.sh +./bin/kotlin-client-nullable.sh ./bin/kotlin-client-okhttp3.sh ./bin/kotlin-client-petstore-multiplatform.sh ./bin/kotlin-client-petstore.sh +./bin/kotlin-client-retrofit2-suspend.sh +./bin/kotlin-client-retrofit2.sh ./bin/kotlin-client-string.sh ./bin/kotlin-client-threetenbp.sh -./bin/kotlin-client-nullable.sh -./bin/kotlin-client-retrofit2.sh -./bin/kotlin-client-json-request-string.sh +./bin/kotlin-client-uppercase-enum.sh diff --git a/bin/windows/kotlin-client-all.bat b/bin/windows/kotlin-client-all.bat index d4dd27a9f64..a785f7133eb 100644 --- a/bin/windows/kotlin-client-all.bat +++ b/bin/windows/kotlin-client-all.bat @@ -1,11 +1,14 @@ call powershell -command "& '%~dp0\kotlin-client-gson.bat'" +call powershell -command "& '%~dp0\kotlin-client-jackson.bat'" +call powershell -command "& '%~dp0\kotlin-client-json-request-string.bat'" call powershell -command "& '%~dp0\kotlin-client-moshi-codegen.bat'" call powershell -command "& '%~dp0\kotlin-client-nonpublic.bat'" +call powershell -command "& '%~dp0\kotlin-client-nullable.bat'" call powershell -command "& '%~dp0\kotlin-client-okhttp3.bat'" call powershell -command "& '%~dp0\kotlin-client-petstore-multiplatform.bat'" call powershell -command "& '%~dp0\kotlin-client-petstore.bat'" +call powershell -command "& '%~dp0\kotlin-client-retrofit2-suspend.bat'" +call powershell -command "& '%~dp0\kotlin-client-retrofit2.bat'" call powershell -command "& '%~dp0\kotlin-client-string.bat'" call powershell -command "& '%~dp0\kotlin-client-threetenbp.bat'" -call powershell -command "& '%~dp0\kotlin-client-nullable.bat'" -call powershell -command "& '%~dp0\kotlin-client-json-request-string.bat'" -call powershell -command "& '%~dp0\kotlin-client-retrofit2.bat'" \ No newline at end of file +call powershell -command "& '%~dp0\kotlin-client-uppercase-enum.bat'" diff --git a/bin/windows/kotlin-client-jackson.bat b/bin/windows/kotlin-client-jackson.bat new file mode 100644 index 00000000000..342533889bd --- /dev/null +++ b/bin/windows/kotlin-client-jackson.bat @@ -0,0 +1,11 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties +set ags=generate --artifact-id "kotlin-petstore-jackson" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --additional-properties serializationLibrary=jackson,serializationLibrary=jackson -o samples\client\petstore\kotlin\jackson + + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-retrofit2-suspend.bat b/bin/windows/kotlin-client-retrofit2-suspend.bat index 30c1e852947..4932f1ee0ca 100644 --- a/bin/windows/kotlin-client-retrofit2-suspend.bat +++ b/bin/windows/kotlin-client-retrofit2-suspend.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "kotlin-petstore-retrofit2" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-retrofit2 --useCoroutines true -o samples\client\petstore\kotlin\retrofit2\coroutines +set ags=generate --artifact-id "kotlin-petstore-retrofit2" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g kotlin --library jvm-retrofit2 --additional-properties useCoroutines=true -o samples\client\petstore\kotlin\retrofit2-coroutines java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/kotlin-client-uppercase-enum.bat b/bin/windows/kotlin-client-uppercase-enum.bat new file mode 100644 index 00000000000..c629542acd3 --- /dev/null +++ b/bin/windows/kotlin-client-uppercase-enum.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties +set ags=generate --artifact-id "kotlin-uppercase-enum" -i modules\openapi-generator\src\test\resources\3_0\issue-4062.yaml -g kotlin --additional-properties enumPropertyNaming=UPPERCASE -o samples\client\petstore\kotlin\uppercase-enum + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 52efa9d6258..d2f57e66f6f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -319,8 +319,12 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { additionalProperties.put(JVM_RETROFIT2, true); supportingFiles.add(new SupportingFile("infrastructure/ApiClient.kt.mustache", infrastructureFolder, "ApiClient.kt")); supportingFiles.add(new SupportingFile("infrastructure/CollectionFormats.kt.mustache", infrastructureFolder, "CollectionFormats.kt")); + supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.kt.mustache", authFolder, "ApiKeyAuth.kt")); supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt")); supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.kt.mustache", authFolder, "HttpBearerAuth.kt")); + supportingFiles.add(new SupportingFile("auth/OAuth.kt.mustache", authFolder, "OAuth.kt")); + supportingFiles.add(new SupportingFile("auth/OAuthFlow.kt.mustache", authFolder, "OAuthFlow.kt")); + supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.kt.mustache", authFolder, "OAuthOkHttpClient.kt")); addSupportingSerializerAdapters(infrastructureFolder); } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache index 82a624d4700..4944e477025 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache @@ -35,6 +35,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + {{#hasOAuthMethods}} + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" + {{/hasOAuthMethods}} {{#moshi}} {{^moshiCodeGen}} compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache index 5281ec91b63..78d258f58f9 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache @@ -16,4 +16,4 @@ @JsonProperty("{{{vendorExtensions.x-base-name-literal}}}") {{/jackson}} {{/multiplatform}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache index 4f0aa8007de..34b034b1d9c 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache @@ -12,4 +12,4 @@ @JsonProperty("{{{vendorExtensions.x-base-name-literal}}}") {{/jackson}} {{/multiplatform}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}} + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache new file mode 100644 index 00000000000..a894ecfaee7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache @@ -0,0 +1,49 @@ +package {{packageName}}.auth + +import java.io.IOException +import java.net.URI +import java.net.URISyntaxException + +import okhttp3.Interceptor +import okhttp3.Response + +class ApiKeyAuth( + private val location: String = "", + private val paramName: String = "", + private var apiKey: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + var request = chain.request() + + if ("query" == location) { + var newQuery = request.url().uri().getQuery() + val paramValue = "$paramName=$apiKey" + if (newQuery == null) { + newQuery = paramValue + } else { + newQuery += "&$paramValue" + } + + val newUri: URI + try { + newUri = URI(request.url().uri().scheme, request.url().uri().authority, + request.url().uri().path, newQuery, request.url().uri().fragment) + } catch (e: URISyntaxException) { + throw IOException(e) + } + + request = request.newBuilder().url(newUri.toURL()).build() + } else if ("header" == location) { + request = request.newBuilder() + .addHeader(paramName, apiKey) + .build() + } else if ("cookie" == location) { + request = request.newBuilder() + .addHeader("Cookie", "$paramName=$apiKey") + .build() + } + return chain.proceed(request) + } +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache new file mode 100644 index 00000000000..ba40ea330c5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache @@ -0,0 +1,151 @@ +package {{packageName}}.auth + +import java.net.HttpURLConnection.HTTP_UNAUTHORIZED +import java.net.HttpURLConnection.HTTP_FORBIDDEN + +import java.io.IOException + +import org.apache.oltu.oauth2.client.OAuthClient +import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException +import org.apache.oltu.oauth2.common.message.types.GrantType +import org.apache.oltu.oauth2.common.token.BasicOAuthToken + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Response + +class OAuth( + client: OkHttpClient, + var tokenRequestBuilder: TokenRequestBuilder +) : Interceptor { + + interface AccessTokenListener { + fun notify(token: BasicOAuthToken) + } + + private var oauthClient: OAuthClient = OAuthClient(OAuthOkHttpClient(client)) + + @Volatile + private var accessToken: String? = null + var authenticationRequestBuilder: AuthenticationRequestBuilder? = null + private var accessTokenListener: AccessTokenListener? = null + + constructor( + requestBuilder: TokenRequestBuilder + ) : this( + OkHttpClient(), + requestBuilder + ) + + constructor( + flow: OAuthFlow, + authorizationUrl: String, + tokenUrl: String, + scopes: String + ) : this( + OAuthClientRequest.tokenLocation(tokenUrl).setScope(scopes) + ) { + setFlow(flow); + authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl); + } + + fun setFlow(flow: OAuthFlow) { + when (flow) { + OAuthFlow.accessCode, OAuthFlow.implicit -> + tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE) + OAuthFlow.password -> + tokenRequestBuilder.setGrantType(GrantType.PASSWORD) + OAuthFlow.application -> + tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS) + } + } + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + return retryingIntercept(chain, true) + } + + @Throws(IOException::class) + private fun retryingIntercept(chain: Interceptor.Chain, updateTokenAndRetryOnAuthorizationFailure: Boolean): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") != null) { + return chain.proceed(request) + } + + // If first time, get the token + val oAuthRequest: OAuthClientRequest + if (accessToken == null) { + updateAccessToken(null) + } + + if (accessToken != null) { + // Build the request + val rb = request.newBuilder() + + val requestAccessToken = accessToken + try { + oAuthRequest = OAuthBearerClientRequest(request.url().toString()) + .setAccessToken(requestAccessToken) + .buildHeaderMessage() + } catch (e: OAuthSystemException) { + throw IOException(e) + } + + oAuthRequest.headers.entries.forEach { header -> + rb.addHeader(header.key, header.value) + } + rb.url(oAuthRequest.locationUri) + + //Execute the request + val response = chain.proceed(rb.build()) + + // 401/403 most likely indicates that access token has expired. Unless it happens two times in a row. + if ((response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { + try { + if (updateAccessToken(requestAccessToken)) { + response.body()?.close() + return retryingIntercept(chain, false) + } + } catch (e: Exception) { + response.body()?.close() + throw e + } + } + return response + } else { + return chain.proceed(chain.request()) + } + } + + /** + * Returns true if the access token has been updated + */ + @Throws(IOException::class) + @Synchronized + fun updateAccessToken(requestAccessToken: String?): Boolean { + if (accessToken == null || accessToken.equals(requestAccessToken)) { + return try { + val accessTokenResponse = oauthClient.accessToken(this.tokenRequestBuilder.buildBodyMessage()) + if (accessTokenResponse != null && accessTokenResponse.accessToken != null) { + accessToken = accessTokenResponse.accessToken + accessTokenListener?.notify(accessTokenResponse.oAuthToken as BasicOAuthToken) + !accessToken.equals(requestAccessToken) + } else { + false + } + } catch (e: OAuthSystemException) { + throw IOException(e) + } catch (e: OAuthProblemException) { + throw IOException(e) + } + } + return true; + } +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthFlow.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthFlow.kt.mustache new file mode 100644 index 00000000000..05ad3f7e547 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthFlow.kt.mustache @@ -0,0 +1,5 @@ +package {{packageName}}.auth + +enum class OAuthFlow { + accessCode, implicit, password, application +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache new file mode 100644 index 00000000000..3429a301bb1 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache @@ -0,0 +1,61 @@ +package {{packageName}}.auth + +import java.io.IOException + +import org.apache.oltu.oauth2.client.HttpClient +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.response.OAuthClientResponse +import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException + +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.MediaType +import okhttp3.RequestBody + + +class OAuthOkHttpClient( + private var client: OkHttpClient +) : HttpClient { + + constructor() : this(OkHttpClient()) + + @Throws(OAuthSystemException::class, OAuthProblemException::class) + override fun <T : OAuthClientResponse?> execute( + request: OAuthClientRequest, + headers: Map<String, String>?, + requestMethod: String, + responseClass: Class<T>?): T { + + var mediaType = MediaType.parse("application/json") + val requestBuilder = Request.Builder().url(request.locationUri) + + headers?.forEach { entry -> + if (entry.key.equals("Content-Type", true)) { + mediaType = MediaType.parse(entry.value) + } else { + requestBuilder.addHeader(entry.key, entry.value) + } + } + + val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + requestBuilder.method(requestMethod, body) + + try { + val response = client.newCall(requestBuilder.build()).execute() + return OAuthClientResponseFactory.createCustomResponse( + response.body()?.string(), + response.body()?.contentType()?.toString(), + response.code(), + responseClass) + } catch (e: IOException) { + throw OAuthSystemException(e) + } + } + + override fun shutdown() { + // Nothing to do here + } + +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 6da8c47078b..1438ddde5c8 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -1,17 +1,24 @@ package {{packageName}}.infrastructure +{{#hasOAuthMethods}} +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import {{packageName}}.auth.ApiKeyAuth +import {{packageName}}.auth.OAuth +import {{packageName}}.auth.OAuth.AccessTokenListener +import {{packageName}}.auth.OAuthFlow +{{/hasOAuthMethods}} + {{#hasAuthMethods}} {{#authMethods}} {{#isBasic}} -{{#isBasicBasic}} -import {{packageName}}.auth.HttpBasicAuth -{{/isBasicBasic}} {{#isBasicBearer}} import {{packageName}}.auth.HttpBearerAuth {{/isBasicBearer}} {{/isBasic}} {{/authMethods}} {{/hasAuthMethods}} +import {{packageName}}.auth.HttpBasicAuth import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -66,7 +73,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { authNames.forEach { authName -> val auth = when (authName) { - {{#authMethods}}"{{name}}" -> {{#isBasic}}{{#isBasicBasic}}HttpBasicAuth(){{/isBasicBasic}}{{^isBasicBasic}}HttpBearerAuth("{{scheme}}"){{/isBasicBasic}}{{/isBasic}}{{/authMethods}} + {{#authMethods}}"{{name}}" -> {{#isBasic}}{{#isBasicBasic}}HttpBasicAuth(){{/isBasicBasic}}{{#isBasicBearer}}HttpBearerAuth("{{scheme}}"){{/isBasicBearer}}{{/isBasic}}{{#isApiKey}}ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{#isKeyInQuery}}"query"{{/isKeyInQuery}}{{#isKeyInCookie}}"cookie"{{/isKeyInCookie}}, "{{keyParamName}}"){{/isApiKey}}{{#isOAuth}}OAuth(OAuthFlow.{{flow}}, "{{authorizationUrl}}", "{{tokenUrl}}", "{{#scopes}}{{scope}}{{#hasMore}}, {{/hasMore}}{{/scopes}}"){{/isOAuth}}{{/authMethods}} else -> throw RuntimeException("auth name $authName not found in available auth names") } addAuthorization(authName, auth); @@ -102,20 +109,32 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{/isBasicBearer}} {{/isBasic}} {{/authMethods}} - {{#authMethods}} - {{#isBasic}} - {{#isBasicBasic}} - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.firstAs<Interceptor, HttpBasicAuth>() - .setCredentials(username, password); - return this + {{#hasOAuthMethods}} + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, + authName: String, + clientId: String, + secret: String, + username: String, + password: String + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { + getTokenEndPoint() + ?.setClientId(clientId) + ?.setClientSecret(secret) + ?.setUsername(username) + ?.setPassword(password) } - {{/isBasicBasic}} + {{/hasOAuthMethods}} + {{#authMethods}} + {{#isBasic}} {{#isBasicBearer}} fun setBearerToken(bearerToken: String): ApiClient { - apiAuthorizations.values.firstAs<Interceptor, HttpBearerAuth>() - .bearerToken = bearerToken + apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> { + bearerToken = bearerToken + } return this } @@ -123,6 +142,88 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{/isBasic}} {{/authMethods}} {{/hasAuthMethods}} + fun setCredentials(username: String, password: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { + setCredentials(username, password); + } + {{#hasOAuthMethods}} + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder.setUsername(username).setPassword(password) + } + {{/hasOAuthMethods}} + return this + } + + {{#hasOAuthMethods}} + /** + * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Token request builder + */ + fun getTokenEndPoint(): TokenRequestBuilder? { + var result: TokenRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = tokenRequestBuilder + } + return result + } + + /** + * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Authentication request builder + */ + fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? { + var result: AuthenticationRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = authenticationRequestBuilder + } + return result + } + + /** + * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one) + * @param accessToken Access token + * @return ApiClient + */ + fun setAccessToken(accessToken: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + setAccessToken(accessToken) + } + return this + } + + /** + * Helper method to configure the oauth accessCode/implicit flow parameters + * @param clientId Client ID + * @param clientSecret Client secret + * @param redirectURI Redirect URI + * @return ApiClient + */ + fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder + .setClientId(clientId) + .setClientSecret(clientSecret) + .setRedirectURI(redirectURI) + authenticationRequestBuilder + ?.setClientId(clientId) + ?.setRedirectURI(redirectURI) + } + return this; + } + + /** + * Configures a listener which is notified when a new access token is received. + * @param accessTokenListener Access token listener + * @return ApiClient + */ + fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + registerAccessTokenListener(accessTokenListener) + } + return this; + } + {{/hasOAuthMethods}} + /** * Adds an authorization to be used by the client * @param authName Authentication name @@ -148,9 +249,13 @@ import retrofit2.converter.moshi.MoshiConverterFactory } } - private inline fun <T, reified U> Iterable<T>.firstAs(): U { - for (element in this) if (element is U) return element - throw NoSuchElementException("Collection contains no element for generic parameter U") + private inline fun <T, reified U> Iterable<T>.runOnFirst(callback: U.() -> Unit) { + for (element in this) { + if (element is U) { + callback.invoke(element) + break + } + } } companion object { diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle b/samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle index 392d9a352e6..d977c395bef 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/build.gradle @@ -30,6 +30,7 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..a5b5fad0055 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Mar 23 16:10:00 CET 2020 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew b/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew new file mode 100644 index 00000000000..cccdd3d517f --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew.bat b/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew.bat new file mode 100644 index 00000000000..f9553162f12 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/local.properties b/samples/client/petstore/kotlin/retrofit2-coroutines/local.properties new file mode 100644 index 00000000000..cff631d7764 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Mon Mar 23 16:10:00 CET 2020 +sdk.dir=D\:\\Programme\\AndroidSDK diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt new file mode 100644 index 00000000000..84d2e52389e --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt @@ -0,0 +1,49 @@ +package org.openapitools.client.auth + +import java.io.IOException +import java.net.URI +import java.net.URISyntaxException + +import okhttp3.Interceptor +import okhttp3.Response + +class ApiKeyAuth( + private val location: String = "", + private val paramName: String = "", + private var apiKey: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + var request = chain.request() + + if ("query" == location) { + var newQuery = request.url().uri().getQuery() + val paramValue = "$paramName=$apiKey" + if (newQuery == null) { + newQuery = paramValue + } else { + newQuery += "&$paramValue" + } + + val newUri: URI + try { + newUri = URI(request.url().uri().scheme, request.url().uri().authority, + request.url().uri().path, newQuery, request.url().uri().fragment) + } catch (e: URISyntaxException) { + throw IOException(e) + } + + request = request.newBuilder().url(newUri.toURL()).build() + } else if ("header" == location) { + request = request.newBuilder() + .addHeader(paramName, apiKey) + .build() + } else if ("cookie" == location) { + request = request.newBuilder() + .addHeader("Cookie", "$paramName=$apiKey") + .build() + } + return chain.proceed(request) + } +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt new file mode 100644 index 00000000000..b51a2b7a139 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt @@ -0,0 +1,151 @@ +package org.openapitools.client.auth + +import java.net.HttpURLConnection.HTTP_UNAUTHORIZED +import java.net.HttpURLConnection.HTTP_FORBIDDEN + +import java.io.IOException + +import org.apache.oltu.oauth2.client.OAuthClient +import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException +import org.apache.oltu.oauth2.common.message.types.GrantType +import org.apache.oltu.oauth2.common.token.BasicOAuthToken + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Response + +class OAuth( + client: OkHttpClient, + var tokenRequestBuilder: TokenRequestBuilder +) : Interceptor { + + interface AccessTokenListener { + fun notify(token: BasicOAuthToken) + } + + private var oauthClient: OAuthClient = OAuthClient(OAuthOkHttpClient(client)) + + @Volatile + private var accessToken: String? = null + var authenticationRequestBuilder: AuthenticationRequestBuilder? = null + private var accessTokenListener: AccessTokenListener? = null + + constructor( + requestBuilder: TokenRequestBuilder + ) : this( + OkHttpClient(), + requestBuilder + ) + + constructor( + flow: OAuthFlow, + authorizationUrl: String, + tokenUrl: String, + scopes: String + ) : this( + OAuthClientRequest.tokenLocation(tokenUrl).setScope(scopes) + ) { + setFlow(flow); + authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl); + } + + fun setFlow(flow: OAuthFlow) { + when (flow) { + OAuthFlow.accessCode, OAuthFlow.implicit -> + tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE) + OAuthFlow.password -> + tokenRequestBuilder.setGrantType(GrantType.PASSWORD) + OAuthFlow.application -> + tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS) + } + } + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + return retryingIntercept(chain, true) + } + + @Throws(IOException::class) + private fun retryingIntercept(chain: Interceptor.Chain, updateTokenAndRetryOnAuthorizationFailure: Boolean): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") != null) { + return chain.proceed(request) + } + + // If first time, get the token + val oAuthRequest: OAuthClientRequest + if (accessToken == null) { + updateAccessToken(null) + } + + if (accessToken != null) { + // Build the request + val rb = request.newBuilder() + + val requestAccessToken = accessToken + try { + oAuthRequest = OAuthBearerClientRequest(request.url().toString()) + .setAccessToken(requestAccessToken) + .buildHeaderMessage() + } catch (e: OAuthSystemException) { + throw IOException(e) + } + + oAuthRequest.headers.entries.forEach { header -> + rb.addHeader(header.key, header.value) + } + rb.url(oAuthRequest.locationUri) + + //Execute the request + val response = chain.proceed(rb.build()) + + // 401/403 most likely indicates that access token has expired. Unless it happens two times in a row. + if ((response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { + try { + if (updateAccessToken(requestAccessToken)) { + response.body()?.close() + return retryingIntercept(chain, false) + } + } catch (e: Exception) { + response.body()?.close() + throw e + } + } + return response + } else { + return chain.proceed(chain.request()) + } + } + + /** + * Returns true if the access token has been updated + */ + @Throws(IOException::class) + @Synchronized + fun updateAccessToken(requestAccessToken: String?): Boolean { + if (accessToken == null || accessToken.equals(requestAccessToken)) { + return try { + val accessTokenResponse = oauthClient.accessToken(this.tokenRequestBuilder.buildBodyMessage()) + if (accessTokenResponse != null && accessTokenResponse.accessToken != null) { + accessToken = accessTokenResponse.accessToken + accessTokenListener?.notify(accessTokenResponse.oAuthToken as BasicOAuthToken) + !accessToken.equals(requestAccessToken) + } else { + false + } + } catch (e: OAuthSystemException) { + throw IOException(e) + } catch (e: OAuthProblemException) { + throw IOException(e) + } + } + return true; + } +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt new file mode 100644 index 00000000000..bcada9b7a6a --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt @@ -0,0 +1,5 @@ +package org.openapitools.client.auth + +enum class OAuthFlow { + accessCode, implicit, password, application +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt new file mode 100644 index 00000000000..f1598d50283 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -0,0 +1,61 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import org.apache.oltu.oauth2.client.HttpClient +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.response.OAuthClientResponse +import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException + +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.MediaType +import okhttp3.RequestBody + + +class OAuthOkHttpClient( + private var client: OkHttpClient +) : HttpClient { + + constructor() : this(OkHttpClient()) + + @Throws(OAuthSystemException::class, OAuthProblemException::class) + override fun <T : OAuthClientResponse?> execute( + request: OAuthClientRequest, + headers: Map<String, String>?, + requestMethod: String, + responseClass: Class<T>?): T { + + var mediaType = MediaType.parse("application/json") + val requestBuilder = Request.Builder().url(request.locationUri) + + headers?.forEach { entry -> + if (entry.key.equals("Content-Type", true)) { + mediaType = MediaType.parse(entry.value) + } else { + requestBuilder.addHeader(entry.key, entry.value) + } + } + + val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + requestBuilder.method(requestMethod, body) + + try { + val response = client.newCall(requestBuilder.build()).execute() + return OAuthClientResponseFactory.createCustomResponse( + response.body()?.string(), + response.body()?.contentType()?.toString(), + response.code(), + responseClass) + } catch (e: IOException) { + throw OAuthSystemException(e) + } + } + + override fun shutdown() { + // Nothing to do here + } + +} diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index aecba0cd55b..31bdd4c45fb 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,5 +1,13 @@ package org.openapitools.client.infrastructure +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import org.openapitools.client.auth.ApiKeyAuth +import org.openapitools.client.auth.OAuth +import org.openapitools.client.auth.OAuth.AccessTokenListener +import org.openapitools.client.auth.OAuthFlow + +import org.openapitools.client.auth.HttpBasicAuth import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -18,7 +26,7 @@ class ApiClient( Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build())) } private val clientBuilder: OkHttpClient.Builder by lazy { @@ -41,13 +49,108 @@ class ApiClient( ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { authNames.forEach { authName -> val auth = when (authName) { - "api_key" -> "petstore_auth" -> + "api_key" -> ApiKeyAuth("header", "api_key")"petstore_auth" -> OAuth(OAuthFlow.implicit, "http://petstore.swagger.io/api/oauth/dialog", "", "write:pets, read:pets") else -> throw RuntimeException("auth name $authName not found in available auth names") } addAuthorization(authName, auth); } } + constructor( + baseUrl: String = BASE_URL, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, + authName: String, + clientId: String, + secret: String, + username: String, + password: String + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { + getTokenEndPoint() + ?.setClientId(clientId) + ?.setClientSecret(secret) + ?.setUsername(username) + ?.setPassword(password) + } + + fun setCredentials(username: String, password: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { + setCredentials(username, password); + } + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder.setUsername(username).setPassword(password) + } + return this + } + + /** + * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Token request builder + */ + fun getTokenEndPoint(): TokenRequestBuilder? { + var result: TokenRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = tokenRequestBuilder + } + return result + } + + /** + * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Authentication request builder + */ + fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? { + var result: AuthenticationRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = authenticationRequestBuilder + } + return result + } + + /** + * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one) + * @param accessToken Access token + * @return ApiClient + */ + fun setAccessToken(accessToken: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + setAccessToken(accessToken) + } + return this + } + + /** + * Helper method to configure the oauth accessCode/implicit flow parameters + * @param clientId Client ID + * @param clientSecret Client secret + * @param redirectURI Redirect URI + * @return ApiClient + */ + fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder + .setClientId(clientId) + .setClientSecret(clientSecret) + .setRedirectURI(redirectURI) + authenticationRequestBuilder + ?.setClientId(clientId) + ?.setRedirectURI(redirectURI) + } + return this; + } + + /** + * Configures a listener which is notified when a new access token is received. + * @param accessTokenListener Access token listener + * @return ApiClient + */ + fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + registerAccessTokenListener(accessTokenListener) + } + return this; + } + /** * Adds an authorization to be used by the client * @param authName Authentication name @@ -73,9 +176,13 @@ class ApiClient( } } - private inline fun <T, reified U> Iterable<T>.firstAs(): U { - for (element in this) if (element is U) return element - throw NoSuchElementException("Collection contains no element for generic parameter U") + private inline fun <T, reified U> Iterable<T>.runOnFirst(callback: U.() -> Unit) { + for (element in this) { + if (element is U) { + callback.invoke(element) + break + } + } } companion object { diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt index 5078a38f945..ada15fee7a1 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt @@ -22,13 +22,10 @@ import com.squareup.moshi.Json data class ApiResponse ( @Json(name = "code") - val code: kotlin.Int? = null -, + val code: kotlin.Int? = null, @Json(name = "type") - val type: kotlin.String? = null -, + val type: kotlin.String? = null, @Json(name = "message") val message: kotlin.String? = null - ) diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt new file mode 100644 index 00000000000..426a0e51592 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt @@ -0,0 +1,28 @@ +/** +* OpenAPI Petstore +* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +* +* The version of the OpenAPI document: 1.0.0 +* +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.client.models + + +import com.squareup.moshi.Json +/** + * A category for a pet + * @param id + * @param name + */ + +data class Category ( + @Json(name = "id") + val id: kotlin.Long? = null, + @Json(name = "name") + val name: kotlin.String? = null +) + diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt index f59f4a0cd97..af1826b07d7 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt @@ -25,24 +25,18 @@ import com.squareup.moshi.Json data class Order ( @Json(name = "id") - val id: kotlin.Long? = null -, + val id: kotlin.Long? = null, @Json(name = "petId") - val petId: kotlin.Long? = null -, + val petId: kotlin.Long? = null, @Json(name = "quantity") - val quantity: kotlin.Int? = null -, + val quantity: kotlin.Int? = null, @Json(name = "shipDate") - val shipDate: java.time.OffsetDateTime? = null -, + val shipDate: java.time.OffsetDateTime? = null, /* Order Status */ @Json(name = "status") - val status: Order.Status? = null -, + val status: Order.Status? = null, @Json(name = "complete") val complete: kotlin.Boolean? = null - ) { /** diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt index 9830ead3359..5f20683ee03 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt @@ -27,24 +27,18 @@ import com.squareup.moshi.Json data class Pet ( @Json(name = "name") - val name: kotlin.String -, + val name: kotlin.String, @Json(name = "photoUrls") - val photoUrls: kotlin.Array<kotlin.String> -, + val photoUrls: kotlin.Array<kotlin.String>, @Json(name = "id") - val id: kotlin.Long? = null -, + val id: kotlin.Long? = null, @Json(name = "category") - val category: Category? = null -, + val category: Category? = null, @Json(name = "tags") - val tags: kotlin.Array<Tag>? = null -, + val tags: kotlin.Array<Tag>? = null, /* pet status in the store */ @Json(name = "status") val status: Pet.Status? = null - ) { /** diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt index ccdd4390d1a..f9ef87e13fb 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt @@ -21,10 +21,8 @@ import com.squareup.moshi.Json data class Tag ( @Json(name = "id") - val id: kotlin.Long? = null -, + val id: kotlin.Long? = null, @Json(name = "name") val name: kotlin.String? = null - ) diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt index e2679988c51..dfd63806da9 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt @@ -27,29 +27,21 @@ import com.squareup.moshi.Json data class User ( @Json(name = "id") - val id: kotlin.Long? = null -, + val id: kotlin.Long? = null, @Json(name = "username") - val username: kotlin.String? = null -, + val username: kotlin.String? = null, @Json(name = "firstName") - val firstName: kotlin.String? = null -, + val firstName: kotlin.String? = null, @Json(name = "lastName") - val lastName: kotlin.String? = null -, + val lastName: kotlin.String? = null, @Json(name = "email") - val email: kotlin.String? = null -, + val email: kotlin.String? = null, @Json(name = "password") - val password: kotlin.String? = null -, + val password: kotlin.String? = null, @Json(name = "phone") - val phone: kotlin.String? = null -, + val phone: kotlin.String? = null, /* User Status */ @Json(name = "userStatus") val userStatus: kotlin.Int? = null - ) -- GitLab From 15a49e7e755d794f5d103ac33ce190ef63211282 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Tue, 24 Mar 2020 13:41:27 +0100 Subject: [PATCH 06/15] Fixed some bugs and import issues in kotlin-jvm-retrofit2 --- .../languages/KotlinClientCodegen.java | 28 +++++++----- .../codegen/utils/ProcessUtils.java | 24 ++++++++++ .../jvm-retrofit2/auth/ApiKeyAuth.kt.mustache | 7 +-- .../jvm-retrofit2/auth/OAuth.kt.mustache | 8 ++-- .../auth/OAuthOkHttpClient.kt.mustache | 12 ++--- .../infrastructure/ApiClient.kt.mustache | 44 ++++++++++++------- 6 files changed, 85 insertions(+), 38 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index d2f57e66f6f..44eff97faf6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -27,6 +27,7 @@ import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.utils.ProcessUtils; import java.io.File; import java.util.HashMap; @@ -55,6 +56,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { protected String requestDateConverter = RequestDateConverter.TO_JSON.value; protected String collectionType = CollectionType.ARRAY.value; + protected String authFolder; + public enum DateLibrary { STRING("string"), THREETENBP("threetenbp"), @@ -214,7 +217,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { // infrastructure destination folder final String infrastructureFolder = (sourceFolder + File.separator + packageName + File.separator + "infrastructure").replace(".", "/"); - final String authFolder = (sourceFolder + File.separator + packageName + File.separator + "auth").replace(".", "/"); + authFolder = (sourceFolder + File.separator + packageName + File.separator + "auth").replace(".", "/"); // additional properties if (additionalProperties.containsKey(DATE_LIBRARY)) { @@ -233,7 +236,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { processJVMOkHttpLibrary(infrastructureFolder); break; case JVM_RETROFIT2: - processJVMRetrofit2Library(infrastructureFolder, authFolder); + processJVMRetrofit2Library(infrastructureFolder); break; case MULTIPLATFORM: processMultiplatformLibrary(infrastructureFolder); @@ -314,17 +317,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } } - private void processJVMRetrofit2Library(String infrastructureFolder, String authFolder) { + private void processJVMRetrofit2Library(String infrastructureFolder) { additionalProperties.put(JVM, true); additionalProperties.put(JVM_RETROFIT2, true); supportingFiles.add(new SupportingFile("infrastructure/ApiClient.kt.mustache", infrastructureFolder, "ApiClient.kt")); supportingFiles.add(new SupportingFile("infrastructure/CollectionFormats.kt.mustache", infrastructureFolder, "CollectionFormats.kt")); - supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.kt.mustache", authFolder, "ApiKeyAuth.kt")); - supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt")); - supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.kt.mustache", authFolder, "HttpBearerAuth.kt")); - supportingFiles.add(new SupportingFile("auth/OAuth.kt.mustache", authFolder, "OAuth.kt")); - supportingFiles.add(new SupportingFile("auth/OAuthFlow.kt.mustache", authFolder, "OAuthFlow.kt")); - supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.kt.mustache", authFolder, "OAuthOkHttpClient.kt")); addSupportingSerializerAdapters(infrastructureFolder); } @@ -415,7 +412,6 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { supportingFiles.add(new SupportingFile("infrastructure/OctetByteArray.kt.mustache", infrastructureFolder, "OctetByteArray.kt")); // multiplatform specific auth - final String authFolder = (sourceFolder + File.separator + packageName + File.separator + "auth").replace(".", "/"); supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.kt.mustache", authFolder, "ApiKeyAuth.kt")); supportingFiles.add(new SupportingFile("auth/Authentication.kt.mustache", authFolder, "Authentication.kt")); supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt")); @@ -501,6 +497,18 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { if (usesRetrofit2Library() && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) { operation.path = operation.path.substring(1); + if (ProcessUtils.hasOAuthMethods(objs)) { + supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.kt.mustache", authFolder, "ApiKeyAuth.kt")); + supportingFiles.add(new SupportingFile("auth/OAuth.kt.mustache", authFolder, "OAuth.kt")); + supportingFiles.add(new SupportingFile("auth/OAuthFlow.kt.mustache", authFolder, "OAuthFlow.kt")); + supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.kt.mustache", authFolder, "OAuthOkHttpClient.kt")); + } + if(ProcessUtils.hasBearerMethods(objs)) { + supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.kt.mustache", authFolder, "HttpBearerAuth.kt")); + } + if(ProcessUtils.hasHttpBasicMethods(objs)) { + supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt")); + } } // modify the data type of binary form parameters to a more friendly type for multiplatform builds diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java index 91b7b674d66..219f77a1d67 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java @@ -94,6 +94,30 @@ public class ProcessUtils { return false; } + /** + * Returns true if at least one operation has Bearer security schema defined + * + * @param objs Map of operations + * @return True if at least one operation has Bearer security schema defined + */ + public static boolean hasHttpBasicMethods(Map<String, Object> objs) { + Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); + if (operations != null) { + List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); + for (CodegenOperation operation : ops) { + if (operation.authMethods != null && !operation.authMethods.isEmpty()) { + for (CodegenSecurity cs : operation.authMethods) { + if (Boolean.TRUE.equals(cs.isBasicBasic)) { + return true; + } + } + } + } + } + + return false; + } + /** * Returns true if the specified OAS model has at least one operation with the HTTP basic * security scheme. diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache index a894ecfaee7..12d01a017c6 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/ApiKeyAuth.kt.mustache @@ -18,7 +18,7 @@ class ApiKeyAuth( var request = chain.request() if ("query" == location) { - var newQuery = request.url().uri().getQuery() + var newQuery = request.url.toUri().query val paramValue = "$paramName=$apiKey" if (newQuery == null) { newQuery = paramValue @@ -28,8 +28,9 @@ class ApiKeyAuth( val newUri: URI try { - newUri = URI(request.url().uri().scheme, request.url().uri().authority, - request.url().uri().path, newQuery, request.url().uri().fragment) + val oldUri = request.url.toUri() + newUri = URI(oldUri.scheme, oldUri.authority, + oldUri.path, newQuery, oldUri.fragment) } catch (e: URISyntaxException) { throw IOException(e) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache index ba40ea330c5..1764fc2d87f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuth.kt.mustache @@ -91,7 +91,7 @@ class OAuth( val requestAccessToken = accessToken try { - oAuthRequest = OAuthBearerClientRequest(request.url().toString()) + oAuthRequest = OAuthBearerClientRequest(request.url.toString()) .setAccessToken(requestAccessToken) .buildHeaderMessage() } catch (e: OAuthSystemException) { @@ -107,14 +107,14 @@ class OAuth( val response = chain.proceed(rb.build()) // 401/403 most likely indicates that access token has expired. Unless it happens two times in a row. - if ((response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { + if ((response.code == HTTP_UNAUTHORIZED || response.code == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { try { if (updateAccessToken(requestAccessToken)) { - response.body()?.close() + response.body?.close() return retryingIntercept(chain, false) } } catch (e: Exception) { - response.body()?.close() + response.body?.close() throw e } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache index 3429a301bb1..106b0581994 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache @@ -11,7 +11,7 @@ import org.apache.oltu.oauth2.common.exception.OAuthSystemException import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody @@ -28,12 +28,12 @@ class OAuthOkHttpClient( requestMethod: String, responseClass: Class<T>?): T { - var mediaType = MediaType.parse("application/json") + var mediaType = "application/json".toMediaTypeOrNull() val requestBuilder = Request.Builder().url(request.locationUri) headers?.forEach { entry -> if (entry.key.equals("Content-Type", true)) { - mediaType = MediaType.parse(entry.value) + mediaType = entry.value.toMediaTypeOrNull() } else { requestBuilder.addHeader(entry.key, entry.value) } @@ -45,9 +45,9 @@ class OAuthOkHttpClient( try { val response = client.newCall(requestBuilder.build()).execute() return OAuthClientResponseFactory.createCustomResponse( - response.body()?.string(), - response.body()?.contentType()?.toString(), - response.code(), + response.body?.string(), + response.body?.contentType()?.toString(), + response.code, responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 1438ddde5c8..20ffe589bb8 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -8,17 +8,19 @@ import {{packageName}}.auth.OAuth import {{packageName}}.auth.OAuth.AccessTokenListener import {{packageName}}.auth.OAuthFlow {{/hasOAuthMethods}} - {{#hasAuthMethods}} {{#authMethods}} {{#isBasic}} +{{#isBasicBasic}} +import {{packageName}}.auth.HttpBasicAuth +{{/isBasicBasic}} {{#isBasicBearer}} import {{packageName}}.auth.HttpBearerAuth {{/isBasicBearer}} {{/isBasic}} {{/authMethods}} {{/hasAuthMethods}} -import {{packageName}}.auth.HttpBasicAuth + import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -130,18 +132,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{/hasOAuthMethods}} {{#authMethods}} {{#isBasic}} - {{#isBasicBearer}} - fun setBearerToken(bearerToken: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> { - bearerToken = bearerToken - } - return this - } - - {{/isBasicBearer}} - {{/isBasic}} - {{/authMethods}} - {{/hasAuthMethods}} + {{#isBasicBasic}} fun setCredentials(username: String, password: String): ApiClient { apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { setCredentials(username, password); @@ -154,6 +145,29 @@ import retrofit2.converter.moshi.MoshiConverterFactory return this } + {{/isBasicBasic}} + {{^isBasicBasic}} + {{#hasOAuthMethods}} + fun setCredentials(username: String, password: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder.setUsername(username).setPassword(password) + } + return this + } + {{/hasOAuthMethods}} + {{/isBasicBasic}} + {{#isBasicBearer}} + fun setBearerToken(bearerToken: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> { + this.bearerToken = bearerToken + } + return this + } + + {{/isBasicBearer}} + {{/isBasic}} + {{/authMethods}} + {{/hasAuthMethods}} {{#hasOAuthMethods}} /** * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) @@ -222,8 +236,8 @@ import retrofit2.converter.moshi.MoshiConverterFactory } return this; } + {{/hasOAuthMethods}} - /** * Adds an authorization to be used by the client * @param authName Authentication name -- GitLab From 79ae8516fc2056090ba0ede86ee05c63eced5f16 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Tue, 24 Mar 2020 15:38:33 +0100 Subject: [PATCH 07/15] Change serializerBuilder from val to var. Add simple logger to apiClient --- .../infrastructure/Serializer.kt.mustache | 6 +++--- .../infrastructure/ApiClient.kt.mustache | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index 8092f8eb71d..e71f2729588 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -34,7 +34,7 @@ import java.util.Date {{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer { {{#moshi}} @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() + var moshiBuilder: Moshi.Builder = Moshi.Builder() .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) .add(OffsetDateTimeAdapter()) .add(LocalDateTimeAdapter()) @@ -52,7 +52,7 @@ import java.util.Date {{/moshi}} {{#gson}} @JvmStatic - val gsonBuilder: GsonBuilder = GsonBuilder() + var gsonBuilder: GsonBuilder = GsonBuilder() .registerTypeAdapter(Date::class.java, DateAdapter()) .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) @@ -66,7 +66,7 @@ import java.util.Date {{/gson}} {{#jackson}} @JvmStatic - val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() + var jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() .registerModule(Jdk8Module()) .registerModule(JavaTimeModule()) .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 20ffe589bb8..1b61467fbc2 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -24,6 +24,7 @@ import {{packageName}}.auth.HttpBearerAuth import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit +import okhttp3.logging.HttpLoggingInterceptor import retrofit2.converter.scalars.ScalarsConverterFactory {{#gson}} import com.google.gson.Gson @@ -41,6 +42,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder ) { private val apiAuthorizations = mutableMapOf<String, Interceptor>() + private var logger: ((String) -> Unit)? = null private val retrofitBuilder: Retrofit.Builder by lazy { Retrofit.Builder() @@ -59,7 +61,15 @@ import retrofit2.converter.moshi.MoshiConverterFactory } private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient().newBuilder() + OkHttpClient() + .newBuilder() + .addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { + override fun log(message: String) { + logger?.invoke(message) + } + }).apply { + level = HttpLoggingInterceptor.Level.BODY + }) } init { @@ -129,6 +139,11 @@ import retrofit2.converter.moshi.MoshiConverterFactory ?.setPassword(password) } + fun setLogger(logger: (String) -> Unit): ApiClient { + this.logger = logger + return this + } + {{/hasOAuthMethods}} {{#authMethods}} {{#isBasic}} @@ -236,7 +251,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory } return this; } - + {{/hasOAuthMethods}} /** * Adds an authorization to be used by the client -- GitLab From 336ccfa61b1128c1648897f27660cf896db6d5d3 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Tue, 24 Mar 2020 16:10:35 +0100 Subject: [PATCH 08/15] Resolved issues after merge from master. Rebuild Test Project --- .../kotlin-client/build.gradle.mustache | 1 + .../infrastructure/ApiClient.kt.mustache | 8 +- .../client/infrastructure/ApiClient.kt | 40 ---- .../openapitools/client/auth/ApiKeyAuth.kt | 7 +- .../org/openapitools/client/auth/OAuth.kt | 8 +- .../client/auth/OAuthOkHttpClient.kt | 12 +- .../client/infrastructure/ApiClient.kt | 35 ++-- .../client/infrastructure/Serializer.kt | 2 +- .../org/openapitools/client/models/Order.kt | 1 - .../org/openapitools/client/models/Pet.kt | 1 - .../petstore/kotlin/retrofit2/build.gradle | 1 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../client/petstore/kotlin/retrofit2/gradlew | 172 ++++++++++++++++++ .../petstore/kotlin/retrofit2/gradlew.bat | 84 +++++++++ .../kotlin/retrofit2/local.properties | 8 + .../openapitools/client/auth/ApiKeyAuth.kt | 50 +++++ .../org/openapitools/client/auth/OAuth.kt | 151 +++++++++++++++ .../org/openapitools/client/auth/OAuthFlow.kt | 5 + .../client/auth/OAuthOkHttpClient.kt | 61 +++++++ .../client/infrastructure/ApiClient.kt | 134 +++++++++++++- .../client/infrastructure/Serializer.kt | 2 +- 22 files changed, 704 insertions(+), 85 deletions(-) delete mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/petstore/kotlin/retrofit2/gradlew create mode 100644 samples/client/petstore/kotlin/retrofit2/gradlew.bat create mode 100644 samples/client/petstore/kotlin/retrofit2/local.properties create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuth.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache index 4944e477025..1ffcd1d33ad 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache @@ -78,6 +78,7 @@ dependencies { {{/modeCodeGen}} {{/moshi}} compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" {{/jvm-okhttp4}} {{#threetenbp}} compile "org.threeten:threetenbp:1.4.0" diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 66d32cb6a83..cb17c19a674 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -78,7 +78,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{#hasAuthMethods}} constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, authNames: Array<String> @@ -96,7 +96,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{#isBasic}} {{#isBasicBasic}} constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, authName: String, @@ -109,7 +109,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{/isBasicBasic}} {{#isBasicBearer}} constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, authName: String, @@ -123,7 +123,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory {{/authMethods}} {{#hasOAuthMethods}} constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, authName: String, diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt deleted file mode 100644 index 2b657de46ad..00000000000 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ /dev/null @@ -1,40 +0,0 @@ -package org.openapitools.client.infrastructure - -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.scalars.ScalarsConverterFactory -import retrofit2.converter.moshi.MoshiConverterFactory - -class ApiClient( - private var baseUrl: String = defaultBasePath, - private var okHttpClient: OkHttpClient -) { - companion object { - @JvmStatic - val defaultBasePath: String by lazy { - System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") - } - } - - init { - normalizeBaseUrl() - } - - val retrofitBuilder: Retrofit.Builder by lazy { - - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(okHttpClient).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } -} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt index 84d2e52389e..524d5190ef8 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt @@ -18,7 +18,7 @@ class ApiKeyAuth( var request = chain.request() if ("query" == location) { - var newQuery = request.url().uri().getQuery() + var newQuery = request.url.toUri().query val paramValue = "$paramName=$apiKey" if (newQuery == null) { newQuery = paramValue @@ -28,8 +28,9 @@ class ApiKeyAuth( val newUri: URI try { - newUri = URI(request.url().uri().scheme, request.url().uri().authority, - request.url().uri().path, newQuery, request.url().uri().fragment) + val oldUri = request.url.toUri() + newUri = URI(oldUri.scheme, oldUri.authority, + oldUri.path, newQuery, oldUri.fragment) } catch (e: URISyntaxException) { throw IOException(e) } diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt index b51a2b7a139..311a8f43979 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuth.kt @@ -91,7 +91,7 @@ class OAuth( val requestAccessToken = accessToken try { - oAuthRequest = OAuthBearerClientRequest(request.url().toString()) + oAuthRequest = OAuthBearerClientRequest(request.url.toString()) .setAccessToken(requestAccessToken) .buildHeaderMessage() } catch (e: OAuthSystemException) { @@ -107,14 +107,14 @@ class OAuth( val response = chain.proceed(rb.build()) // 401/403 most likely indicates that access token has expired. Unless it happens two times in a row. - if ((response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { + if ((response.code == HTTP_UNAUTHORIZED || response.code == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { try { if (updateAccessToken(requestAccessToken)) { - response.body()?.close() + response.body?.close() return retryingIntercept(chain, false) } } catch (e: Exception) { - response.body()?.close() + response.body?.close() throw e } } diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt index f1598d50283..93adbda3fc9 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -11,7 +11,7 @@ import org.apache.oltu.oauth2.common.exception.OAuthSystemException import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody @@ -28,12 +28,12 @@ class OAuthOkHttpClient( requestMethod: String, responseClass: Class<T>?): T { - var mediaType = MediaType.parse("application/json") + var mediaType = "application/json".toMediaTypeOrNull() val requestBuilder = Request.Builder().url(request.locationUri) headers?.forEach { entry -> if (entry.key.equals("Content-Type", true)) { - mediaType = MediaType.parse(entry.value) + mediaType = entry.value.toMediaTypeOrNull() } else { requestBuilder.addHeader(entry.key, entry.value) } @@ -45,9 +45,9 @@ class OAuthOkHttpClient( try { val response = client.newCall(requestBuilder.build()).execute() return OAuthClientResponseFactory.createCustomResponse( - response.body()?.string(), - response.body()?.contentType()?.toString(), - response.code(), + response.body?.string(), + response.body?.contentType()?.toString(), + response.code, responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 31bdd4c45fb..4770975587f 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -7,20 +7,21 @@ import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.OAuth.AccessTokenListener import org.openapitools.client.auth.OAuthFlow -import org.openapitools.client.auth.HttpBasicAuth import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit +import okhttp3.logging.HttpLoggingInterceptor import retrofit2.converter.scalars.ScalarsConverterFactory import com.squareup.moshi.Moshi import retrofit2.converter.moshi.MoshiConverterFactory class ApiClient( - private var baseUrl: String = BASE_URL, + private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null, private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder ) { private val apiAuthorizations = mutableMapOf<String, Interceptor>() + private var logger: ((String) -> Unit)? = null private val retrofitBuilder: Retrofit.Builder by lazy { Retrofit.Builder() @@ -34,7 +35,15 @@ class ApiClient( } private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient().newBuilder() + OkHttpClient() + .newBuilder() + .addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { + override fun log(message: String) { + logger?.invoke(message) + } + }).apply { + level = HttpLoggingInterceptor.Level.BODY + }) } init { @@ -42,7 +51,7 @@ class ApiClient( } constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, authNames: Array<String> @@ -57,7 +66,7 @@ class ApiClient( } constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, authName: String, @@ -73,13 +82,8 @@ class ApiClient( ?.setPassword(password) } - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { - setCredentials(username, password); - } - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder.setUsername(username).setPassword(password) - } + fun setLogger(logger: (String) -> Unit): ApiClient { + this.logger = logger return this } @@ -185,7 +189,10 @@ class ApiClient( } } - companion object { - const val BASE_URL: String = "http://petstore.swagger.io/v2" + companion object { + @JvmStatic + val defaultBasePath: String by lazy { + System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") + } } } \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..e4200e77596 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,7 +7,7 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() + var moshiBuilder: Moshi.Builder = Moshi.Builder() .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) .add(OffsetDateTimeAdapter()) .add(LocalDateTimeAdapter()) diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt index af1826b07d7..3cfa5ca9626 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt @@ -44,7 +44,6 @@ data class Order ( * Values: placed,approved,delivered */ - enum class Status(val value: kotlin.String){ @Json(name = "placed") placed("placed"), @Json(name = "approved") approved("approved"), diff --git a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt index 5f20683ee03..a94bb811c3b 100644 --- a/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt +++ b/samples/client/petstore/kotlin/retrofit2-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt @@ -46,7 +46,6 @@ data class Pet ( * Values: available,pending,sold */ - enum class Status(val value: kotlin.String){ @Json(name = "available") available("available"), @Json(name = "pending") pending("pending"), diff --git a/samples/client/petstore/kotlin/retrofit2/build.gradle b/samples/client/petstore/kotlin/retrofit2/build.gradle index 392d9a352e6..d977c395bef 100644 --- a/samples/client/petstore/kotlin/retrofit2/build.gradle +++ b/samples/client/petstore/kotlin/retrofit2/build.gradle @@ -30,6 +30,7 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" diff --git a/samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..4969d52911b --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Mar 24 16:05:39 CET 2020 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/samples/client/petstore/kotlin/retrofit2/gradlew b/samples/client/petstore/kotlin/retrofit2/gradlew new file mode 100644 index 00000000000..cccdd3d517f --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/kotlin/retrofit2/gradlew.bat b/samples/client/petstore/kotlin/retrofit2/gradlew.bat new file mode 100644 index 00000000000..f9553162f12 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/petstore/kotlin/retrofit2/local.properties b/samples/client/petstore/kotlin/retrofit2/local.properties new file mode 100644 index 00000000000..72ccdf610ac --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Tue Mar 24 16:05:36 CET 2020 +sdk.dir=D\:\\Programme\\AndroidSDK diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt new file mode 100644 index 00000000000..524d5190ef8 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt @@ -0,0 +1,50 @@ +package org.openapitools.client.auth + +import java.io.IOException +import java.net.URI +import java.net.URISyntaxException + +import okhttp3.Interceptor +import okhttp3.Response + +class ApiKeyAuth( + private val location: String = "", + private val paramName: String = "", + private var apiKey: String = "" +) : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + var request = chain.request() + + if ("query" == location) { + var newQuery = request.url.toUri().query + val paramValue = "$paramName=$apiKey" + if (newQuery == null) { + newQuery = paramValue + } else { + newQuery += "&$paramValue" + } + + val newUri: URI + try { + val oldUri = request.url.toUri() + newUri = URI(oldUri.scheme, oldUri.authority, + oldUri.path, newQuery, oldUri.fragment) + } catch (e: URISyntaxException) { + throw IOException(e) + } + + request = request.newBuilder().url(newUri.toURL()).build() + } else if ("header" == location) { + request = request.newBuilder() + .addHeader(paramName, apiKey) + .build() + } else if ("cookie" == location) { + request = request.newBuilder() + .addHeader("Cookie", "$paramName=$apiKey") + .build() + } + return chain.proceed(request) + } +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuth.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuth.kt new file mode 100644 index 00000000000..311a8f43979 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuth.kt @@ -0,0 +1,151 @@ +package org.openapitools.client.auth + +import java.net.HttpURLConnection.HTTP_UNAUTHORIZED +import java.net.HttpURLConnection.HTTP_FORBIDDEN + +import java.io.IOException + +import org.apache.oltu.oauth2.client.OAuthClient +import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException +import org.apache.oltu.oauth2.common.message.types.GrantType +import org.apache.oltu.oauth2.common.token.BasicOAuthToken + +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Response + +class OAuth( + client: OkHttpClient, + var tokenRequestBuilder: TokenRequestBuilder +) : Interceptor { + + interface AccessTokenListener { + fun notify(token: BasicOAuthToken) + } + + private var oauthClient: OAuthClient = OAuthClient(OAuthOkHttpClient(client)) + + @Volatile + private var accessToken: String? = null + var authenticationRequestBuilder: AuthenticationRequestBuilder? = null + private var accessTokenListener: AccessTokenListener? = null + + constructor( + requestBuilder: TokenRequestBuilder + ) : this( + OkHttpClient(), + requestBuilder + ) + + constructor( + flow: OAuthFlow, + authorizationUrl: String, + tokenUrl: String, + scopes: String + ) : this( + OAuthClientRequest.tokenLocation(tokenUrl).setScope(scopes) + ) { + setFlow(flow); + authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl); + } + + fun setFlow(flow: OAuthFlow) { + when (flow) { + OAuthFlow.accessCode, OAuthFlow.implicit -> + tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE) + OAuthFlow.password -> + tokenRequestBuilder.setGrantType(GrantType.PASSWORD) + OAuthFlow.application -> + tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS) + } + } + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + return retryingIntercept(chain, true) + } + + @Throws(IOException::class) + private fun retryingIntercept(chain: Interceptor.Chain, updateTokenAndRetryOnAuthorizationFailure: Boolean): Response { + var request = chain.request() + + // If the request already have an authorization (eg. Basic auth), do nothing + if (request.header("Authorization") != null) { + return chain.proceed(request) + } + + // If first time, get the token + val oAuthRequest: OAuthClientRequest + if (accessToken == null) { + updateAccessToken(null) + } + + if (accessToken != null) { + // Build the request + val rb = request.newBuilder() + + val requestAccessToken = accessToken + try { + oAuthRequest = OAuthBearerClientRequest(request.url.toString()) + .setAccessToken(requestAccessToken) + .buildHeaderMessage() + } catch (e: OAuthSystemException) { + throw IOException(e) + } + + oAuthRequest.headers.entries.forEach { header -> + rb.addHeader(header.key, header.value) + } + rb.url(oAuthRequest.locationUri) + + //Execute the request + val response = chain.proceed(rb.build()) + + // 401/403 most likely indicates that access token has expired. Unless it happens two times in a row. + if ((response.code == HTTP_UNAUTHORIZED || response.code == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure) { + try { + if (updateAccessToken(requestAccessToken)) { + response.body?.close() + return retryingIntercept(chain, false) + } + } catch (e: Exception) { + response.body?.close() + throw e + } + } + return response + } else { + return chain.proceed(chain.request()) + } + } + + /** + * Returns true if the access token has been updated + */ + @Throws(IOException::class) + @Synchronized + fun updateAccessToken(requestAccessToken: String?): Boolean { + if (accessToken == null || accessToken.equals(requestAccessToken)) { + return try { + val accessTokenResponse = oauthClient.accessToken(this.tokenRequestBuilder.buildBodyMessage()) + if (accessTokenResponse != null && accessTokenResponse.accessToken != null) { + accessToken = accessTokenResponse.accessToken + accessTokenListener?.notify(accessTokenResponse.oAuthToken as BasicOAuthToken) + !accessToken.equals(requestAccessToken) + } else { + false + } + } catch (e: OAuthSystemException) { + throw IOException(e) + } catch (e: OAuthProblemException) { + throw IOException(e) + } + } + return true; + } +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt new file mode 100644 index 00000000000..bcada9b7a6a --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthFlow.kt @@ -0,0 +1,5 @@ +package org.openapitools.client.auth + +enum class OAuthFlow { + accessCode, implicit, password, application +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt new file mode 100644 index 00000000000..93adbda3fc9 --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -0,0 +1,61 @@ +package org.openapitools.client.auth + +import java.io.IOException + +import org.apache.oltu.oauth2.client.HttpClient +import org.apache.oltu.oauth2.client.request.OAuthClientRequest +import org.apache.oltu.oauth2.client.response.OAuthClientResponse +import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory +import org.apache.oltu.oauth2.common.exception.OAuthProblemException +import org.apache.oltu.oauth2.common.exception.OAuthSystemException + +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.RequestBody + + +class OAuthOkHttpClient( + private var client: OkHttpClient +) : HttpClient { + + constructor() : this(OkHttpClient()) + + @Throws(OAuthSystemException::class, OAuthProblemException::class) + override fun <T : OAuthClientResponse?> execute( + request: OAuthClientRequest, + headers: Map<String, String>?, + requestMethod: String, + responseClass: Class<T>?): T { + + var mediaType = "application/json".toMediaTypeOrNull() + val requestBuilder = Request.Builder().url(request.locationUri) + + headers?.forEach { entry -> + if (entry.key.equals("Content-Type", true)) { + mediaType = entry.value.toMediaTypeOrNull() + } else { + requestBuilder.addHeader(entry.key, entry.value) + } + } + + val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + requestBuilder.method(requestMethod, body) + + try { + val response = client.newCall(requestBuilder.build()).execute() + return OAuthClientResponseFactory.createCustomResponse( + response.body?.string(), + response.body?.contentType()?.toString(), + response.code, + responseClass) + } catch (e: IOException) { + throw OAuthSystemException(e) + } + } + + override fun shutdown() { + // Nothing to do here + } + +} diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index aecba0cd55b..4770975587f 100644 --- a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,24 +1,33 @@ package org.openapitools.client.infrastructure +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder +import org.openapitools.client.auth.ApiKeyAuth +import org.openapitools.client.auth.OAuth +import org.openapitools.client.auth.OAuth.AccessTokenListener +import org.openapitools.client.auth.OAuthFlow + import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit +import okhttp3.logging.HttpLoggingInterceptor import retrofit2.converter.scalars.ScalarsConverterFactory import com.squareup.moshi.Moshi import retrofit2.converter.moshi.MoshiConverterFactory class ApiClient( - private var baseUrl: String = BASE_URL, + private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null, private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder ) { private val apiAuthorizations = mutableMapOf<String, Interceptor>() + private var logger: ((String) -> Unit)? = null private val retrofitBuilder: Retrofit.Builder by lazy { Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) + .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build())) } private val clientBuilder: OkHttpClient.Builder by lazy { @@ -26,7 +35,15 @@ class ApiClient( } private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient().newBuilder() + OkHttpClient() + .newBuilder() + .addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { + override fun log(message: String) { + logger?.invoke(message) + } + }).apply { + level = HttpLoggingInterceptor.Level.BODY + }) } init { @@ -34,20 +51,110 @@ class ApiClient( } constructor( - baseUrl: String = BASE_URL, + baseUrl: String = defaultBasePath, okHttpClientBuilder: OkHttpClient.Builder? = null, serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, authNames: Array<String> ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { authNames.forEach { authName -> val auth = when (authName) { - "api_key" -> "petstore_auth" -> + "api_key" -> ApiKeyAuth("header", "api_key")"petstore_auth" -> OAuth(OAuthFlow.implicit, "http://petstore.swagger.io/api/oauth/dialog", "", "write:pets, read:pets") else -> throw RuntimeException("auth name $authName not found in available auth names") } addAuthorization(authName, auth); } } + constructor( + baseUrl: String = defaultBasePath, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, + authName: String, + clientId: String, + secret: String, + username: String, + password: String + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { + getTokenEndPoint() + ?.setClientId(clientId) + ?.setClientSecret(secret) + ?.setUsername(username) + ?.setPassword(password) + } + + fun setLogger(logger: (String) -> Unit): ApiClient { + this.logger = logger + return this + } + + /** + * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Token request builder + */ + fun getTokenEndPoint(): TokenRequestBuilder? { + var result: TokenRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = tokenRequestBuilder + } + return result + } + + /** + * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * @return Authentication request builder + */ + fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? { + var result: AuthenticationRequestBuilder? = null + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + result = authenticationRequestBuilder + } + return result + } + + /** + * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one) + * @param accessToken Access token + * @return ApiClient + */ + fun setAccessToken(accessToken: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + setAccessToken(accessToken) + } + return this + } + + /** + * Helper method to configure the oauth accessCode/implicit flow parameters + * @param clientId Client ID + * @param clientSecret Client secret + * @param redirectURI Redirect URI + * @return ApiClient + */ + fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + tokenRequestBuilder + .setClientId(clientId) + .setClientSecret(clientSecret) + .setRedirectURI(redirectURI) + authenticationRequestBuilder + ?.setClientId(clientId) + ?.setRedirectURI(redirectURI) + } + return this; + } + + /** + * Configures a listener which is notified when a new access token is received. + * @param accessTokenListener Access token listener + * @return ApiClient + */ + fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient { + apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { + registerAccessTokenListener(accessTokenListener) + } + return this; + } + /** * Adds an authorization to be used by the client * @param authName Authentication name @@ -73,12 +180,19 @@ class ApiClient( } } - private inline fun <T, reified U> Iterable<T>.firstAs(): U { - for (element in this) if (element is U) return element - throw NoSuchElementException("Collection contains no element for generic parameter U") + private inline fun <T, reified U> Iterable<T>.runOnFirst(callback: U.() -> Unit) { + for (element in this) { + if (element is U) { + callback.invoke(element) + break + } + } } - companion object { - const val BASE_URL: String = "http://petstore.swagger.io/v2" + companion object { + @JvmStatic + val defaultBasePath: String by lazy { + System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") + } } } \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..e4200e77596 100644 --- a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,7 +7,7 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() + var moshiBuilder: Moshi.Builder = Moshi.Builder() .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) .add(OffsetDateTimeAdapter()) .add(LocalDateTimeAdapter()) -- GitLab From 5126bbe371c4a3592b72ed39189b75b43b42166e Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Tue, 24 Mar 2020 16:13:08 +0100 Subject: [PATCH 09/15] Delete merge files --- .../ApiClient.kt_BACKUP_18704.mustache | 304 ------------------ .../ApiClient.kt_BASE_18704.mustache | 43 --- .../ApiClient.kt_LOCAL_18704.mustache | 293 ----------------- .../ApiClient.kt_REMOTE_18704.mustache | 50 --- 4 files changed, 690 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BACKUP_18704.mustache delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BASE_18704.mustache delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_LOCAL_18704.mustache delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_REMOTE_18704.mustache diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BACKUP_18704.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BACKUP_18704.mustache deleted file mode 100644 index 5c74970b254..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BACKUP_18704.mustache +++ /dev/null @@ -1,304 +0,0 @@ -package {{packageName}}.infrastructure - -{{#hasOAuthMethods}} -import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder -import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder -import {{packageName}}.auth.ApiKeyAuth -import {{packageName}}.auth.OAuth -import {{packageName}}.auth.OAuth.AccessTokenListener -import {{packageName}}.auth.OAuthFlow -{{/hasOAuthMethods}} -{{#hasAuthMethods}} -{{#authMethods}} -{{#isBasic}} -{{#isBasicBasic}} -import {{packageName}}.auth.HttpBasicAuth -{{/isBasicBasic}} -{{#isBasicBearer}} -import {{packageName}}.auth.HttpBearerAuth -{{/isBasicBearer}} -{{/isBasic}} -{{/authMethods}} -{{/hasAuthMethods}} - -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.converter.scalars.ScalarsConverterFactory -{{#gson}} -import com.google.gson.Gson -import com.google.gson.GsonBuilder -import retrofit2.converter.gson.GsonConverterFactory -{{/gson}} -{{#moshi}} -import com.squareup.moshi.Moshi -import retrofit2.converter.moshi.MoshiConverterFactory -{{/moshi}} - -{{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient( -<<<<<<< HEAD - private var baseUrl: String = BASE_URL, - private val okHttpClientBuilder: OkHttpClient.Builder? = null, - private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder -) { - private val apiAuthorizations = mutableMapOf<String, Interceptor>() - private var logger: ((String) -> Unit)? = null - - private val retrofitBuilder: Retrofit.Builder by lazy { - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - {{#gson}} - .addConverterFactory(GsonConverterFactory.create(serializerBuilder.create())) - {{/gson}} - {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build())) - {{/moshi}} - } - - private val clientBuilder: OkHttpClient.Builder by lazy { - okHttpClientBuilder ?: defaultClientBuilder - } - - private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient() - .newBuilder() - .addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { - override fun log(message: String) { - logger?.invoke(message) - } - }).apply { - level = HttpLoggingInterceptor.Level.BODY - }) -======= - private var baseUrl: String = defaultBasePath, - private var okHttpClient: OkHttpClient -) { - companion object { - @JvmStatic - val defaultBasePath: String by lazy { - System.getProperties().getProperty("{{packageName}}.baseUrl", "{{{basePath}}}") - } ->>>>>>> 76a2f69dea75ccd2af847306e605e33994e7c3ce - } - - init { - normalizeBaseUrl() - } - - {{#hasAuthMethods}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authNames: Array<String> - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { - authNames.forEach { authName -> - val auth = when (authName) { - {{#authMethods}}"{{name}}" -> {{#isBasic}}{{#isBasicBasic}}HttpBasicAuth(){{/isBasicBasic}}{{#isBasicBearer}}HttpBearerAuth("{{scheme}}"){{/isBasicBearer}}{{/isBasic}}{{#isApiKey}}ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{#isKeyInQuery}}"query"{{/isKeyInQuery}}{{#isKeyInCookie}}"cookie"{{/isKeyInCookie}}, "{{keyParamName}}"){{/isApiKey}}{{#isOAuth}}OAuth(OAuthFlow.{{flow}}, "{{authorizationUrl}}", "{{tokenUrl}}", "{{#scopes}}{{scope}}{{#hasMore}}, {{/hasMore}}{{/scopes}}"){{/isOAuth}}{{/authMethods}} - else -> throw RuntimeException("auth name $authName not found in available auth names") - } - addAuthorization(authName, auth); - } - } - - {{#authMethods}} - {{#isBasic}} - {{#isBasicBasic}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - username: String, - password: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - setCredentials(username, password) - } - - {{/isBasicBasic}} - {{#isBasicBearer}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - bearerToken: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - setBearerToken(bearerToken) - } - - {{/isBasicBearer}} - {{/isBasic}} - {{/authMethods}} - {{#hasOAuthMethods}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - clientId: String, - secret: String, - username: String, - password: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - getTokenEndPoint() - ?.setClientId(clientId) - ?.setClientSecret(secret) - ?.setUsername(username) - ?.setPassword(password) - } - - fun setLogger(logger: (String) -> Unit): ApiClient { - this.logger = logger - return this - } - - {{/hasOAuthMethods}} - {{#authMethods}} - {{#isBasic}} - {{#isBasicBasic}} - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { - setCredentials(username, password); - } - {{#hasOAuthMethods}} - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder.setUsername(username).setPassword(password) - } - {{/hasOAuthMethods}} - return this - } - - {{/isBasicBasic}} - {{^isBasicBasic}} - {{#hasOAuthMethods}} - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder.setUsername(username).setPassword(password) - } - return this - } - {{/hasOAuthMethods}} - {{/isBasicBasic}} - {{#isBasicBearer}} - fun setBearerToken(bearerToken: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> { - this.bearerToken = bearerToken - } - return this - } - - {{/isBasicBearer}} - {{/isBasic}} - {{/authMethods}} - {{/hasAuthMethods}} - {{#hasOAuthMethods}} - /** - * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) - * @return Token request builder - */ - fun getTokenEndPoint(): TokenRequestBuilder? { - var result: TokenRequestBuilder? = null - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - result = tokenRequestBuilder - } - return result - } - - /** - * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one) - * @return Authentication request builder - */ - fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? { - var result: AuthenticationRequestBuilder? = null - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - result = authenticationRequestBuilder - } - return result - } - - /** - * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one) - * @param accessToken Access token - * @return ApiClient - */ - fun setAccessToken(accessToken: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - setAccessToken(accessToken) - } - return this - } - - /** - * Helper method to configure the oauth accessCode/implicit flow parameters - * @param clientId Client ID - * @param clientSecret Client secret - * @param redirectURI Redirect URI - * @return ApiClient - */ - fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder - .setClientId(clientId) - .setClientSecret(clientSecret) - .setRedirectURI(redirectURI) - authenticationRequestBuilder - ?.setClientId(clientId) - ?.setRedirectURI(redirectURI) - } - return this; - } - - /** - * Configures a listener which is notified when a new access token is received. - * @param accessTokenListener Access token listener - * @return ApiClient - */ - fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - registerAccessTokenListener(accessTokenListener) - } - return this; - } - - {{/hasOAuthMethods}} - /** - * Adds an authorization to be used by the client - * @param authName Authentication name - * @param authorization Authorization interceptor - * @return ApiClient - */ - fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { - if (apiAuthorizations.containsKey(authName)) { - throw RuntimeException("auth name $authName already in api authorizations") - } - apiAuthorizations[authName] = authorization - clientBuilder.addInterceptor(authorization) - return this - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } - - private inline fun <T, reified U> Iterable<T>.runOnFirst(callback: U.() -> Unit) { - for (element in this) { - if (element is U) { - callback.invoke(element) - break - } - } - } - - companion object { - const val BASE_URL: String = "{{{basePath}}}" - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BASE_18704.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BASE_18704.mustache deleted file mode 100644 index eab46f77ad4..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_BASE_18704.mustache +++ /dev/null @@ -1,43 +0,0 @@ -package {{packageName}}.infrastructure - -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.scalars.ScalarsConverterFactory -{{#gson}} -import retrofit2.converter.gson.GsonConverterFactory -{{/gson}} -{{#moshi}} -import retrofit2.converter.moshi.MoshiConverterFactory -{{/moshi}} - -{{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient( - private var baseUrl: String = "{{{basePath}}}", - private var okHttpClient: OkHttpClient -) { - init { - normalizeBaseUrl() - } - - val retrofitBuilder: Retrofit.Builder by lazy { - - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - {{#gson}} - .addConverterFactory(GsonConverterFactory.create(Serializer.gson)) - {{/gson}} - {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - {{/moshi}} - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(okHttpClient).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_LOCAL_18704.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_LOCAL_18704.mustache deleted file mode 100644 index 1b61467fbc2..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_LOCAL_18704.mustache +++ /dev/null @@ -1,293 +0,0 @@ -package {{packageName}}.infrastructure - -{{#hasOAuthMethods}} -import org.apache.oltu.oauth2.client.request.OAuthClientRequest.AuthenticationRequestBuilder -import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder -import {{packageName}}.auth.ApiKeyAuth -import {{packageName}}.auth.OAuth -import {{packageName}}.auth.OAuth.AccessTokenListener -import {{packageName}}.auth.OAuthFlow -{{/hasOAuthMethods}} -{{#hasAuthMethods}} -{{#authMethods}} -{{#isBasic}} -{{#isBasicBasic}} -import {{packageName}}.auth.HttpBasicAuth -{{/isBasicBasic}} -{{#isBasicBearer}} -import {{packageName}}.auth.HttpBearerAuth -{{/isBasicBearer}} -{{/isBasic}} -{{/authMethods}} -{{/hasAuthMethods}} - -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.converter.scalars.ScalarsConverterFactory -{{#gson}} -import com.google.gson.Gson -import com.google.gson.GsonBuilder -import retrofit2.converter.gson.GsonConverterFactory -{{/gson}} -{{#moshi}} -import com.squareup.moshi.Moshi -import retrofit2.converter.moshi.MoshiConverterFactory -{{/moshi}} - -{{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient( - private var baseUrl: String = BASE_URL, - private val okHttpClientBuilder: OkHttpClient.Builder? = null, - private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder -) { - private val apiAuthorizations = mutableMapOf<String, Interceptor>() - private var logger: ((String) -> Unit)? = null - - private val retrofitBuilder: Retrofit.Builder by lazy { - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - {{#gson}} - .addConverterFactory(GsonConverterFactory.create(serializerBuilder.create())) - {{/gson}} - {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(serializerBuilder.build())) - {{/moshi}} - } - - private val clientBuilder: OkHttpClient.Builder by lazy { - okHttpClientBuilder ?: defaultClientBuilder - } - - private val defaultClientBuilder: OkHttpClient.Builder by lazy { - OkHttpClient() - .newBuilder() - .addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { - override fun log(message: String) { - logger?.invoke(message) - } - }).apply { - level = HttpLoggingInterceptor.Level.BODY - }) - } - - init { - normalizeBaseUrl() - } - - {{#hasAuthMethods}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authNames: Array<String> - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { - authNames.forEach { authName -> - val auth = when (authName) { - {{#authMethods}}"{{name}}" -> {{#isBasic}}{{#isBasicBasic}}HttpBasicAuth(){{/isBasicBasic}}{{#isBasicBearer}}HttpBearerAuth("{{scheme}}"){{/isBasicBearer}}{{/isBasic}}{{#isApiKey}}ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{#isKeyInQuery}}"query"{{/isKeyInQuery}}{{#isKeyInCookie}}"cookie"{{/isKeyInCookie}}, "{{keyParamName}}"){{/isApiKey}}{{#isOAuth}}OAuth(OAuthFlow.{{flow}}, "{{authorizationUrl}}", "{{tokenUrl}}", "{{#scopes}}{{scope}}{{#hasMore}}, {{/hasMore}}{{/scopes}}"){{/isOAuth}}{{/authMethods}} - else -> throw RuntimeException("auth name $authName not found in available auth names") - } - addAuthorization(authName, auth); - } - } - - {{#authMethods}} - {{#isBasic}} - {{#isBasicBasic}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - username: String, - password: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - setCredentials(username, password) - } - - {{/isBasicBasic}} - {{#isBasicBearer}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - bearerToken: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - setBearerToken(bearerToken) - } - - {{/isBasicBearer}} - {{/isBasic}} - {{/authMethods}} - {{#hasOAuthMethods}} - constructor( - baseUrl: String = BASE_URL, - okHttpClientBuilder: OkHttpClient.Builder? = null, - serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder, - authName: String, - clientId: String, - secret: String, - username: String, - password: String - ) : this(baseUrl, okHttpClientBuilder, serializerBuilder, arrayOf(authName)) { - getTokenEndPoint() - ?.setClientId(clientId) - ?.setClientSecret(secret) - ?.setUsername(username) - ?.setPassword(password) - } - - fun setLogger(logger: (String) -> Unit): ApiClient { - this.logger = logger - return this - } - - {{/hasOAuthMethods}} - {{#authMethods}} - {{#isBasic}} - {{#isBasicBasic}} - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> { - setCredentials(username, password); - } - {{#hasOAuthMethods}} - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder.setUsername(username).setPassword(password) - } - {{/hasOAuthMethods}} - return this - } - - {{/isBasicBasic}} - {{^isBasicBasic}} - {{#hasOAuthMethods}} - fun setCredentials(username: String, password: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder.setUsername(username).setPassword(password) - } - return this - } - {{/hasOAuthMethods}} - {{/isBasicBasic}} - {{#isBasicBearer}} - fun setBearerToken(bearerToken: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> { - this.bearerToken = bearerToken - } - return this - } - - {{/isBasicBearer}} - {{/isBasic}} - {{/authMethods}} - {{/hasAuthMethods}} - {{#hasOAuthMethods}} - /** - * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) - * @return Token request builder - */ - fun getTokenEndPoint(): TokenRequestBuilder? { - var result: TokenRequestBuilder? = null - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - result = tokenRequestBuilder - } - return result - } - - /** - * Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one) - * @return Authentication request builder - */ - fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? { - var result: AuthenticationRequestBuilder? = null - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - result = authenticationRequestBuilder - } - return result - } - - /** - * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one) - * @param accessToken Access token - * @return ApiClient - */ - fun setAccessToken(accessToken: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - setAccessToken(accessToken) - } - return this - } - - /** - * Helper method to configure the oauth accessCode/implicit flow parameters - * @param clientId Client ID - * @param clientSecret Client secret - * @param redirectURI Redirect URI - * @return ApiClient - */ - fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - tokenRequestBuilder - .setClientId(clientId) - .setClientSecret(clientSecret) - .setRedirectURI(redirectURI) - authenticationRequestBuilder - ?.setClientId(clientId) - ?.setRedirectURI(redirectURI) - } - return this; - } - - /** - * Configures a listener which is notified when a new access token is received. - * @param accessTokenListener Access token listener - * @return ApiClient - */ - fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient { - apiAuthorizations.values.runOnFirst<Interceptor, OAuth> { - registerAccessTokenListener(accessTokenListener) - } - return this; - } - - {{/hasOAuthMethods}} - /** - * Adds an authorization to be used by the client - * @param authName Authentication name - * @param authorization Authorization interceptor - * @return ApiClient - */ - fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { - if (apiAuthorizations.containsKey(authName)) { - throw RuntimeException("auth name $authName already in api authorizations") - } - apiAuthorizations[authName] = authorization - clientBuilder.addInterceptor(authorization) - return this - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } - - private inline fun <T, reified U> Iterable<T>.runOnFirst(callback: U.() -> Unit) { - for (element in this) { - if (element is U) { - callback.invoke(element) - break - } - } - } - - companion object { - const val BASE_URL: String = "{{{basePath}}}" - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_REMOTE_18704.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_REMOTE_18704.mustache deleted file mode 100644 index 723be88b00a..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt_REMOTE_18704.mustache +++ /dev/null @@ -1,50 +0,0 @@ -package {{packageName}}.infrastructure - -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.scalars.ScalarsConverterFactory -{{#gson}} -import retrofit2.converter.gson.GsonConverterFactory -{{/gson}} -{{#moshi}} -import retrofit2.converter.moshi.MoshiConverterFactory -{{/moshi}} - -{{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient( - private var baseUrl: String = defaultBasePath, - private var okHttpClient: OkHttpClient -) { - companion object { - @JvmStatic - val defaultBasePath: String by lazy { - System.getProperties().getProperty("{{packageName}}.baseUrl", "{{{basePath}}}") - } - } - - init { - normalizeBaseUrl() - } - - val retrofitBuilder: Retrofit.Builder by lazy { - - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(ScalarsConverterFactory.create()) - {{#gson}} - .addConverterFactory(GsonConverterFactory.create(Serializer.gson)) - {{/gson}} - {{#moshi}} - .addConverterFactory(MoshiConverterFactory.create(Serializer.moshi)) - {{/moshi}} - } - - fun <S> createService(serviceClass: Class<S>): S { - return retrofitBuilder.client(okHttpClient).build().create(serviceClass) - } - - private fun normalizeBaseUrl() { - if (!baseUrl.endsWith("/")) { - baseUrl += "/" - } - } -} \ No newline at end of file -- GitLab From c417a6226f246b397a0604e1d995d5b1a974d70f Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 25 Mar 2020 14:17:30 +0100 Subject: [PATCH 10/15] Adds possibility to not initialize the default Serializer. Prevent crashes on lower Android SDK versions. --- .../infrastructure/Serializer.kt.mustache | 48 +++++++++++-------- .../client/petstore/kotlin/gson/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 14 +++--- .../petstore/kotlin/jackson/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 12 +++-- .../kotlin/json-request-string/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../kotlin/moshi-codegen/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 16 ++++--- .../petstore/kotlin/nonpublic/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../petstore/kotlin/nullable/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../petstore/kotlin/okhttp3/build.gradle | 1 + .../client/infrastructure/Serializer.kt | 18 +++---- .../petstore/kotlin/petstore/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../client/infrastructure/Serializer.kt | 18 +++---- .../petstore/kotlin/string/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../petstore/kotlin/threetenbp/build.gradle | 2 + .../client/infrastructure/Serializer.kt | 18 +++---- .../kotlin/uppercase-enum/build.gradle | 1 + .../org/openapitools/client/apis/EnumApi.kt | 8 +++- .../client/infrastructure/Serializer.kt | 18 +++---- .../org/openapitools/client/models/PetEnum.kt | 1 - 26 files changed, 168 insertions(+), 113 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index 71c8cf27c1e..b346ac316b3 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -35,16 +35,18 @@ import java.util.Date {{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer { {{#moshi}} @JvmStatic - var moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - {{^moshiCodeGen}} - .add(KotlinJsonAdapterFactory()) - {{/moshiCodeGen}} + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + {{^moshiCodeGen}} + .add(KotlinJsonAdapterFactory()) + {{/moshiCodeGen}} + } @JvmStatic val moshi: Moshi by lazy { @@ -53,12 +55,14 @@ import java.util.Date {{/moshi}} {{#gson}} @JvmStatic - var gsonBuilder: GsonBuilder = GsonBuilder() - .registerTypeAdapter(Date::class.java, DateAdapter()) - .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) - .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) - .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) - .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) + val gsonBuilder: GsonBuilder by lazy { + GsonBuilder() + .registerTypeAdapter(Date::class.java, DateAdapter()) + .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) + .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) + .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) + .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) + } @JvmStatic val gson: Gson by lazy { @@ -67,10 +71,12 @@ import java.util.Date {{/gson}} {{#jackson}} @JvmStatic - var jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() - .registerModule(Jdk8Module()) - .registerModule(JavaTimeModule()) - .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + var jacksonObjectMapper: ObjectMapper by lazy { + jacksonObjectMapper() + .registerModule(Jdk8Module()) + .registerModule(JavaTimeModule()) + .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) + .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + } {{/jackson}} } diff --git a/samples/client/petstore/kotlin/gson/build.gradle b/samples/client/petstore/kotlin/gson/build.gradle index ce9cb568dd7..6ee80627e46 100644 --- a/samples/client/petstore/kotlin/gson/build.gradle +++ b/samples/client/petstore/kotlin/gson/build.gradle @@ -29,8 +29,10 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.google.code.gson:gson:2.8.6" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 6465f148553..9840d407d6a 100644 --- a/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -10,12 +10,14 @@ import java.util.Date object Serializer { @JvmStatic - val gsonBuilder: GsonBuilder = GsonBuilder() - .registerTypeAdapter(Date::class.java, DateAdapter()) - .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) - .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) - .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) - .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) + val gsonBuilder: GsonBuilder by lazy { + GsonBuilder() + .registerTypeAdapter(Date::class.java, DateAdapter()) + .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) + .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) + .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) + .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) + } @JvmStatic val gson: Gson by lazy { diff --git a/samples/client/petstore/kotlin/jackson/build.gradle b/samples/client/petstore/kotlin/jackson/build.gradle index c76aad33ca3..3c4b1fe4d18 100644 --- a/samples/client/petstore/kotlin/jackson/build.gradle +++ b/samples/client/petstore/kotlin/jackson/build.gradle @@ -29,10 +29,12 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8b34e629c4e..94aa14da8a6 100644 --- a/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -10,9 +10,11 @@ import java.util.Date object Serializer { @JvmStatic - val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() - .registerModule(Jdk8Module()) - .registerModule(JavaTimeModule()) - .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + var jacksonObjectMapper: ObjectMapper by lazy { + jacksonObjectMapper() + .registerModule(Jdk8Module()) + .registerModule(JavaTimeModule()) + .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) + .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + } } diff --git a/samples/client/petstore/kotlin/json-request-string/build.gradle b/samples/client/petstore/kotlin/json-request-string/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/json-request-string/build.gradle +++ b/samples/client/petstore/kotlin/json-request-string/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/moshi-codegen/build.gradle b/samples/client/petstore/kotlin/moshi-codegen/build.gradle index 6b949799c39..6f18a574e27 100644 --- a/samples/client/petstore/kotlin/moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin/moshi-codegen/build.gradle @@ -30,9 +30,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.moshi:moshi:1.9.2" kapt "com.squareup.moshi:moshi-kotlin-codegen:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 06d9fe0bdc8..722982445de 100644 --- a/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -6,13 +6,15 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/nonpublic/build.gradle b/samples/client/petstore/kotlin/nonpublic/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/nonpublic/build.gradle +++ b/samples/client/petstore/kotlin/nonpublic/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 371e2a7013e..62510bd79f4 100644 --- a/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date internal object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/nullable/build.gradle b/samples/client/petstore/kotlin/nullable/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/nullable/build.gradle +++ b/samples/client/petstore/kotlin/nullable/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/okhttp3/build.gradle b/samples/client/petstore/kotlin/okhttp3/build.gradle index 662c2a62ce3..584c834358f 100644 --- a/samples/client/petstore/kotlin/okhttp3/build.gradle +++ b/samples/client/petstore/kotlin/okhttp3/build.gradle @@ -29,6 +29,7 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" diff --git a/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/petstore/build.gradle b/samples/client/petstore/kotlin/petstore/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/petstore/build.gradle +++ b/samples/client/petstore/kotlin/petstore/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index e4200e77596..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - var moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/string/build.gradle b/samples/client/petstore/kotlin/string/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/string/build.gradle +++ b/samples/client/petstore/kotlin/string/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/threetenbp/build.gradle b/samples/client/petstore/kotlin/threetenbp/build.gradle index 886101b0fbe..ee91c89a501 100644 --- a/samples/client/petstore/kotlin/threetenbp/build.gradle +++ b/samples/client/petstore/kotlin/threetenbp/build.gradle @@ -29,10 +29,12 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" compile "org.threeten:threetenbp:1.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/uppercase-enum/build.gradle b/samples/client/petstore/kotlin/uppercase-enum/build.gradle index 56be0bd0dd8..adff312f725 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin/uppercase-enum/build.gradle @@ -33,5 +33,6 @@ dependencies { compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt index ef1dc34d038..ffe3e760317 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt @@ -25,7 +25,13 @@ import org.openapitools.client.infrastructure.ResponseType import org.openapitools.client.infrastructure.Success import org.openapitools.client.infrastructure.toMultiValue -class EnumApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { +class EnumApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { + companion object { + @JvmStatic + val defaultBasePath: String by lazy { + System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") + } + } /** * Get enums diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 697559b2ec1..8c9b28ec088 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,14 +7,16 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder = Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) + val moshiBuilder: Moshi.Builder by lazy { + Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) + } @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt index 1d31ee94c35..e6aa01517e4 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt @@ -19,7 +19,6 @@ import com.squareup.moshi.Json * Values: MY_FIRST_VALUE,MY_SECOND_VALUE */ - enum class PetEnum(val value: kotlin.String){ -- GitLab From 4d5d1d62c809d5e3d97a46eb7537a125a2a07af2 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 25 Mar 2020 14:56:54 +0100 Subject: [PATCH 11/15] Add extension function to deserialize errors --- .../languages/KotlinClientCodegen.java | 1 + .../infrastructure/ResponseExt.kt.mustache | 39 +++++++++++++++++++ .../client/infrastructure/ResponseExt.kt | 18 +++++++++ 3 files changed, 58 insertions(+) create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache create mode 100644 samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 44eff97faf6..a3d9bb31970 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -321,6 +321,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { additionalProperties.put(JVM, true); additionalProperties.put(JVM_RETROFIT2, true); supportingFiles.add(new SupportingFile("infrastructure/ApiClient.kt.mustache", infrastructureFolder, "ApiClient.kt")); + supportingFiles.add(new SupportingFile("infrastructure/ResponseExt.kt.mustache", infrastructureFolder, "ResponseExt.kt")); supportingFiles.add(new SupportingFile("infrastructure/CollectionFormats.kt.mustache", infrastructureFolder, "CollectionFormats.kt")); addSupportingSerializerAdapters(infrastructureFolder); } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache new file mode 100644 index 00000000000..214bb0f2156 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache @@ -0,0 +1,39 @@ +package {{packageName}}.infrastructure + +{{#moshi}} +import com.squareup.moshi.JsonDataException +import com.squareup.moshi.Moshi +{{/moshi}} +{{#gson}} +import com.google.gson.GsonBuilder +import com.google.gson.JsonParseException +{{/gson}} +import retrofit2.Response + +{{#moshi}} +inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Builder = Serializer.moshiBuilder): T? { + val serializer = serializerBuilder.build() + val parser = serializer.adapter(T::class.java) + val response = errorBody()?.string() + if(response != null) + try { + return parser.fromJson(response) + } catch(e: JsonDataException) { + e.printStackTrace() + } + return null +} +{{/moshi}} +{{#gson}} +inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: GsonBuilder = Serializer.gsonBuilder): T? { + val serializer = serializerBuilder.create() + val reader = errorBody()?.charStream() + if(reader != null) + try { + return serializer.fromJson(reader, T::class.java) + } catch(e: JsonParseException) { + e.printStackTrace() + } + return null +} +{{/gson}} \ No newline at end of file diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt new file mode 100644 index 00000000000..e7be00e9fce --- /dev/null +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt @@ -0,0 +1,18 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.JsonDataException +import com.squareup.moshi.Moshi +import retrofit2.Response + +inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Builder = Serializer.moshiBuilder): T? { + val serializer = serializerBuilder.build() + val parser = serializer.adapter(T::class.java) + val response = errorBody()?.string() + if(response != null) + try { + return parser.fromJson(response) + } catch(e: JsonDataException) { + e.printStackTrace() + } + return null +} -- GitLab From bf04ab7204ce5960e118b24c39f2d175ff6ad580 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 25 Mar 2020 17:25:00 +0100 Subject: [PATCH 12/15] Revert "Adds possibility to not initialize the default Serializer. Prevent crashes on lower Android SDK versions." This reverts commit c417a6226f246b397a0604e1d995d5b1a974d70f. --- .../infrastructure/Serializer.kt.mustache | 48 ++++++++----------- .../client/petstore/kotlin/gson/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 14 +++--- .../petstore/kotlin/jackson/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 12 ++--- .../kotlin/json-request-string/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../kotlin/moshi-codegen/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 16 +++---- .../petstore/kotlin/nonpublic/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../petstore/kotlin/nullable/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../petstore/kotlin/okhttp3/build.gradle | 1 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../petstore/kotlin/petstore/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../client/infrastructure/Serializer.kt | 18 ++++--- .../petstore/kotlin/string/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../petstore/kotlin/threetenbp/build.gradle | 2 - .../client/infrastructure/Serializer.kt | 18 ++++--- .../kotlin/uppercase-enum/build.gradle | 1 - .../org/openapitools/client/apis/EnumApi.kt | 8 +--- .../client/infrastructure/Serializer.kt | 18 ++++--- .../org/openapitools/client/models/PetEnum.kt | 1 + 26 files changed, 113 insertions(+), 168 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index b346ac316b3..71c8cf27c1e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -35,18 +35,16 @@ import java.util.Date {{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer { {{#moshi}} @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - {{^moshiCodeGen}} - .add(KotlinJsonAdapterFactory()) - {{/moshiCodeGen}} - } + var moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + {{^moshiCodeGen}} + .add(KotlinJsonAdapterFactory()) + {{/moshiCodeGen}} @JvmStatic val moshi: Moshi by lazy { @@ -55,14 +53,12 @@ import java.util.Date {{/moshi}} {{#gson}} @JvmStatic - val gsonBuilder: GsonBuilder by lazy { - GsonBuilder() - .registerTypeAdapter(Date::class.java, DateAdapter()) - .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) - .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) - .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) - .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) - } + var gsonBuilder: GsonBuilder = GsonBuilder() + .registerTypeAdapter(Date::class.java, DateAdapter()) + .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) + .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) + .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) + .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) @JvmStatic val gson: Gson by lazy { @@ -71,12 +67,10 @@ import java.util.Date {{/gson}} {{#jackson}} @JvmStatic - var jacksonObjectMapper: ObjectMapper by lazy { - jacksonObjectMapper() - .registerModule(Jdk8Module()) - .registerModule(JavaTimeModule()) - .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) - } + var jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() + .registerModule(Jdk8Module()) + .registerModule(JavaTimeModule()) + .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) + .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) {{/jackson}} } diff --git a/samples/client/petstore/kotlin/gson/build.gradle b/samples/client/petstore/kotlin/gson/build.gradle index 6ee80627e46..ce9cb568dd7 100644 --- a/samples/client/petstore/kotlin/gson/build.gradle +++ b/samples/client/petstore/kotlin/gson/build.gradle @@ -29,10 +29,8 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.google.code.gson:gson:2.8.6" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 9840d407d6a..6465f148553 100644 --- a/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -10,14 +10,12 @@ import java.util.Date object Serializer { @JvmStatic - val gsonBuilder: GsonBuilder by lazy { - GsonBuilder() - .registerTypeAdapter(Date::class.java, DateAdapter()) - .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) - .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) - .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) - .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) - } + val gsonBuilder: GsonBuilder = GsonBuilder() + .registerTypeAdapter(Date::class.java, DateAdapter()) + .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) + .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) + .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter()) + .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter()) @JvmStatic val gson: Gson by lazy { diff --git a/samples/client/petstore/kotlin/jackson/build.gradle b/samples/client/petstore/kotlin/jackson/build.gradle index 3c4b1fe4d18..c76aad33ca3 100644 --- a/samples/client/petstore/kotlin/jackson/build.gradle +++ b/samples/client/petstore/kotlin/jackson/build.gradle @@ -29,12 +29,10 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 94aa14da8a6..8b34e629c4e 100644 --- a/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -10,11 +10,9 @@ import java.util.Date object Serializer { @JvmStatic - var jacksonObjectMapper: ObjectMapper by lazy { - jacksonObjectMapper() - .registerModule(Jdk8Module()) - .registerModule(JavaTimeModule()) - .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) - } + val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() + .registerModule(Jdk8Module()) + .registerModule(JavaTimeModule()) + .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) + .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) } diff --git a/samples/client/petstore/kotlin/json-request-string/build.gradle b/samples/client/petstore/kotlin/json-request-string/build.gradle index 9d6960b77a1..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/json-request-string/build.gradle +++ b/samples/client/petstore/kotlin/json-request-string/build.gradle @@ -29,11 +29,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/moshi-codegen/build.gradle b/samples/client/petstore/kotlin/moshi-codegen/build.gradle index 6f18a574e27..6b949799c39 100644 --- a/samples/client/petstore/kotlin/moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin/moshi-codegen/build.gradle @@ -30,11 +30,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.moshi:moshi:1.9.2" kapt "com.squareup.moshi:moshi-kotlin-codegen:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 722982445de..06d9fe0bdc8 100644 --- a/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -6,15 +6,13 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/nonpublic/build.gradle b/samples/client/petstore/kotlin/nonpublic/build.gradle index 9d6960b77a1..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/nonpublic/build.gradle +++ b/samples/client/petstore/kotlin/nonpublic/build.gradle @@ -29,11 +29,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 62510bd79f4..371e2a7013e 100644 --- a/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date internal object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/nullable/build.gradle b/samples/client/petstore/kotlin/nullable/build.gradle index 9d6960b77a1..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/nullable/build.gradle +++ b/samples/client/petstore/kotlin/nullable/build.gradle @@ -29,11 +29,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/okhttp3/build.gradle b/samples/client/petstore/kotlin/okhttp3/build.gradle index 584c834358f..662c2a62ce3 100644 --- a/samples/client/petstore/kotlin/okhttp3/build.gradle +++ b/samples/client/petstore/kotlin/okhttp3/build.gradle @@ -29,7 +29,6 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" diff --git a/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/petstore/build.gradle b/samples/client/petstore/kotlin/petstore/build.gradle index 9d6960b77a1..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/petstore/build.gradle +++ b/samples/client/petstore/kotlin/petstore/build.gradle @@ -29,11 +29,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/petstore/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..e4200e77596 100644 --- a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + var moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/string/build.gradle b/samples/client/petstore/kotlin/string/build.gradle index 9d6960b77a1..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/string/build.gradle +++ b/samples/client/petstore/kotlin/string/build.gradle @@ -29,11 +29,9 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/threetenbp/build.gradle b/samples/client/petstore/kotlin/threetenbp/build.gradle index ee91c89a501..886101b0fbe 100644 --- a/samples/client/petstore/kotlin/threetenbp/build.gradle +++ b/samples/client/petstore/kotlin/threetenbp/build.gradle @@ -29,12 +29,10 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" compile "org.threeten:threetenbp:1.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/uppercase-enum/build.gradle b/samples/client/petstore/kotlin/uppercase-enum/build.gradle index adff312f725..56be0bd0dd8 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin/uppercase-enum/build.gradle @@ -33,6 +33,5 @@ dependencies { compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" - compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt index ffe3e760317..ef1dc34d038 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt @@ -25,13 +25,7 @@ import org.openapitools.client.infrastructure.ResponseType import org.openapitools.client.infrastructure.Success import org.openapitools.client.infrastructure.toMultiValue -class EnumApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { - companion object { - @JvmStatic - val defaultBasePath: String by lazy { - System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") - } - } +class EnumApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { /** * Get enums diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 8c9b28ec088..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,16 +7,14 @@ import java.util.Date object Serializer { @JvmStatic - val moshiBuilder: Moshi.Builder by lazy { - Moshi.Builder() - .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) - .add(OffsetDateTimeAdapter()) - .add(LocalDateTimeAdapter()) - .add(LocalDateAdapter()) - .add(UUIDAdapter()) - .add(ByteArrayAdapter()) - .add(KotlinJsonAdapterFactory()) - } + val moshiBuilder: Moshi.Builder = Moshi.Builder() + .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) + .add(OffsetDateTimeAdapter()) + .add(LocalDateTimeAdapter()) + .add(LocalDateAdapter()) + .add(UUIDAdapter()) + .add(ByteArrayAdapter()) + .add(KotlinJsonAdapterFactory()) @JvmStatic val moshi: Moshi by lazy { diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt index e6aa01517e4..1d31ee94c35 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt @@ -19,6 +19,7 @@ import com.squareup.moshi.Json * Values: MY_FIRST_VALUE,MY_SECOND_VALUE */ + enum class PetEnum(val value: kotlin.String){ -- GitLab From a8bb0dc391c88c75f9eb7891d27a8c6be3c61f25 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 25 Mar 2020 17:29:28 +0100 Subject: [PATCH 13/15] moshiBuilder/gsonBuilder back from var to val --- .../jvm-common/infrastructure/Serializer.kt.mustache | 6 +++--- samples/client/petstore/kotlin/gson/build.gradle | 2 ++ samples/client/petstore/kotlin/jackson/build.gradle | 2 ++ .../petstore/kotlin/json-request-string/build.gradle | 2 ++ samples/client/petstore/kotlin/moshi-codegen/build.gradle | 2 ++ samples/client/petstore/kotlin/nonpublic/build.gradle | 2 ++ samples/client/petstore/kotlin/nullable/build.gradle | 2 ++ samples/client/petstore/kotlin/okhttp3/build.gradle | 1 + samples/client/petstore/kotlin/petstore/build.gradle | 2 ++ .../org/openapitools/client/infrastructure/Serializer.kt | 2 +- samples/client/petstore/kotlin/string/build.gradle | 2 ++ samples/client/petstore/kotlin/threetenbp/build.gradle | 2 ++ .../client/petstore/kotlin/uppercase-enum/build.gradle | 1 + .../main/kotlin/org/openapitools/client/apis/EnumApi.kt | 8 +++++++- .../main/kotlin/org/openapitools/client/models/PetEnum.kt | 1 - 15 files changed, 31 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index 71c8cf27c1e..7ccd5079677 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -35,7 +35,7 @@ import java.util.Date {{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer { {{#moshi}} @JvmStatic - var moshiBuilder: Moshi.Builder = Moshi.Builder() + val moshiBuilder: Moshi.Builder = Moshi.Builder() .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) .add(OffsetDateTimeAdapter()) .add(LocalDateTimeAdapter()) @@ -53,7 +53,7 @@ import java.util.Date {{/moshi}} {{#gson}} @JvmStatic - var gsonBuilder: GsonBuilder = GsonBuilder() + val gsonBuilder: GsonBuilder = GsonBuilder() .registerTypeAdapter(Date::class.java, DateAdapter()) .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter()) .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter()) @@ -67,7 +67,7 @@ import java.util.Date {{/gson}} {{#jackson}} @JvmStatic - var jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() + val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() .registerModule(Jdk8Module()) .registerModule(JavaTimeModule()) .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) diff --git a/samples/client/petstore/kotlin/gson/build.gradle b/samples/client/petstore/kotlin/gson/build.gradle index ce9cb568dd7..6ee80627e46 100644 --- a/samples/client/petstore/kotlin/gson/build.gradle +++ b/samples/client/petstore/kotlin/gson/build.gradle @@ -29,8 +29,10 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.google.code.gson:gson:2.8.6" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/jackson/build.gradle b/samples/client/petstore/kotlin/jackson/build.gradle index c76aad33ca3..3c4b1fe4d18 100644 --- a/samples/client/petstore/kotlin/jackson/build.gradle +++ b/samples/client/petstore/kotlin/jackson/build.gradle @@ -29,10 +29,12 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2" compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/json-request-string/build.gradle b/samples/client/petstore/kotlin/json-request-string/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/json-request-string/build.gradle +++ b/samples/client/petstore/kotlin/json-request-string/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/moshi-codegen/build.gradle b/samples/client/petstore/kotlin/moshi-codegen/build.gradle index 6b949799c39..6f18a574e27 100644 --- a/samples/client/petstore/kotlin/moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin/moshi-codegen/build.gradle @@ -30,9 +30,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.moshi:moshi:1.9.2" kapt "com.squareup.moshi:moshi-kotlin-codegen:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nonpublic/build.gradle b/samples/client/petstore/kotlin/nonpublic/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/nonpublic/build.gradle +++ b/samples/client/petstore/kotlin/nonpublic/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/nullable/build.gradle b/samples/client/petstore/kotlin/nullable/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/nullable/build.gradle +++ b/samples/client/petstore/kotlin/nullable/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/okhttp3/build.gradle b/samples/client/petstore/kotlin/okhttp3/build.gradle index 662c2a62ce3..584c834358f 100644 --- a/samples/client/petstore/kotlin/okhttp3/build.gradle +++ b/samples/client/petstore/kotlin/okhttp3/build.gradle @@ -29,6 +29,7 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" diff --git a/samples/client/petstore/kotlin/petstore/build.gradle b/samples/client/petstore/kotlin/petstore/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/petstore/build.gradle +++ b/samples/client/petstore/kotlin/petstore/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index e4200e77596..697559b2ec1 100644 --- a/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -7,7 +7,7 @@ import java.util.Date object Serializer { @JvmStatic - var moshiBuilder: Moshi.Builder = Moshi.Builder() + val moshiBuilder: Moshi.Builder = Moshi.Builder() .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe()) .add(OffsetDateTimeAdapter()) .add(LocalDateTimeAdapter()) diff --git a/samples/client/petstore/kotlin/string/build.gradle b/samples/client/petstore/kotlin/string/build.gradle index 56be0bd0dd8..9d6960b77a1 100644 --- a/samples/client/petstore/kotlin/string/build.gradle +++ b/samples/client/petstore/kotlin/string/build.gradle @@ -29,9 +29,11 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/threetenbp/build.gradle b/samples/client/petstore/kotlin/threetenbp/build.gradle index 886101b0fbe..ee91c89a501 100644 --- a/samples/client/petstore/kotlin/threetenbp/build.gradle +++ b/samples/client/petstore/kotlin/threetenbp/build.gradle @@ -29,10 +29,12 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" compile "org.threeten:threetenbp:1.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/uppercase-enum/build.gradle b/samples/client/petstore/kotlin/uppercase-enum/build.gradle index 56be0bd0dd8..adff312f725 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin/uppercase-enum/build.gradle @@ -33,5 +33,6 @@ dependencies { compile "com.squareup.moshi:moshi-kotlin:1.9.2" compile "com.squareup.moshi:moshi-adapters:1.9.2" compile "com.squareup.okhttp3:okhttp:4.2.2" + compile "com.squareup.okhttp3:logging-interceptor:4.4.0" testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0" } diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt index ef1dc34d038..ffe3e760317 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt @@ -25,7 +25,13 @@ import org.openapitools.client.infrastructure.ResponseType import org.openapitools.client.infrastructure.Success import org.openapitools.client.infrastructure.toMultiValue -class EnumApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) { +class EnumApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { + companion object { + @JvmStatic + val defaultBasePath: String by lazy { + System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2") + } + } /** * Get enums diff --git a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt index 1d31ee94c35..e6aa01517e4 100644 --- a/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt +++ b/samples/client/petstore/kotlin/uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt @@ -19,7 +19,6 @@ import com.squareup.moshi.Json * Values: MY_FIRST_VALUE,MY_SECOND_VALUE */ - enum class PetEnum(val value: kotlin.String){ -- GitLab From 0d1b471749604e07dd7f82064609737d79eeaac4 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 8 Apr 2020 10:43:06 +0200 Subject: [PATCH 14/15] Fixed logger access in ApiClient --- .../infrastructure/ApiClient.kt.mustache | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index cb17c19a674..5ee80767b1e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -42,7 +42,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder ) { private val apiAuthorizations = mutableMapOf<String, Interceptor>() - private var logger: ((String) -> Unit)? = null + var logger: ((String) -> Unit)? = null private val retrofitBuilder: Retrofit.Builder by lazy { Retrofit.Builder() @@ -139,11 +139,6 @@ import retrofit2.converter.moshi.MoshiConverterFactory ?.setPassword(password) } - fun setLogger(logger: (String) -> Unit): ApiClient { - this.logger = logger - return this - } - {{/hasOAuthMethods}} {{#authMethods}} {{#isBasic}} @@ -268,6 +263,11 @@ import retrofit2.converter.moshi.MoshiConverterFactory return this } + fun setLogger(logger: (String) -> Unit): ApiClient { + this.logger = logger + return this + } + fun <S> createService(serviceClass: Class<S>): S { return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) } -- GitLab From 07f286910210254757b4b7992ffd7aec769ce304 Mon Sep 17 00:00:00 2001 From: Alexander Karkossa <alexander.karkossa@googlemail.com> Date: Wed, 8 Apr 2020 10:46:19 +0200 Subject: [PATCH 15/15] ResponseExt now throws exceptions --- .../infrastructure/ResponseExt.kt.mustache | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache index 214bb0f2156..bacdc391a69 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ResponseExt.kt.mustache @@ -11,29 +11,25 @@ import com.google.gson.JsonParseException import retrofit2.Response {{#moshi}} +@Throws(JsonDataException::class) inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Builder = Serializer.moshiBuilder): T? { val serializer = serializerBuilder.build() val parser = serializer.adapter(T::class.java) val response = errorBody()?.string() - if(response != null) - try { - return parser.fromJson(response) - } catch(e: JsonDataException) { - e.printStackTrace() - } + if(response != null) { + return parser.fromJson(response) + } return null } {{/moshi}} {{#gson}} +@Throws(JsonParseException::class) inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: GsonBuilder = Serializer.gsonBuilder): T? { val serializer = serializerBuilder.create() val reader = errorBody()?.charStream() - if(reader != null) - try { - return serializer.fromJson(reader, T::class.java) - } catch(e: JsonParseException) { - e.printStackTrace() - } + if(reader != null) { + return serializer.fromJson(reader, T::class.java) + } return null } {{/gson}} \ No newline at end of file -- GitLab