From b3e75c04bd0f9f3e00d7f22a4d179ac3efde539b Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Thu, 21 Jul 2022 11:18:32 +0200 Subject: [PATCH 01/13] update Kotlin & Ktor versions --- .../kotlin-client/build.gradle.mustache | 30 +++++++++---------- .../multiplatform/build.gradle.kts.mustache | 8 ++--- .../petstore/kotlin-okhttp3/build.gradle | 4 +-- 3 files changed, 21 insertions(+), 21 deletions(-) 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 ef2426d83371..368b578da2d4 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 @@ -3,15 +3,15 @@ version '{{artifactVersion}}' {{^omitGradleWrapper}} wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } {{/omitGradleWrapper}} buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' {{#jvm-ktor}} - ext.ktor_version = '1.6.7' + ext.ktor_version = '2.0.3' {{/jvm-ktor}} {{#jvm-retrofit2}} ext.retrofitVersion = '2.9.0' @@ -72,31 +72,31 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" {{^doNotUseRxAndCoroutines}} {{#useCoroutines}} - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.3" {{/useCoroutines}} {{/doNotUseRxAndCoroutines}} {{#moshi}} {{^moshiCodeGen}} implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" {{/moshiCodeGen}} {{#moshiCodeGen}} - implementation "com.squareup.moshi:moshi:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - kapt "com.squareup.moshi:moshi-kotlin-codegen:1.12.0" + implementation "com.squareup.moshi:moshi:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + kapt "com.squareup.moshi:moshi-kotlin-codegen:1.13.0" {{/moshiCodeGen}} {{/moshi}} {{#gson}} - implementation "com.google.code.gson:gson:2.8.7" + implementation "com.google.code.gson:gson:2.9.0" {{/gson}} {{#jackson}} implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3" {{/jackson}} {{#kotlinx_serialization}} - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3" {{/kotlinx_serialization}} {{#jvm-ktor}} implementation "io.ktor:ktor-client-core:$ktor_version" @@ -111,7 +111,7 @@ dependencies { implementation "com.squareup.okhttp3:okhttp:3.12.13" {{/jvm-okhttp3}} {{#jvm-okhttp4}} - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.okhttp3:okhttp:4.10.0" {{/jvm-okhttp4}} {{#threetenbp}} implementation "org.threeten:threetenbp:1.5.1" @@ -120,7 +120,7 @@ dependencies { {{#hasOAuthMethods}} implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" {{/hasOAuthMethods}} - implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.okhttp3:logging-interceptor:4.10.0" {{#useRxJava}} implementation "io.reactivex:rxjava:$rxJavaVersion" implementation "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion" diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache index 42826ffff641..2f6071e32fe5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache @@ -8,10 +8,10 @@ plugins { group = "{{groupId}}" version = "{{artifactVersion}}" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin-okhttp3/build.gradle index b19a3b3873dc..9103db9d4934 100644 --- a/samples/client/petstore/kotlin-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-okhttp3/build.gradle @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" implementation "com.squareup.okhttp3:okhttp:3.12.13" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } From 5b2dad905099178d562df34b78061fad2150b75f Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Thu, 21 Jul 2022 11:30:37 +0200 Subject: [PATCH 02/13] update samples --- .../kotlin-allOff-discriminator/build.gradle | 10 +++++----- .../build.gradle | 8 ++++---- .../build.gradle | 10 +++++----- .../build.gradle.kts | 8 ++++---- .../build.gradle.kts | 8 ++++---- .../kotlin-bigdecimal-default-okhttp4/build.gradle | 10 +++++----- .../kotlin-default-values-jvm-okhttp3/build.gradle | 8 ++++---- .../kotlin-default-values-jvm-okhttp4/build.gradle | 10 +++++----- .../kotlin-default-values-jvm-retrofit2/build.gradle | 10 +++++----- .../build.gradle.kts | 8 ++++---- .../petstore/kotlin-enum-default-value/build.gradle | 10 +++++----- samples/client/petstore/kotlin-gson/build.gradle | 8 ++++---- samples/client/petstore/kotlin-jackson/build.gradle | 10 +++++----- .../petstore/kotlin-json-request-string/build.gradle | 10 +++++----- .../petstore/kotlin-jvm-ktor-gson/build.gradle | 8 ++++---- .../petstore/kotlin-jvm-ktor-jackson/build.gradle | 10 +++++----- .../kotlin-jvm-okhttp4-coroutines/build.gradle | 10 +++++----- .../client/petstore/kotlin-modelMutable/build.gradle | 10 +++++----- .../petstore/kotlin-moshi-codegen/build.gradle | 12 ++++++------ .../petstore/kotlin-multiplatform/build.gradle.kts | 8 ++++---- .../client/petstore/kotlin-nonpublic/build.gradle | 10 +++++----- samples/client/petstore/kotlin-nullable/build.gradle | 10 +++++----- samples/client/petstore/kotlin-okhttp3/build.gradle | 4 ++-- .../build.gradle | 8 ++++---- .../petstore/kotlin-retrofit2-rx3/build.gradle | 10 +++++----- .../client/petstore/kotlin-retrofit2/build.gradle | 10 +++++----- samples/client/petstore/kotlin-string/build.gradle | 10 +++++----- .../client/petstore/kotlin-threetenbp/build.gradle | 10 +++++----- .../petstore/kotlin-uppercase-enum/build.gradle | 10 +++++----- samples/client/petstore/kotlin/build.gradle | 10 +++++----- 30 files changed, 139 insertions(+), 139 deletions(-) diff --git a/samples/client/petstore/kotlin-allOff-discriminator/build.gradle b/samples/client/petstore/kotlin-allOff-discriminator/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-allOff-discriminator/build.gradle +++ b/samples/client/petstore/kotlin-allOff-discriminator/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle index b19a3b3873dc..9a3e33441769 100644 --- a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" implementation "com.squareup.okhttp3:okhttp:3.12.13" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts index 2380844aa924..247e1f08d881 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts index 2380844aa924..247e1f08d881 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle index b19a3b3873dc..9a3e33441769 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" implementation "com.squareup.okhttp3:okhttp:3.12.13" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle index e094b704418f..a6449de3187f 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' ext.retrofitVersion = '2.9.0' repositories { @@ -31,9 +31,9 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:logging-interceptor:4.10.0" implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts index 2380844aa924..247e1f08d881 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-enum-default-value/build.gradle b/samples/client/petstore/kotlin-enum-default-value/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-enum-default-value/build.gradle +++ b/samples/client/petstore/kotlin-enum-default-value/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-gson/build.gradle b/samples/client/petstore/kotlin-gson/build.gradle index 5cad8581cb64..4a98d868901f 100644 --- a/samples/client/petstore/kotlin-gson/build.gradle +++ b/samples/client/petstore/kotlin-gson/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -29,7 +29,7 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "com.google.code.gson:gson:2.8.7" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.google.code.gson:gson:2.9.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jackson/build.gradle b/samples/client/petstore/kotlin-jackson/build.gradle index 5cbe1fb014f9..5aa529f5f435 100644 --- a/samples/client/petstore/kotlin-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jackson/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin-json-request-string/build.gradle index 614bd17172a3..68aa4d6cfc6c 100644 --- a/samples/client/petstore/kotlin-json-request-string/build.gradle +++ b/samples/client/petstore/kotlin-json-request-string/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -31,8 +31,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle index 70cfaf2c98f1..0f4739d0abd4 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle @@ -2,13 +2,13 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' - ext.ktor_version = '1.6.7' + ext.kotlin_version = '1.6.10' + ext.ktor_version = '2.0.3' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,7 +30,7 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "com.google.code.gson:gson:2.8.7" + implementation "com.google.code.gson:gson:2.9.0" implementation "io.ktor:ktor-client-core:$ktor_version" implementation "io.ktor:ktor-client-gson:$ktor_version" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle index a9de22fdf103..c0353301d872 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle @@ -2,13 +2,13 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' - ext.ktor_version = '1.6.7' + ext.kotlin_version = '1.6.10' + ext.ktor_version = '2.0.3' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -31,8 +31,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3" implementation "io.ktor:ktor-client-core:$ktor_version" implementation "io.ktor:ktor-client-jackson:$ktor_version" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle index 70d79ab69322..7739ef4a0364 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -29,8 +29,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1" - implementation "com.google.code.gson:gson:2.8.7" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.3" + implementation "com.google.code.gson:gson:2.9.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-modelMutable/build.gradle b/samples/client/petstore/kotlin-modelMutable/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-modelMutable/build.gradle +++ b/samples/client/petstore/kotlin-modelMutable/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-moshi-codegen/build.gradle b/samples/client/petstore/kotlin-moshi-codegen/build.gradle index 7e8fe4d90390..1fe5fa421693 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin-moshi-codegen/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,9 +30,9 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "com.squareup.moshi:moshi:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - kapt "com.squareup.moshi:moshi-kotlin-codegen:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + kapt "com.squareup.moshi:moshi-kotlin-codegen:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts index 2380844aa924..247e1f08d881 100644 --- a/samples/client/petstore/kotlin-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-nonpublic/build.gradle b/samples/client/petstore/kotlin-nonpublic/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-nonpublic/build.gradle +++ b/samples/client/petstore/kotlin-nonpublic/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-nullable/build.gradle b/samples/client/petstore/kotlin-nullable/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-nullable/build.gradle +++ b/samples/client/petstore/kotlin-nullable/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin-okhttp3/build.gradle index 9103db9d4934..9a3e33441769 100644 --- a/samples/client/petstore/kotlin-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-okhttp3/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle index 60257e316011..8fcabfe1b29e 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' ext.retrofitVersion = '2.9.0' repositories { @@ -32,9 +32,9 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3" implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" - implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.okhttp3:logging-interceptor:4.10.0" implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle index 0d9707eb2d9b..062acf63a458 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' ext.retrofitVersion = '2.9.0' ext.rxJava3Version = '3.0.12' @@ -32,10 +32,10 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" - implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.okhttp3:logging-interceptor:4.10.0" implementation "io.reactivex.rxjava3:rxjava:$rxJava3Version" implementation "com.squareup.retrofit2:adapter-rxjava3:2.9.0" implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" diff --git a/samples/client/petstore/kotlin-retrofit2/build.gradle b/samples/client/petstore/kotlin-retrofit2/build.gradle index 32e67f975a8b..17462c02b7f1 100644 --- a/samples/client/petstore/kotlin-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' ext.retrofitVersion = '2.9.0' repositories { @@ -31,10 +31,10 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" - implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.okhttp3:logging-interceptor:4.10.0" implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" diff --git a/samples/client/petstore/kotlin-string/build.gradle b/samples/client/petstore/kotlin-string/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-string/build.gradle +++ b/samples/client/petstore/kotlin-string/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-threetenbp/build.gradle b/samples/client/petstore/kotlin-threetenbp/build.gradle index 39e3e411643f..35ebbeaa6119 100644 --- a/samples/client/petstore/kotlin-threetenbp/build.gradle +++ b/samples/client/petstore/kotlin-threetenbp/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,9 +30,9 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" implementation "org.threeten:threetenbp:1.5.1" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin-uppercase-enum/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin-uppercase-enum/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin/build.gradle b/samples/client/petstore/kotlin/build.gradle index 3de8b45b135e..f628b2a5a204 100644 --- a/samples/client/petstore/kotlin/build.gradle +++ b/samples/client/petstore/kotlin/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '6.8.3' + gradleVersion = '7.5.0' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.6.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,8 +30,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.12.0" - implementation "com.squareup.moshi:moshi-adapters:1.12.0" - implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "com.squareup.moshi:moshi-kotlin:1.13.0" + implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } From 8ab8782347f53e3512ca5219a7356e3259ca0d00 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Thu, 21 Jul 2022 14:12:13 +0200 Subject: [PATCH 03/13] fix gradle version --- .../src/main/resources/kotlin-client/build.gradle.mustache | 2 +- .../client/petstore/kotlin-allOff-discriminator/build.gradle | 2 +- .../kotlin-array-simple-string-jvm-okhttp3/build.gradle | 2 +- .../kotlin-array-simple-string-jvm-okhttp4/build.gradle | 2 +- .../petstore/kotlin-bigdecimal-default-okhttp4/build.gradle | 2 +- .../petstore/kotlin-default-values-jvm-okhttp3/build.gradle | 2 +- .../petstore/kotlin-default-values-jvm-okhttp4/build.gradle | 2 +- .../petstore/kotlin-default-values-jvm-retrofit2/build.gradle | 2 +- samples/client/petstore/kotlin-enum-default-value/build.gradle | 2 +- samples/client/petstore/kotlin-gson/build.gradle | 2 +- samples/client/petstore/kotlin-jackson/build.gradle | 2 +- samples/client/petstore/kotlin-json-request-string/build.gradle | 2 +- samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle | 2 +- samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle | 2 +- .../client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle | 2 +- samples/client/petstore/kotlin-modelMutable/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 | 2 +- .../kotlin-retrofit2-kotlinx_serialization/build.gradle | 2 +- samples/client/petstore/kotlin-retrofit2-rx3/build.gradle | 2 +- samples/client/petstore/kotlin-retrofit2/build.gradle | 2 +- samples/client/petstore/kotlin-string/build.gradle | 2 +- samples/client/petstore/kotlin-threetenbp/build.gradle | 2 +- samples/client/petstore/kotlin-uppercase-enum/build.gradle | 2 +- samples/client/petstore/kotlin/build.gradle | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) 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 368b578da2d4..5a9a51bd702f 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 @@ -3,7 +3,7 @@ version '{{artifactVersion}}' {{^omitGradleWrapper}} wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } {{/omitGradleWrapper}} diff --git a/samples/client/petstore/kotlin-allOff-discriminator/build.gradle b/samples/client/petstore/kotlin-allOff-discriminator/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-allOff-discriminator/build.gradle +++ b/samples/client/petstore/kotlin-allOff-discriminator/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle index 9a3e33441769..e48744c81ed4 100644 --- a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle index 9a3e33441769..e48744c81ed4 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle index a6449de3187f..07cd4614b28a 100644 --- a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-enum-default-value/build.gradle b/samples/client/petstore/kotlin-enum-default-value/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-enum-default-value/build.gradle +++ b/samples/client/petstore/kotlin-enum-default-value/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-gson/build.gradle b/samples/client/petstore/kotlin-gson/build.gradle index 4a98d868901f..205e3365af15 100644 --- a/samples/client/petstore/kotlin-gson/build.gradle +++ b/samples/client/petstore/kotlin-gson/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-jackson/build.gradle b/samples/client/petstore/kotlin-jackson/build.gradle index 5aa529f5f435..e4d25c073cbd 100644 --- a/samples/client/petstore/kotlin-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jackson/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin-json-request-string/build.gradle index 68aa4d6cfc6c..9d935f862d0c 100644 --- a/samples/client/petstore/kotlin-json-request-string/build.gradle +++ b/samples/client/petstore/kotlin-json-request-string/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle index 0f4739d0abd4..079c8ae181c2 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle index c0353301d872..ad6a6faa2a04 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle index 7739ef4a0364..410fce57b481 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-modelMutable/build.gradle b/samples/client/petstore/kotlin-modelMutable/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-modelMutable/build.gradle +++ b/samples/client/petstore/kotlin-modelMutable/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-moshi-codegen/build.gradle b/samples/client/petstore/kotlin-moshi-codegen/build.gradle index 1fe5fa421693..1f5a719c9df9 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin-moshi-codegen/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-nonpublic/build.gradle b/samples/client/petstore/kotlin-nonpublic/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-nonpublic/build.gradle +++ b/samples/client/petstore/kotlin-nonpublic/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-nullable/build.gradle b/samples/client/petstore/kotlin-nullable/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-nullable/build.gradle +++ b/samples/client/petstore/kotlin-nullable/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin-okhttp3/build.gradle index 9a3e33441769..e48744c81ed4 100644 --- a/samples/client/petstore/kotlin-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-okhttp3/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle index 8fcabfe1b29e..e94a5d013012 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle index 062acf63a458..8d3c9dd1bd27 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-retrofit2/build.gradle b/samples/client/petstore/kotlin-retrofit2/build.gradle index 17462c02b7f1..2c2228d9d6ed 100644 --- a/samples/client/petstore/kotlin-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-string/build.gradle b/samples/client/petstore/kotlin-string/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-string/build.gradle +++ b/samples/client/petstore/kotlin-string/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-threetenbp/build.gradle b/samples/client/petstore/kotlin-threetenbp/build.gradle index 35ebbeaa6119..e27847c2f330 100644 --- a/samples/client/petstore/kotlin-threetenbp/build.gradle +++ b/samples/client/petstore/kotlin-threetenbp/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin-uppercase-enum/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin-uppercase-enum/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } diff --git a/samples/client/petstore/kotlin/build.gradle b/samples/client/petstore/kotlin/build.gradle index f628b2a5a204..527140cfc854 100644 --- a/samples/client/petstore/kotlin/build.gradle +++ b/samples/client/petstore/kotlin/build.gradle @@ -2,7 +2,7 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '7.5.0' + gradleVersion = '7.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } From 9f513c5032d04d691572ffbb0a9a4affbc081684 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Fri, 22 Jul 2022 09:23:27 +0200 Subject: [PATCH 04/13] update the ktor client templates and project samples --- .../kotlin-client/build.gradle.mustache | 3 + .../libraries/jvm-ktor/api.mustache | 10 +- .../infrastructure/ApiClient.kt.mustache | 114 ++++++++++-------- .../infrastructure/HttpResponse.kt.mustache | 8 +- .../kotlin-jvm-ktor-gson/build.gradle | 2 + .../org/openapitools/client/apis/PetApi.kt | 5 +- .../org/openapitools/client/apis/StoreApi.kt | 5 +- .../org/openapitools/client/apis/UserApi.kt | 5 +- .../client/infrastructure/ApiClient.kt | 83 ++++++------- .../client/infrastructure/HttpResponse.kt | 8 +- .../kotlin-jvm-ktor-jackson/build.gradle | 2 + .../org/openapitools/client/apis/PetApi.kt | 4 +- .../org/openapitools/client/apis/StoreApi.kt | 4 +- .../org/openapitools/client/apis/UserApi.kt | 4 +- .../client/infrastructure/ApiClient.kt | 91 +++++++------- .../client/infrastructure/HttpResponse.kt | 8 +- 16 files changed, 193 insertions(+), 163 deletions(-) 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 5a9a51bd702f..5716f8656c32 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 @@ -100,11 +100,14 @@ dependencies { {{/kotlinx_serialization}} {{#jvm-ktor}} implementation "io.ktor:ktor-client-core:$ktor_version" + implementation "io.ktor:ktor-client-content-negotiation:$ktor_version" {{#gson}} + implementation "io.ktor:ktor-serialization-gson:$ktor_version" implementation "io.ktor:ktor-client-gson:$ktor_version" {{/gson}} {{#jackson}} implementation "io.ktor:ktor-client-jackson:$ktor_version" + implementation "io.ktor:ktor-serialization-jackson:$ktor_version" {{/jackson}} {{/jvm-ktor}} {{#jvm-okhttp3}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache index 5b6c968d38b2..37cb584d8348 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache @@ -12,6 +12,7 @@ import io.ktor.http.ParametersBuilder {{#gson}} import com.google.gson.Gson +import com.google.gson.GsonBuilder {{/gson}} {{#jackson}} import com.fasterxml.jackson.databind.ObjectMapper @@ -22,8 +23,13 @@ import com.fasterxml.jackson.databind.ObjectMapper baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: {{#gson}}Gson{{/gson}}{{#jackson}}ObjectMapper{{/jackson}} = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + {{#gson}} + jsonBlock: GsonBuilder.() -> Unit = ApiClient.JSON_DEFAULT, + {{/gson}} + {{#jackson}} + jsonBlock: ObjectMapper.() -> Unit = ApiClient.JSON_DEFAULT, + {{/jackson}} + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { {{#operation}} /** diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache index b852ac8ec1a1..d8097bbc7960 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache @@ -1,50 +1,69 @@ package {{packageName}}.infrastructure + import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.request.* +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter +import io.ktor.client.request.request +import io.ktor.client.request.setBody import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent -import io.ktor.http.* -import io.ktor.http.content.ByteArrayContent -import io.ktor.http.content.OutgoingContent +import io.ktor.http.HttpHeaders +import io.ktor.http.HttpMethod +import io.ktor.http.Parameters +import io.ktor.http.URLBuilder import io.ktor.http.content.PartData -import kotlin.Unit - +import io.ktor.http.encodeURLQueryComponent +import io.ktor.http.encodedPath +import io.ktor.http.takeFrom {{#gson}} +import io.ktor.serialization.gson.* import com.google.gson.Gson +import com.google.gson.GsonBuilder import java.nio.charset.StandardCharsets {{/gson}} {{#jackson}} +import io.ktor.serialization.jackson.* +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import com.fasterxml.jackson.core.util.DefaultIndenter +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter {{/jackson}} - +import org.openapitools.client.auth.ApiKeyAuth +import org.openapitools.client.auth.Authentication +import org.openapitools.client.auth.HttpBasicAuth +import org.openapitools.client.auth.HttpBearerAuth +import org.openapitools.client.auth.OAuth import {{packageName}}.auth.* {{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: {{#gson}}Gson{{/gson}}{{#jackson}}ObjectMapper{{/jackson}}, + {{#gson}} + jsonBlock: GsonBuilder.() -> Unit = JSON_DEFAULT, + {{/gson}} + {{#jackson}} + jsonBlock: ObjectMapper.() -> Unit = JSON_DEFAULT, + {{/jackson}} ) { - private val serializer: JsonSerializer by lazy { - JsonSerializerImpl(json) - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { + {{#gson}} + gson { jsonBlock() } + {{/gson}} + {{#jackson}} + jackson { jsonBlock() } + {{/jackson}} + } httpClientConfig?.invoke(it) } } @@ -67,9 +86,24 @@ import {{packageName}}.auth.* {{/hasAuthMethods}} {{#nonPublicApi}}internal {{/nonPublicApi}}companion object { - const val BASE_URL = "{{{basePath}}}" - val JSON_DEFAULT = {{#gson}}Gson(){{/gson}}{{#jackson}}ObjectMapper(){{/jackson}} - protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) + const val BASE_URL = "{{{basePath}}}" + {{#gson}} + val JSON_DEFAULT : GsonBuilder.() -> Unit = { + setDateFormat(DateFormat.LONG) + setPrettyPrinting() + } + {{/gson}} + {{#jackson}} + val JSON_DEFAULT: ObjectMapper.() -> Unit = { + configure(SerializationFeature.INDENT_OUTPUT, true) + setDefaultPrettyPrinter(DefaultPrettyPrinter().apply { + indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance) + indentObjectsWith(DefaultIndenter(" ", "\n")) + }) + registerModule(JavaTimeModule()) + } + {{/jackson}} + protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } /** @@ -78,7 +112,7 @@ import {{packageName}}.auth.* * @param username Username */ fun setUsername(username: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.username = username } @@ -89,7 +123,7 @@ import {{packageName}}.auth.* * @param password Password */ fun setPassword(password: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.password = password } @@ -101,7 +135,7 @@ import {{packageName}}.auth.* * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKey(apiKey: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKey = apiKey } @@ -113,7 +147,7 @@ import {{packageName}}.auth.* * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKeyPrefix(apiKeyPrefix: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKeyPrefix = apiKeyPrefix } @@ -124,7 +158,7 @@ import {{packageName}}.auth.* * @param accessToken Access token */ fun setAccessToken(accessToken: String) { - val auth = authentications?.values?.firstOrNull { it is OAuth } as OAuth? + val auth = authentications.values.firstOrNull { it is OAuth } as OAuth? ?: throw Exception("No OAuth2 authentication configured") auth.accessToken = accessToken } @@ -135,7 +169,7 @@ import {{packageName}}.auth.* * @param bearerToken The bearer token. */ fun setBearerToken(bearerToken: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? + val auth = authentications.values.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? ?: throw Exception("No Bearer authentication configured") auth.bearerToken = bearerToken } @@ -148,18 +182,13 @@ import {{packageName}}.auth.* return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -172,8 +201,7 @@ import {{packageName}}.auth.* this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body - + setBody(body) } } @@ -199,13 +227,3 @@ import {{packageName}}.auth.* RequestMethod.OPTIONS -> HttpMethod.Options } } - -{{#gson}}private class JsonSerializerImpl(private val gson: Gson) : JsonSerializer { - override fun write(data: Any, contentType: ContentType): OutgoingContent = - ByteArrayContent(gson.toJson(data).toByteArray(StandardCharsets.UTF_8), contentType) -}{{/gson}} - -{{#jackson}}private class JsonSerializerImpl(private val objectMapper: ObjectMapper) : JsonSerializer { - override fun write(data: Any, contentType: ContentType): OutgoingContent = - ByteArrayContent(objectMapper.writeValueAsBytes(data), contentType) -}{{/jackson}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/HttpResponse.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/HttpResponse.kt.mustache index 12d265674611..87a68f3084e5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/HttpResponse.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/HttpResponse.kt.mustache @@ -1,9 +1,9 @@ package {{packageName}}.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo {{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ import io.ktor.http.isSuccess {{#nonPublicApi}}internal {{/nonPublicApi}}class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } {{#nonPublicApi}}internal {{/nonPublicApi}}class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle index 079c8ae181c2..0c3e6b64c92a 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/build.gradle @@ -32,6 +32,8 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "com.google.code.gson:gson:2.9.0" implementation "io.ktor:ktor-client-core:$ktor_version" + implementation "io.ktor:ktor-client-content-negotiation:$ktor_version" + implementation "io.ktor:ktor-serialization-gson:$ktor_version" implementation "io.ktor:ktor-client-gson:$ktor_version" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 16778dcd2a91..2431082dbd4f 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -30,13 +30,14 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder import com.google.gson.Gson +import com.google.gson.GsonBuilder open class PetApi( baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: Gson = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: GsonBuilder.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Add a new pet to the store diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 4d6c90ef3087..8837368d61b9 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -29,13 +29,14 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder import com.google.gson.Gson +import com.google.gson.GsonBuilder open class StoreApi( baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: Gson = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: GsonBuilder.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Delete purchase order by ID diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index df392223264e..62f5b190a721 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -29,13 +29,14 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder import com.google.gson.Gson +import com.google.gson.GsonBuilder open class UserApi( baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: Gson = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: GsonBuilder.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Create user diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 8a23111a84dc..5105771c7f01 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,45 +1,50 @@ package org.openapitools.client.infrastructure + import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.request.* +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter +import io.ktor.client.request.request +import io.ktor.client.request.setBody import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent -import io.ktor.http.* -import io.ktor.http.content.ByteArrayContent -import io.ktor.http.content.OutgoingContent +import io.ktor.http.HttpHeaders +import io.ktor.http.HttpMethod +import io.ktor.http.Parameters +import io.ktor.http.URLBuilder import io.ktor.http.content.PartData -import kotlin.Unit - +import io.ktor.http.encodeURLQueryComponent +import io.ktor.http.encodedPath +import io.ktor.http.takeFrom +import io.ktor.serialization.gson.* import com.google.gson.Gson +import com.google.gson.GsonBuilder import java.nio.charset.StandardCharsets +import org.openapitools.client.auth.ApiKeyAuth +import org.openapitools.client.auth.Authentication +import org.openapitools.client.auth.HttpBasicAuth +import org.openapitools.client.auth.HttpBearerAuth +import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.* +import java.text.DateFormat open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: Gson, + jsonBlock: GsonBuilder.() -> Unit = JSON_DEFAULT, ) { - private val serializer: JsonSerializer by lazy { - JsonSerializerImpl(json) - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { + gson { jsonBlock() } + } httpClientConfig?.invoke(it) } } @@ -55,9 +60,12 @@ open class ApiClient( } companion object { - const val BASE_URL = "http://petstore.swagger.io/v2" - val JSON_DEFAULT = Gson() - protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) + const val BASE_URL = "http://petstore.swagger.io/v2" + val JSON_DEFAULT : GsonBuilder.() -> Unit = { + setDateFormat(DateFormat.LONG) + setPrettyPrinting() + } + protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } /** @@ -66,7 +74,7 @@ open class ApiClient( * @param username Username */ fun setUsername(username: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.username = username } @@ -77,7 +85,7 @@ open class ApiClient( * @param password Password */ fun setPassword(password: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.password = password } @@ -89,7 +97,7 @@ open class ApiClient( * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKey(apiKey: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKey = apiKey } @@ -101,7 +109,7 @@ open class ApiClient( * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKeyPrefix(apiKeyPrefix: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKeyPrefix = apiKeyPrefix } @@ -112,7 +120,7 @@ open class ApiClient( * @param accessToken Access token */ fun setAccessToken(accessToken: String) { - val auth = authentications?.values?.firstOrNull { it is OAuth } as OAuth? + val auth = authentications.values.firstOrNull { it is OAuth } as OAuth? ?: throw Exception("No OAuth2 authentication configured") auth.accessToken = accessToken } @@ -123,7 +131,7 @@ open class ApiClient( * @param bearerToken The bearer token. */ fun setBearerToken(bearerToken: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? + val auth = authentications.values.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? ?: throw Exception("No Bearer authentication configured") auth.bearerToken = bearerToken } @@ -136,18 +144,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -160,8 +163,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body - + setBody(body) } } @@ -187,10 +189,3 @@ open class ApiClient( RequestMethod.OPTIONS -> HttpMethod.Options } } - -private class JsonSerializerImpl(private val gson: Gson) : JsonSerializer { - override fun write(data: Any, contentType: ContentType): OutgoingContent = - ByteArrayContent(gson.toJson(data).toByteArray(StandardCharsets.UTF_8), contentType) -} - - diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index 61e55bc5b153..4285d605ea62 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle index ad6a6faa2a04..febcd440b1e9 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/build.gradle @@ -34,6 +34,8 @@ dependencies { implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3" implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3" implementation "io.ktor:ktor-client-core:$ktor_version" + implementation "io.ktor:ktor-client-content-negotiation:$ktor_version" implementation "io.ktor:ktor-client-jackson:$ktor_version" + implementation "io.ktor:ktor-serialization-jackson:$ktor_version" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index f1ae54f27451..b34d6bd43156 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -35,8 +35,8 @@ import com.fasterxml.jackson.databind.ObjectMapper baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: ObjectMapper = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: ObjectMapper.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Add a new pet to the store diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 17f13b366c3a..203f27430cce 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -34,8 +34,8 @@ import com.fasterxml.jackson.databind.ObjectMapper baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: ObjectMapper = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: ObjectMapper.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Delete purchase order by ID diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index b65926f5fcb3..8437db661480 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -34,8 +34,8 @@ import com.fasterxml.jackson.databind.ObjectMapper baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: ObjectMapper = ApiClient.JSON_DEFAULT, - ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, json) { + jsonBlock: ObjectMapper.() -> Unit = ApiClient.JSON_DEFAULT, + ) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonBlock) { /** * Create user diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index f492c6e881a9..e21bccb90604 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,44 +1,51 @@ package org.openapitools.client.infrastructure + import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.request.* +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter +import io.ktor.client.request.request +import io.ktor.client.request.setBody import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent -import io.ktor.http.* -import io.ktor.http.content.ByteArrayContent -import io.ktor.http.content.OutgoingContent +import io.ktor.http.HttpHeaders +import io.ktor.http.HttpMethod +import io.ktor.http.Parameters +import io.ktor.http.URLBuilder import io.ktor.http.content.PartData -import kotlin.Unit - +import io.ktor.http.encodeURLQueryComponent +import io.ktor.http.encodedPath +import io.ktor.http.takeFrom +import io.ktor.serialization.jackson.* +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.databind.ObjectMapper - +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import com.fasterxml.jackson.core.util.DefaultIndenter +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter +import org.openapitools.client.auth.ApiKeyAuth +import org.openapitools.client.auth.Authentication +import org.openapitools.client.auth.HttpBasicAuth +import org.openapitools.client.auth.HttpBearerAuth +import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.* open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - json: ObjectMapper, + jsonBlock: ObjectMapper.() -> Unit = JSON_DEFAULT, ) { - private val serializer: JsonSerializer by lazy { - JsonSerializerImpl(json) - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { + jackson { jsonBlock() } + } httpClientConfig?.invoke(it) } } @@ -54,9 +61,16 @@ open class ApiClient( } companion object { - const val BASE_URL = "http://petstore.swagger.io/v2" - val JSON_DEFAULT = ObjectMapper() - protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) + const val BASE_URL = "http://petstore.swagger.io/v2" + val JSON_DEFAULT: ObjectMapper.() -> Unit = { + configure(SerializationFeature.INDENT_OUTPUT, true) + setDefaultPrettyPrinter(DefaultPrettyPrinter().apply { + indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance) + indentObjectsWith(DefaultIndenter(" ", "\n")) + }) + registerModule(JavaTimeModule()) + } + protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } /** @@ -65,7 +79,7 @@ open class ApiClient( * @param username Username */ fun setUsername(username: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.username = username } @@ -76,7 +90,7 @@ open class ApiClient( * @param password Password */ fun setPassword(password: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? + val auth = authentications.values.firstOrNull { it is HttpBasicAuth } as HttpBasicAuth? ?: throw Exception("No HTTP basic authentication configured") auth.password = password } @@ -88,7 +102,7 @@ open class ApiClient( * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKey(apiKey: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName)} as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKey = apiKey } @@ -100,7 +114,7 @@ open class ApiClient( * @param paramName The name of the API key parameter, or null or set the first key. */ fun setApiKeyPrefix(apiKeyPrefix: String, paramName: String? = null) { - val auth = authentications?.values?.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? + val auth = authentications.values.firstOrNull { it is ApiKeyAuth && (paramName == null || paramName == it.paramName) } as ApiKeyAuth? ?: throw Exception("No API key authentication configured") auth.apiKeyPrefix = apiKeyPrefix } @@ -111,7 +125,7 @@ open class ApiClient( * @param accessToken Access token */ fun setAccessToken(accessToken: String) { - val auth = authentications?.values?.firstOrNull { it is OAuth } as OAuth? + val auth = authentications.values.firstOrNull { it is OAuth } as OAuth? ?: throw Exception("No OAuth2 authentication configured") auth.accessToken = accessToken } @@ -122,7 +136,7 @@ open class ApiClient( * @param bearerToken The bearer token. */ fun setBearerToken(bearerToken: String) { - val auth = authentications?.values?.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? + val auth = authentications.values.firstOrNull { it is HttpBearerAuth } as HttpBearerAuth? ?: throw Exception("No Bearer authentication configured") auth.bearerToken = bearerToken } @@ -135,18 +149,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -159,8 +168,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body - + setBody(body) } } @@ -186,10 +194,3 @@ open class ApiClient( RequestMethod.OPTIONS -> HttpMethod.Options } } - - - -private class JsonSerializerImpl(private val objectMapper: ObjectMapper) : JsonSerializer { - override fun write(data: Any, contentType: ContentType): OutgoingContent = - ByteArrayContent(objectMapper.writeValueAsBytes(data), contentType) -} diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index 61e55bc5b153..4285d605ea62 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { From 43ddbd31bc249916c6117ff3b0af5ff873f7b50b Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Fri, 22 Jul 2022 09:32:26 +0200 Subject: [PATCH 05/13] update the ktor client templates and project samples --- .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 5105771c7f01..8d18e1f8f3aa 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -29,9 +29,7 @@ import org.openapitools.client.auth.Authentication import org.openapitools.client.auth.HttpBasicAuth import org.openapitools.client.auth.HttpBearerAuth import org.openapitools.client.auth.OAuth - import org.openapitools.client.auth.* -import java.text.DateFormat open class ApiClient( private val baseUrl: String, From 22715906fae6225040185c5bc5809967f6b54d61 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Fri, 22 Jul 2022 10:26:55 +0200 Subject: [PATCH 06/13] revert multiplatform upgrade --- .../libraries/multiplatform/build.gradle.kts.mustache | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache index 2f6071e32fe5..42826ffff641 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache @@ -8,10 +8,10 @@ plugins { group = "{{groupId}}" version = "{{artifactVersion}}" -val kotlin_version = "1.6.10" -val coroutines_version = "1.6.3" -val serialization_version = "1.3.3" -val ktor_version = "2.0.3" +val kotlin_version = "1.6.0" +val coroutines_version = "1.5.2" +val serialization_version = "1.3.0" +val ktor_version = "1.6.4" repositories { mavenCentral() From 0860308db98d6934f3c0e75157e272e4214bd0ae Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Fri, 22 Jul 2022 13:04:21 +0200 Subject: [PATCH 07/13] update kotlin multiplatform --- .../libraries/multiplatform/api.mustache | 1 - .../multiplatform/build.gradle.kts.mustache | 12 +- .../infrastructure/ApiClient.kt.mustache | 47 +- .../infrastructure/Bytes.kt.mustache | 2 +- .../infrastructure/HttpResponse.kt.mustache | 8 +- .../build.gradle.kts | 8 +- .../build.gradle.kts | 8 +- .../build.gradle.kts | 8 +- .../kotlin-multiplatform/build.gradle.kts | 4 +- .../org/openapitools/client/apis/PetApi.kt | 1 - .../org/openapitools/client/apis/StoreApi.kt | 1 - .../org/openapitools/client/apis/UserApi.kt | 1 - .../client/infrastructure/ApiClient.kt | 47 +- .../client/infrastructure/Bytes.kt | 2 +- .../client/infrastructure/HttpResponse.kt | 8 +- samples/client/petstore/perl/docs/MapTest.md | 18 - .../OpenAPIClient-php/lib/Model/ModelList.php | 401 ------------------ .../python-asyncio/petstore_api/models/dog.py | 131 ------ ...dditionalproperties_can_exist_by_itself.py | 46 -- .../python-experimental/test/test_allof.py | 72 ---- .../test/test_allof_with_base_schema.py | 89 ---- .../test/test_allof_with_one_empty_schema.py | 32 -- .../test_allof_with_the_first_empty_schema.py | 40 -- .../test_allof_with_the_last_empty_schema.py | 40 -- .../test/test_allof_with_two_empty_schemas.py | 32 -- .../python-experimental/test/test_anyof.py | 54 --- .../test/test_anyof_with_base_schema.py | 48 --- .../test/test_anyof_with_one_empty_schema.py | 39 -- .../test/test_array_type_matches_arrays.py | 82 ---- .../test_boolean_type_matches_booleans.py | 105 ----- .../test/test_by_small_number.py | 40 -- .../test_enum_with1_does_not_match_true.py | 47 -- .../test_enum_with_false_does_not_match0.py | 48 --- .../test_enum_with_true_does_not_match1.py | 48 --- .../test/test_hostname_format.py | 69 --- .../test_integer_type_matches_integers.py | 97 ----- .../test/test_ipv6_format.py | 69 --- .../test/test_json_pointer_format.py | 69 --- ...aximum_validation_with_unsigned_integer.py | 54 --- .../test/test_maxproperties_validation.py | 87 ---- .../test/test_minimum_validation.py | 54 --- .../test/test_minitems_validation.py | 60 --- .../test/test_minlength_validation.py | 62 --- .../test/test_minproperties_validation.py | 78 ---- .../test/test_model_not.py | 40 -- ...ted_anyof_to_check_validation_semantics.py | 40 -- .../test/test_not_more_complex_schema.py | 53 --- ..._null_type_matches_only_the_null_object.py | 106 ----- .../test/test_oneof_complex_types.py | 71 ---- .../test/test_oneof_with_base_schema.py | 48 --- .../test/test_oneof_with_empty_schema.py | 40 -- .../test/test_pattern_is_not_anchored.py | 32 -- .../test/test_ref_in_allof.py | 46 -- .../test/test_ref_in_anyof.py | 46 -- .../test/test_ref_in_items.py | 50 --- .../test/test_required_default_validation.py | 33 -- .../test/test_required_with_empty_array.py | 33 -- .../test/test_string_type_matches_strings.py | 96 ----- .../test/test_uniqueitems_false_validation.py | 246 ----------- .../test/test_uri_reference_format.py | 69 --- .../test/test_uri_template_format.py | 69 --- .../app/openapi_server/typing_utils.py | 32 -- 62 files changed, 60 insertions(+), 3359 deletions(-) delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_additionalproperties_can_exist_by_itself.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_base_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_one_empty_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_first_empty_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_last_empty_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_two_empty_schemas.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_base_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_one_empty_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_array_type_matches_arrays.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_boolean_type_matches_booleans.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_by_small_number.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with1_does_not_match_true.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_false_does_not_match0.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_true_does_not_match1.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_hostname_format.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_integer_type_matches_integers.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ipv6_format.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_json_pointer_format.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maximum_validation_with_unsigned_integer.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maxproperties_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minimum_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minitems_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minlength_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minproperties_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_model_not.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_nested_anyof_to_check_validation_semantics.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_not_more_complex_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_null_type_matches_only_the_null_object.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_complex_types.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_base_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_empty_schema.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_pattern_is_not_anchored.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_allof.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_anyof.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_items.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_default_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_with_empty_array.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_string_type_matches_strings.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uniqueitems_false_validation.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_reference_format.py delete mode 100644 samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_template_format.py diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache index be8b31644067..4ee453f29691 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache @@ -8,7 +8,6 @@ import {{packageName}}.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache index 42826ffff641..797279d5d44f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache @@ -8,10 +8,10 @@ plugins { group = "{{groupId}}" version = "{{artifactVersion}}" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() @@ -30,9 +30,11 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") - api("io.ktor:ktor-client-json:$ktor_version") api("io.ktor:ktor-client-serialization:$ktor_version") + api("io.ktor:ktor-client-content-negotiation:$ktor_version") + api("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache index 470c4bc29265..8c67cfa9eaa9 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache @@ -3,9 +3,8 @@ package {{packageName}}.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.features.json.serializer.KotlinxSerializer +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.serialization.kotlinx.json.* import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent @@ -27,19 +26,12 @@ import {{packageName}}.auth.* private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - private val json: Json + private val jsonBlock: Json ) { - private val serializer: JsonSerializer by lazy { - KotlinxSerializer(json).ignoreOutgoingContent() - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { json(jsonBlock) } httpClientConfig?.invoke(it) } } @@ -63,7 +55,11 @@ import {{packageName}}.auth.* {{#nonPublicApi}}internal {{/nonPublicApi}}companion object { const val BASE_URL = "{{{basePath}}}" - val JSON_DEFAULT = Json { ignoreUnknownKeys = true } + val JSON_DEFAULT = Json { + ignoreUnknownKeys = true + prettyPrint = true + isLenient = true + } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } @@ -143,18 +139,13 @@ import {{packageName}}.auth.* return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -167,7 +158,7 @@ import {{packageName}}.auth.* this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body + this.setBody(body) } } @@ -193,14 +184,4 @@ import {{packageName}}.auth.* RequestMethod.POST -> HttpMethod.Post RequestMethod.OPTIONS -> HttpMethod.Options } -} - -// https://github.com/ktorio/ktor/issues/851 -private fun JsonSerializer.ignoreOutgoingContent() = IgnoreOutgoingContentJsonSerializer(this) - -private class IgnoreOutgoingContentJsonSerializer(private val delegate: JsonSerializer) : JsonSerializer by delegate { - override fun write(data: Any): OutgoingContent { - if (data is OutgoingContent) return data - return delegate.write(data) - } -} +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache index 3ade97210cb0..39825fbe388b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache @@ -14,7 +14,7 @@ private fun ByteArray.clearFrom(from: Int) = (from until size).forEach { this[it private fun Int.toBase64(): Char = BASE64_ALPHABET[this] private fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK internal fun ByteArray.encodeBase64(): String = buildPacket { writeFully(this@encodeBase64) }.encodeBase64() -internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { writeStringUtf8(dropLastWhile { it == BASE64_PAD }) }.decodeBase64Bytes().readBytes() +internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { dropLastWhile { it == BASE64_PAD } }.decodeBase64Bytes().readBytes() /** * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes. diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache index 12d265674611..87a68f3084e5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache @@ -1,9 +1,9 @@ package {{packageName}}.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo {{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ import io.ktor.http.isSuccess {{#nonPublicApi}}internal {{/nonPublicApi}}class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } {{#nonPublicApi}}internal {{/nonPublicApi}}class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts index 247e1f08d881..2380844aa924 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.10" -val coroutines_version = "1.6.3" -val serialization_version = "1.3.3" -val ktor_version = "2.0.3" +val kotlin_version = "1.6.0" +val coroutines_version = "1.5.2" +val serialization_version = "1.3.0" +val ktor_version = "1.6.4" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts index 247e1f08d881..2380844aa924 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.10" -val coroutines_version = "1.6.3" -val serialization_version = "1.3.3" -val ktor_version = "2.0.3" +val kotlin_version = "1.6.0" +val coroutines_version = "1.5.2" +val serialization_version = "1.3.0" +val ktor_version = "1.6.4" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts index 247e1f08d881..2380844aa924 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.10" -val coroutines_version = "1.6.3" -val serialization_version = "1.3.3" -val ktor_version = "2.0.3" +val kotlin_version = "1.6.0" +val coroutines_version = "1.5.2" +val serialization_version = "1.3.0" +val ktor_version = "1.6.4" repositories { mavenCentral() diff --git a/samples/client/petstore/kotlin-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts index 247e1f08d881..219d79917c91 100644 --- a/samples/client/petstore/kotlin-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts @@ -30,9 +30,11 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") - api("io.ktor:ktor-client-json:$ktor_version") api("io.ktor:ktor-client-serialization:$ktor_version") + api("io.ktor:ktor-client-content-negotiation:$ktor_version") + api("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") } } 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 index 5bfd90fd04c8..9433e84db8a6 100644 --- 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 @@ -27,7 +27,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* 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 index 1e3de76952bd..4be0e5910a79 100644 --- 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 @@ -26,7 +26,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* 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 index f1c1dc2e5f26..aa1e2250b323 100644 --- 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 @@ -26,7 +26,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* 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 index a6ec2640afcf..aea8c8050526 100644 --- 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 @@ -3,9 +3,8 @@ package org.openapitools.client.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.features.json.serializer.KotlinxSerializer +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.serialization.kotlinx.json.* import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent @@ -27,19 +26,12 @@ open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - private val json: Json + private val jsonBlock: Json ) { - private val serializer: JsonSerializer by lazy { - KotlinxSerializer(json).ignoreOutgoingContent() - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { json(jsonBlock) } httpClientConfig?.invoke(it) } } @@ -56,7 +48,11 @@ open class ApiClient( companion object { const val BASE_URL = "http://petstore.swagger.io/v2" - val JSON_DEFAULT = Json { ignoreUnknownKeys = true } + val JSON_DEFAULT = Json { + ignoreUnknownKeys = true + prettyPrint = true + isLenient = true + } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } @@ -136,18 +132,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -160,7 +151,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body + this.setBody(body) } } @@ -186,14 +177,4 @@ open class ApiClient( RequestMethod.POST -> HttpMethod.Post RequestMethod.OPTIONS -> HttpMethod.Options } -} - -// https://github.com/ktorio/ktor/issues/851 -private fun JsonSerializer.ignoreOutgoingContent() = IgnoreOutgoingContentJsonSerializer(this) - -private class IgnoreOutgoingContentJsonSerializer(private val delegate: JsonSerializer) : JsonSerializer by delegate { - override fun write(data: Any): OutgoingContent { - if (data is OutgoingContent) return data - return delegate.write(data) - } -} +} \ No newline at end of file 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 index 7d30ce18fcf1..0ff85787389a 100644 --- 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 @@ -14,7 +14,7 @@ private fun ByteArray.clearFrom(from: Int) = (from until size).forEach { this[it private fun Int.toBase64(): Char = BASE64_ALPHABET[this] private fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK internal fun ByteArray.encodeBase64(): String = buildPacket { writeFully(this@encodeBase64) }.encodeBase64() -internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { writeStringUtf8(dropLastWhile { it == BASE64_PAD }) }.decodeBase64Bytes().readBytes() +internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { dropLastWhile { it == BASE64_PAD } }.decodeBase64Bytes().readBytes() /** * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes. 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 index 61e55bc5b153..4285d605ea62 100644 --- 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 @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/perl/docs/MapTest.md b/samples/client/petstore/perl/docs/MapTest.md index 9053f3e3db66..e69de29bb2d1 100644 --- a/samples/client/petstore/perl/docs/MapTest.md +++ b/samples/client/petstore/perl/docs/MapTest.md @@ -1,18 +0,0 @@ -# WWW::OpenAPIClient::Object::MapTest - -## Load the model package -```perl -use WWW::OpenAPIClient::Object::MapTest; -``` - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**map_map_of_string** | **HASH[string,HASH[string,string]]** | | [optional] -**map_of_enum_string** | **HASH[string,string]** | | [optional] -**direct_map** | **HASH[string,boolean]** | | [optional] -**indirect_map** | **HASH[string,boolean]** | | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index f921a0ba525a..e69de29bb2d1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -1,401 +0,0 @@ - - */ -class ModelList implements ModelInterface, ArrayAccess, \JsonSerializable -{ - public const DISCRIMINATOR = null; - - /** - * The original name of the model. - * - * @var string - */ - protected static $openAPIModelName = 'List'; - - /** - * Array of property to type mappings. Used for (de)serialization - * - * @var string[] - */ - protected static $openAPITypes = [ - '_123_list' => 'string' - ]; - - /** - * Array of property to format mappings. Used for (de)serialization - * - * @var string[] - * @phpstan-var array - * @psalm-var array - */ - protected static $openAPIFormats = [ - '_123_list' => null - ]; - - /** - * Array of nullable properties. Used for (de)serialization - * - * @var boolean[] - */ - protected static array $openAPINullables = [ - '_123_list' => false - ]; - - /** - * If a nullable field gets set to null, insert it here - * - * @var boolean[] - */ - protected array $openAPINullablesSetToNull = []; - - /** - * Array of property to type mappings. Used for (de)serialization - * - * @return array - */ - public static function openAPITypes() - { - return self::$openAPITypes; - } - - /** - * Array of property to format mappings. Used for (de)serialization - * - * @return array - */ - public static function openAPIFormats() - { - return self::$openAPIFormats; - } - - /** - * Array of nullable properties - * - * @return array - */ - protected static function openAPINullables(): array - { - return self::$openAPINullables; - } - - /** - * Array of nullable field names deliberately set to null - * - * @return boolean[] - */ - private function getOpenAPINullablesSetToNull(): array - { - return $this->openAPINullablesSetToNull; - } - - /** - * Checks if a property is nullable - * - * @param string $property - * @return bool - */ - public static function isNullable(string $property): bool - { - return self::openAPINullables()[$property] ?? false; - } - - /** - * Checks if a nullable property is set to null. - * - * @param string $property - * @return bool - */ - public function isNullableSetToNull(string $property): bool - { - return in_array($property, $this->getOpenAPINullablesSetToNull(), true); - } - - /** - * Array of attributes where the key is the local name, - * and the value is the original name - * - * @var string[] - */ - protected static $attributeMap = [ - '_123_list' => '123-list' - ]; - - /** - * Array of attributes to setter functions (for deserialization of responses) - * - * @var string[] - */ - protected static $setters = [ - '_123_list' => 'set123List' - ]; - - /** - * Array of attributes to getter functions (for serialization of requests) - * - * @var string[] - */ - protected static $getters = [ - '_123_list' => 'get123List' - ]; - - /** - * Array of attributes where the key is the local name, - * and the value is the original name - * - * @return array - */ - public static function attributeMap() - { - return self::$attributeMap; - } - - /** - * Array of attributes to setter functions (for deserialization of responses) - * - * @return array - */ - public static function setters() - { - return self::$setters; - } - - /** - * Array of attributes to getter functions (for serialization of requests) - * - * @return array - */ - public static function getters() - { - return self::$getters; - } - - /** - * The original name of the model. - * - * @return string - */ - public function getModelName() - { - return self::$openAPIModelName; - } - - - /** - * Associative array for storing property values - * - * @var mixed[] - */ - protected $container = []; - - /** - * Constructor - * - * @param mixed[] $data Associated array of property values - * initializing the model - */ - public function __construct(array $data = null) - { - $this->setIfExists('_123_list', $data ?? [], null); - } - - /** - * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName - * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the - * $this->openAPINullablesSetToNull array - * - * @param string $variableName - * @param array $fields - * @param mixed $defaultValue - */ - private function setIfExists(string $variableName, array $fields, $defaultValue): void - { - if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { - $this->openAPINullablesSetToNull[] = $variableName; - } - - $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; - } - - /** - * Show all the invalid properties with reasons. - * - * @return array invalid properties with reasons - */ - public function listInvalidProperties() - { - $invalidProperties = []; - - return $invalidProperties; - } - - /** - * Validate all the properties in the model - * return true if all passed - * - * @return bool True if all properties are valid - */ - public function valid() - { - return count($this->listInvalidProperties()) === 0; - } - - - /** - * Gets _123_list - * - * @return string|null - */ - public function get123List() - { - return $this->container['_123_list']; - } - - /** - * Sets _123_list - * - * @param string|null $_123_list _123_list - * - * @return self - */ - public function set123List($_123_list) - { - - if (is_null($_123_list)) { - throw new \InvalidArgumentException('non-nullable _123_list cannot be null'); - } - - $this->container['_123_list'] = $_123_list; - - return $this; - } - /** - * Returns true if offset exists. False otherwise. - * - * @param integer $offset Offset - * - * @return boolean - */ - public function offsetExists($offset): bool - { - return isset($this->container[$offset]); - } - - /** - * Gets offset. - * - * @param integer $offset Offset - * - * @return mixed|null - */ - #[\ReturnTypeWillChange] - public function offsetGet($offset) - { - return $this->container[$offset] ?? null; - } - - /** - * Sets value based on offset. - * - * @param int|null $offset Offset - * @param mixed $value Value to be set - * - * @return void - */ - public function offsetSet($offset, $value): void - { - if (is_null($offset)) { - $this->container[] = $value; - } else { - $this->container[$offset] = $value; - } - } - - /** - * Unsets offset. - * - * @param integer $offset Offset - * - * @return void - */ - public function offsetUnset($offset): void - { - unset($this->container[$offset]); - } - - /** - * Serializes the object to a value that can be serialized natively by json_encode(). - * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php - * - * @return mixed Returns data which can be serialized by json_encode(), which is a value - * of any type other than a resource. - */ - #[\ReturnTypeWillChange] - public function jsonSerialize() - { - return ObjectSerializer::sanitizeForSerialization($this); - } - - /** - * Gets the string presentation of the object - * - * @return string - */ - public function __toString() - { - return json_encode( - ObjectSerializer::sanitizeForSerialization($this), - JSON_PRETTY_PRINT - ); - } - - /** - * Gets a header-safe presentation of the object - * - * @return string - */ - public function toHeaderValue() - { - return json_encode(ObjectSerializer::sanitizeForSerialization($this)); - } -} - - diff --git a/samples/client/petstore/python-asyncio/petstore_api/models/dog.py b/samples/client/petstore/python-asyncio/petstore_api/models/dog.py index 61acd35cdfe2..e69de29bb2d1 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/models/dog.py +++ b/samples/client/petstore/python-asyncio/petstore_api/models/dog.py @@ -1,131 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501 - - The version of the OpenAPI document: 1.0.0 - Generated by: https://openapi-generator.tech -""" - - -try: - from inspect import getfullargspec -except ImportError: - from inspect import getargspec as getfullargspec -import pprint -import re # noqa: F401 -import six - -from petstore_api.configuration import Configuration - - -class Dog(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'breed': 'str' - } - - attribute_map = { - 'breed': 'breed' - } - - def __init__(self, breed=None, local_vars_configuration=None): # noqa: E501 - """Dog - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration.get_default_copy() - self.local_vars_configuration = local_vars_configuration - - self._breed = None - self.discriminator = None - - if breed is not None: - self.breed = breed - - @property - def breed(self): - """Gets the breed of this Dog. # noqa: E501 - - - :return: The breed of this Dog. # noqa: E501 - :rtype: str - """ - return self._breed - - @breed.setter - def breed(self, breed): - """Sets the breed of this Dog. - - - :param breed: The breed of this Dog. # noqa: E501 - :type breed: str - """ - - self._breed = breed - - def to_dict(self, serialize=False): - """Returns the model properties as a dict""" - result = {} - - def convert(x): - if hasattr(x, "to_dict"): - args = getfullargspec(x.to_dict).args - if len(args) == 1: - return x.to_dict() - else: - return x.to_dict(serialize) - else: - return x - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - attr = self.attribute_map.get(attr, attr) if serialize else attr - if isinstance(value, list): - result[attr] = list(map( - lambda x: convert(x), - value - )) - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], convert(item[1])), - value.items() - )) - else: - result[attr] = convert(value) - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, Dog): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, Dog): - return True - - return self.to_dict() != other.to_dict() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_additionalproperties_can_exist_by_itself.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_additionalproperties_can_exist_by_itself.py deleted file mode 100644 index 3a6473f23ba0..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_additionalproperties_can_exist_by_itself.py +++ /dev/null @@ -1,46 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.additionalproperties_can_exist_by_itself import AdditionalpropertiesCanExistByItself -from unit_test_api import configuration - - -class TestAdditionalpropertiesCanExistByItself(unittest.TestCase): - """AdditionalpropertiesCanExistByItself unit test stubs""" - _configuration = configuration.Configuration() - - def test_an_additional_invalid_property_is_invalid_fails(self): - # an additional invalid property is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AdditionalpropertiesCanExistByItself._from_openapi_data( - { - "foo": - 1, - }, - _configuration=self._configuration - ) - - def test_an_additional_valid_property_is_valid_passes(self): - # an additional valid property is valid - AdditionalpropertiesCanExistByItself._from_openapi_data( - { - "foo": - True, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof.py deleted file mode 100644 index 9337a2edd4cf..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof.py +++ /dev/null @@ -1,72 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof import Allof -from unit_test_api import configuration - - -class TestAllof(unittest.TestCase): - """Allof unit test stubs""" - _configuration = configuration.Configuration() - - def test_allof_passes(self): - # allOf - Allof._from_openapi_data( - { - "foo": - "baz", - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_mismatch_first_fails(self): - # mismatch first - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - Allof._from_openapi_data( - { - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_mismatch_second_fails(self): - # mismatch second - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - Allof._from_openapi_data( - { - "foo": - "baz", - }, - _configuration=self._configuration - ) - - def test_wrong_type_fails(self): - # wrong type - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - Allof._from_openapi_data( - { - "foo": - "baz", - "bar": - "quux", - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_base_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_base_schema.py deleted file mode 100644 index f9922161cb01..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_base_schema.py +++ /dev/null @@ -1,89 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof_with_base_schema import AllofWithBaseSchema -from unit_test_api import configuration - - -class TestAllofWithBaseSchema(unittest.TestCase): - """AllofWithBaseSchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_valid_passes(self): - # valid - AllofWithBaseSchema._from_openapi_data( - { - "foo": - "quux", - "bar": - 2, - "baz": - None, - }, - _configuration=self._configuration - ) - - def test_mismatch_first_allof_fails(self): - # mismatch first allOf - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithBaseSchema._from_openapi_data( - { - "bar": - 2, - "baz": - None, - }, - _configuration=self._configuration - ) - - def test_mismatch_base_schema_fails(self): - # mismatch base schema - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithBaseSchema._from_openapi_data( - { - "foo": - "quux", - "baz": - None, - }, - _configuration=self._configuration - ) - - def test_mismatch_both_fails(self): - # mismatch both - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithBaseSchema._from_openapi_data( - { - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_mismatch_second_allof_fails(self): - # mismatch second allOf - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithBaseSchema._from_openapi_data( - { - "foo": - "quux", - "bar": - 2, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_one_empty_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_one_empty_schema.py deleted file mode 100644 index ac60d408568f..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_one_empty_schema.py +++ /dev/null @@ -1,32 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof_with_one_empty_schema import AllofWithOneEmptySchema -from unit_test_api import configuration - - -class TestAllofWithOneEmptySchema(unittest.TestCase): - """AllofWithOneEmptySchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_any_data_is_valid_passes(self): - # any data is valid - AllofWithOneEmptySchema._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_first_empty_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_first_empty_schema.py deleted file mode 100644 index 5dacdfb9797b..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_first_empty_schema.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof_with_the_first_empty_schema import AllofWithTheFirstEmptySchema -from unit_test_api import configuration - - -class TestAllofWithTheFirstEmptySchema(unittest.TestCase): - """AllofWithTheFirstEmptySchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_string_is_invalid_fails(self): - # string is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithTheFirstEmptySchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_number_is_valid_passes(self): - # number is valid - AllofWithTheFirstEmptySchema._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_last_empty_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_last_empty_schema.py deleted file mode 100644 index bd425c3147ca..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_the_last_empty_schema.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof_with_the_last_empty_schema import AllofWithTheLastEmptySchema -from unit_test_api import configuration - - -class TestAllofWithTheLastEmptySchema(unittest.TestCase): - """AllofWithTheLastEmptySchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_string_is_invalid_fails(self): - # string is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AllofWithTheLastEmptySchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_number_is_valid_passes(self): - # number is valid - AllofWithTheLastEmptySchema._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_two_empty_schemas.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_two_empty_schemas.py deleted file mode 100644 index 45356cece7b2..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_allof_with_two_empty_schemas.py +++ /dev/null @@ -1,32 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.allof_with_two_empty_schemas import AllofWithTwoEmptySchemas -from unit_test_api import configuration - - -class TestAllofWithTwoEmptySchemas(unittest.TestCase): - """AllofWithTwoEmptySchemas unit test stubs""" - _configuration = configuration.Configuration() - - def test_any_data_is_valid_passes(self): - # any data is valid - AllofWithTwoEmptySchemas._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof.py deleted file mode 100644 index 197c3449a9e4..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof.py +++ /dev/null @@ -1,54 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.anyof import Anyof -from unit_test_api import configuration - - -class TestAnyof(unittest.TestCase): - """Anyof unit test stubs""" - _configuration = configuration.Configuration() - - def test_second_anyof_valid_passes(self): - # second anyOf valid - Anyof._from_openapi_data( - 2.5, - _configuration=self._configuration - ) - - def test_neither_anyof_valid_fails(self): - # neither anyOf valid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - Anyof._from_openapi_data( - 1.5, - _configuration=self._configuration - ) - - def test_both_anyof_valid_passes(self): - # both anyOf valid - Anyof._from_openapi_data( - 3, - _configuration=self._configuration - ) - - def test_first_anyof_valid_passes(self): - # first anyOf valid - Anyof._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_base_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_base_schema.py deleted file mode 100644 index 96e03720d645..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_base_schema.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.anyof_with_base_schema import AnyofWithBaseSchema -from unit_test_api import configuration - - -class TestAnyofWithBaseSchema(unittest.TestCase): - """AnyofWithBaseSchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_one_anyof_valid_passes(self): - # one anyOf valid - AnyofWithBaseSchema._from_openapi_data( - "foobar", - _configuration=self._configuration - ) - - def test_both_anyof_invalid_fails(self): - # both anyOf invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AnyofWithBaseSchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_mismatch_base_schema_fails(self): - # mismatch base schema - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - AnyofWithBaseSchema._from_openapi_data( - 3, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_one_empty_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_one_empty_schema.py deleted file mode 100644 index dcb2c0ea80a5..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_anyof_with_one_empty_schema.py +++ /dev/null @@ -1,39 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.anyof_with_one_empty_schema import AnyofWithOneEmptySchema -from unit_test_api import configuration - - -class TestAnyofWithOneEmptySchema(unittest.TestCase): - """AnyofWithOneEmptySchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_string_is_valid_passes(self): - # string is valid - AnyofWithOneEmptySchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_number_is_valid_passes(self): - # number is valid - AnyofWithOneEmptySchema._from_openapi_data( - 123, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_array_type_matches_arrays.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_array_type_matches_arrays.py deleted file mode 100644 index b8bc156e18b3..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_array_type_matches_arrays.py +++ /dev/null @@ -1,82 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.array_type_matches_arrays import ArrayTypeMatchesArrays -from unit_test_api import configuration - - -class TestArrayTypeMatchesArrays(unittest.TestCase): - """ArrayTypeMatchesArrays unit test stubs""" - _configuration = configuration.Configuration() - - def test_a_float_is_not_an_array_fails(self): - # a float is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_a_boolean_is_not_an_array_fails(self): - # a boolean is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_null_is_not_an_array_fails(self): - # null is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - None, - _configuration=self._configuration - ) - - def test_an_object_is_not_an_array_fails(self): - # an object is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_a_string_is_not_an_array_fails(self): - # a string is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_an_array_is_an_array_passes(self): - # an array is an array - ArrayTypeMatchesArrays._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_an_integer_is_not_an_array_fails(self): - # an integer is not an array - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ArrayTypeMatchesArrays._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_boolean_type_matches_booleans.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_boolean_type_matches_booleans.py deleted file mode 100644 index 3ffb73ed957a..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_boolean_type_matches_booleans.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.boolean_type_matches_booleans import BooleanTypeMatchesBooleans -from unit_test_api import configuration - - -class TestBooleanTypeMatchesBooleans(unittest.TestCase): - """BooleanTypeMatchesBooleans unit test stubs""" - _configuration = configuration.Configuration() - - def test_an_empty_string_is_not_a_boolean_fails(self): - # an empty string is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - "", - _configuration=self._configuration - ) - - def test_a_float_is_not_a_boolean_fails(self): - # a float is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_null_is_not_a_boolean_fails(self): - # null is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - None, - _configuration=self._configuration - ) - - def test_zero_is_not_a_boolean_fails(self): - # zero is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - 0, - _configuration=self._configuration - ) - - def test_an_array_is_not_a_boolean_fails(self): - # an array is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_a_string_is_not_a_boolean_fails(self): - # a string is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_false_is_a_boolean_passes(self): - # false is a boolean - BooleanTypeMatchesBooleans._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_an_integer_is_not_a_boolean_fails(self): - # an integer is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_true_is_a_boolean_passes(self): - # true is a boolean - BooleanTypeMatchesBooleans._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_an_object_is_not_a_boolean_fails(self): - # an object is not a boolean - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BooleanTypeMatchesBooleans._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_by_small_number.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_by_small_number.py deleted file mode 100644 index cc683feebe2b..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_by_small_number.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.by_small_number import BySmallNumber -from unit_test_api import configuration - - -class TestBySmallNumber(unittest.TestCase): - """BySmallNumber unit test stubs""" - _configuration = configuration.Configuration() - - def test_000751_is_not_multiple_of00001_fails(self): - # 0.00751 is not multiple of 0.0001 - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - BySmallNumber._from_openapi_data( - 0.00751, - _configuration=self._configuration - ) - - def test_00075_is_multiple_of00001_passes(self): - # 0.0075 is multiple of 0.0001 - BySmallNumber._from_openapi_data( - 0.0075, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with1_does_not_match_true.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with1_does_not_match_true.py deleted file mode 100644 index 8b4981807637..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with1_does_not_match_true.py +++ /dev/null @@ -1,47 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.enum_with1_does_not_match_true import EnumWith1DoesNotMatchTrue -from unit_test_api import configuration - - -class TestEnumWith1DoesNotMatchTrue(unittest.TestCase): - """EnumWith1DoesNotMatchTrue unit test stubs""" - _configuration = configuration.Configuration() - - def test_true_is_invalid_fails(self): - # true is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - EnumWith1DoesNotMatchTrue._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_integer_one_is_valid_passes(self): - # integer one is valid - EnumWith1DoesNotMatchTrue._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_float_one_is_valid_passes(self): - # float one is valid - EnumWith1DoesNotMatchTrue._from_openapi_data( - 1.0, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_false_does_not_match0.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_false_does_not_match0.py deleted file mode 100644 index c62d5f790918..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_false_does_not_match0.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.enum_with_false_does_not_match0 import EnumWithFalseDoesNotMatch0 -from unit_test_api import configuration - - -class TestEnumWithFalseDoesNotMatch0(unittest.TestCase): - """EnumWithFalseDoesNotMatch0 unit test stubs""" - _configuration = configuration.Configuration() - - def test_false_is_valid_passes(self): - # false is valid - EnumWithFalseDoesNotMatch0._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_float_zero_is_invalid_fails(self): - # float zero is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - EnumWithFalseDoesNotMatch0._from_openapi_data( - 0.0, - _configuration=self._configuration - ) - - def test_integer_zero_is_invalid_fails(self): - # integer zero is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - EnumWithFalseDoesNotMatch0._from_openapi_data( - 0, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_true_does_not_match1.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_true_does_not_match1.py deleted file mode 100644 index 9339856f4f5a..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_enum_with_true_does_not_match1.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.enum_with_true_does_not_match1 import EnumWithTrueDoesNotMatch1 -from unit_test_api import configuration - - -class TestEnumWithTrueDoesNotMatch1(unittest.TestCase): - """EnumWithTrueDoesNotMatch1 unit test stubs""" - _configuration = configuration.Configuration() - - def test_float_one_is_invalid_fails(self): - # float one is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - EnumWithTrueDoesNotMatch1._from_openapi_data( - 1.0, - _configuration=self._configuration - ) - - def test_true_is_valid_passes(self): - # true is valid - EnumWithTrueDoesNotMatch1._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_integer_one_is_invalid_fails(self): - # integer one is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - EnumWithTrueDoesNotMatch1._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_hostname_format.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_hostname_format.py deleted file mode 100644 index 32a6f0d003ea..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_hostname_format.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.hostname_format import HostnameFormat -from unit_test_api import configuration - - -class TestHostnameFormat(unittest.TestCase): - """HostnameFormat unit test stubs""" - _configuration = configuration.Configuration() - - def test_all_string_formats_ignore_objects_passes(self): - # all string formats ignore objects - HostnameFormat._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_booleans_passes(self): - # all string formats ignore booleans - HostnameFormat._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_integers_passes(self): - # all string formats ignore integers - HostnameFormat._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_floats_passes(self): - # all string formats ignore floats - HostnameFormat._from_openapi_data( - 13.7, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_arrays_passes(self): - # all string formats ignore arrays - HostnameFormat._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_nulls_passes(self): - # all string formats ignore nulls - HostnameFormat._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_integer_type_matches_integers.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_integer_type_matches_integers.py deleted file mode 100644 index ecf83a0586c2..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_integer_type_matches_integers.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.integer_type_matches_integers import IntegerTypeMatchesIntegers -from unit_test_api import configuration - - -class TestIntegerTypeMatchesIntegers(unittest.TestCase): - """IntegerTypeMatchesIntegers unit test stubs""" - _configuration = configuration.Configuration() - - def test_an_object_is_not_an_integer_fails(self): - # an object is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_a_string_is_not_an_integer_fails(self): - # a string is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_null_is_not_an_integer_fails(self): - # null is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - None, - _configuration=self._configuration - ) - - def test_a_float_with_zero_fractional_part_is_an_integer_passes(self): - # a float with zero fractional part is an integer - IntegerTypeMatchesIntegers._from_openapi_data( - 1.0, - _configuration=self._configuration - ) - - def test_a_float_is_not_an_integer_fails(self): - # a float is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_a_boolean_is_not_an_integer_fails(self): - # a boolean is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_an_integer_is_an_integer_passes(self): - # an integer is an integer - IntegerTypeMatchesIntegers._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_a_string_is_still_not_an_integer_even_if_it_looks_like_one_fails(self): - # a string is still not an integer, even if it looks like one - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - "1", - _configuration=self._configuration - ) - - def test_an_array_is_not_an_integer_fails(self): - # an array is not an integer - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - IntegerTypeMatchesIntegers._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ipv6_format.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ipv6_format.py deleted file mode 100644 index e9e10a489057..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ipv6_format.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.ipv6_format import Ipv6Format -from unit_test_api import configuration - - -class TestIpv6Format(unittest.TestCase): - """Ipv6Format unit test stubs""" - _configuration = configuration.Configuration() - - def test_all_string_formats_ignore_objects_passes(self): - # all string formats ignore objects - Ipv6Format._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_booleans_passes(self): - # all string formats ignore booleans - Ipv6Format._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_integers_passes(self): - # all string formats ignore integers - Ipv6Format._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_floats_passes(self): - # all string formats ignore floats - Ipv6Format._from_openapi_data( - 13.7, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_arrays_passes(self): - # all string formats ignore arrays - Ipv6Format._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_nulls_passes(self): - # all string formats ignore nulls - Ipv6Format._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_json_pointer_format.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_json_pointer_format.py deleted file mode 100644 index f20c6aff949b..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_json_pointer_format.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.json_pointer_format import JsonPointerFormat -from unit_test_api import configuration - - -class TestJsonPointerFormat(unittest.TestCase): - """JsonPointerFormat unit test stubs""" - _configuration = configuration.Configuration() - - def test_all_string_formats_ignore_objects_passes(self): - # all string formats ignore objects - JsonPointerFormat._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_booleans_passes(self): - # all string formats ignore booleans - JsonPointerFormat._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_integers_passes(self): - # all string formats ignore integers - JsonPointerFormat._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_floats_passes(self): - # all string formats ignore floats - JsonPointerFormat._from_openapi_data( - 13.7, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_arrays_passes(self): - # all string formats ignore arrays - JsonPointerFormat._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_nulls_passes(self): - # all string formats ignore nulls - JsonPointerFormat._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maximum_validation_with_unsigned_integer.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maximum_validation_with_unsigned_integer.py deleted file mode 100644 index 4bc8a4f83722..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maximum_validation_with_unsigned_integer.py +++ /dev/null @@ -1,54 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.maximum_validation_with_unsigned_integer import MaximumValidationWithUnsignedInteger -from unit_test_api import configuration - - -class TestMaximumValidationWithUnsignedInteger(unittest.TestCase): - """MaximumValidationWithUnsignedInteger unit test stubs""" - _configuration = configuration.Configuration() - - def test_below_the_maximum_is_invalid_passes(self): - # below the maximum is invalid - MaximumValidationWithUnsignedInteger._from_openapi_data( - 299.97, - _configuration=self._configuration - ) - - def test_above_the_maximum_is_invalid_fails(self): - # above the maximum is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MaximumValidationWithUnsignedInteger._from_openapi_data( - 300.5, - _configuration=self._configuration - ) - - def test_boundary_point_integer_is_valid_passes(self): - # boundary point integer is valid - MaximumValidationWithUnsignedInteger._from_openapi_data( - 300, - _configuration=self._configuration - ) - - def test_boundary_point_float_is_valid_passes(self): - # boundary point float is valid - MaximumValidationWithUnsignedInteger._from_openapi_data( - 300.0, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maxproperties_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maxproperties_validation.py deleted file mode 100644 index cd87cbfc645a..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_maxproperties_validation.py +++ /dev/null @@ -1,87 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.maxproperties_validation import MaxpropertiesValidation -from unit_test_api import configuration - - -class TestMaxpropertiesValidation(unittest.TestCase): - """MaxpropertiesValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_too_long_is_invalid_fails(self): - # too long is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MaxpropertiesValidation._from_openapi_data( - { - "foo": - 1, - "bar": - 2, - "baz": - 3, - }, - _configuration=self._configuration - ) - - def test_ignores_arrays_passes(self): - # ignores arrays - MaxpropertiesValidation._from_openapi_data( - [ - 1, - 2, - 3, - ], - _configuration=self._configuration - ) - - def test_ignores_other_non_objects_passes(self): - # ignores other non-objects - MaxpropertiesValidation._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_ignores_strings_passes(self): - # ignores strings - MaxpropertiesValidation._from_openapi_data( - "foobar", - _configuration=self._configuration - ) - - def test_shorter_is_valid_passes(self): - # shorter is valid - MaxpropertiesValidation._from_openapi_data( - { - "foo": - 1, - }, - _configuration=self._configuration - ) - - def test_exact_length_is_valid_passes(self): - # exact length is valid - MaxpropertiesValidation._from_openapi_data( - { - "foo": - 1, - "bar": - 2, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minimum_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minimum_validation.py deleted file mode 100644 index d72abd6e1f8b..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minimum_validation.py +++ /dev/null @@ -1,54 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.minimum_validation import MinimumValidation -from unit_test_api import configuration - - -class TestMinimumValidation(unittest.TestCase): - """MinimumValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_boundary_point_is_valid_passes(self): - # boundary point is valid - MinimumValidation._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_below_the_minimum_is_invalid_fails(self): - # below the minimum is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MinimumValidation._from_openapi_data( - 0.6, - _configuration=self._configuration - ) - - def test_above_the_minimum_is_valid_passes(self): - # above the minimum is valid - MinimumValidation._from_openapi_data( - 2.6, - _configuration=self._configuration - ) - - def test_ignores_non_numbers_passes(self): - # ignores non-numbers - MinimumValidation._from_openapi_data( - "x", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minitems_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minitems_validation.py deleted file mode 100644 index bca2643fcc8c..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minitems_validation.py +++ /dev/null @@ -1,60 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.minitems_validation import MinitemsValidation -from unit_test_api import configuration - - -class TestMinitemsValidation(unittest.TestCase): - """MinitemsValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_too_short_is_invalid_fails(self): - # too short is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MinitemsValidation._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_ignores_non_arrays_passes(self): - # ignores non-arrays - MinitemsValidation._from_openapi_data( - "", - _configuration=self._configuration - ) - - def test_longer_is_valid_passes(self): - # longer is valid - MinitemsValidation._from_openapi_data( - [ - 1, - 2, - ], - _configuration=self._configuration - ) - - def test_exact_length_is_valid_passes(self): - # exact length is valid - MinitemsValidation._from_openapi_data( - [ - 1, - ], - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minlength_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minlength_validation.py deleted file mode 100644 index 515b2958eb89..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minlength_validation.py +++ /dev/null @@ -1,62 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.minlength_validation import MinlengthValidation -from unit_test_api import configuration - - -class TestMinlengthValidation(unittest.TestCase): - """MinlengthValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_too_short_is_invalid_fails(self): - # too short is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MinlengthValidation._from_openapi_data( - "f", - _configuration=self._configuration - ) - - def test_one_supplementary_unicode_code_point_is_not_long_enough_fails(self): - # one supplementary Unicode code point is not long enough - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MinlengthValidation._from_openapi_data( - "💩", - _configuration=self._configuration - ) - - def test_longer_is_valid_passes(self): - # longer is valid - MinlengthValidation._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_ignores_non_strings_passes(self): - # ignores non-strings - MinlengthValidation._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_exact_length_is_valid_passes(self): - # exact length is valid - MinlengthValidation._from_openapi_data( - "fo", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minproperties_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minproperties_validation.py deleted file mode 100644 index b8202eb34654..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_minproperties_validation.py +++ /dev/null @@ -1,78 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.minproperties_validation import MinpropertiesValidation -from unit_test_api import configuration - - -class TestMinpropertiesValidation(unittest.TestCase): - """MinpropertiesValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_ignores_arrays_passes(self): - # ignores arrays - MinpropertiesValidation._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_ignores_other_non_objects_passes(self): - # ignores other non-objects - MinpropertiesValidation._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_too_short_is_invalid_fails(self): - # too short is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - MinpropertiesValidation._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_ignores_strings_passes(self): - # ignores strings - MinpropertiesValidation._from_openapi_data( - "", - _configuration=self._configuration - ) - - def test_longer_is_valid_passes(self): - # longer is valid - MinpropertiesValidation._from_openapi_data( - { - "foo": - 1, - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_exact_length_is_valid_passes(self): - # exact length is valid - MinpropertiesValidation._from_openapi_data( - { - "foo": - 1, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_model_not.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_model_not.py deleted file mode 100644 index 7bc1095617d1..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_model_not.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.model_not import ModelNot -from unit_test_api import configuration - - -class TestModelNot(unittest.TestCase): - """ModelNot unit test stubs""" - _configuration = configuration.Configuration() - - def test_allowed_passes(self): - # allowed - ModelNot._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_disallowed_fails(self): - # disallowed - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - ModelNot._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_nested_anyof_to_check_validation_semantics.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_nested_anyof_to_check_validation_semantics.py deleted file mode 100644 index 9790a71c84e4..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_nested_anyof_to_check_validation_semantics.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.nested_anyof_to_check_validation_semantics import NestedAnyofToCheckValidationSemantics -from unit_test_api import configuration - - -class TestNestedAnyofToCheckValidationSemantics(unittest.TestCase): - """NestedAnyofToCheckValidationSemantics unit test stubs""" - _configuration = configuration.Configuration() - - def test_anything_non_null_is_invalid_fails(self): - # anything non-null is invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NestedAnyofToCheckValidationSemantics._from_openapi_data( - 123, - _configuration=self._configuration - ) - - def test_null_is_valid_passes(self): - # null is valid - NestedAnyofToCheckValidationSemantics._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_not_more_complex_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_not_more_complex_schema.py deleted file mode 100644 index b7ab21dadd42..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_not_more_complex_schema.py +++ /dev/null @@ -1,53 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.not_more_complex_schema import NotMoreComplexSchema -from unit_test_api import configuration - - -class TestNotMoreComplexSchema(unittest.TestCase): - """NotMoreComplexSchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_other_match_passes(self): - # other match - NotMoreComplexSchema._from_openapi_data( - { - "foo": - 1, - }, - _configuration=self._configuration - ) - - def test_mismatch_fails(self): - # mismatch - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NotMoreComplexSchema._from_openapi_data( - { - "foo": - "bar", - }, - _configuration=self._configuration - ) - - def test_match_passes(self): - # match - NotMoreComplexSchema._from_openapi_data( - 1, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_null_type_matches_only_the_null_object.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_null_type_matches_only_the_null_object.py deleted file mode 100644 index 0057f89b2b1c..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_null_type_matches_only_the_null_object.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.null_type_matches_only_the_null_object import NullTypeMatchesOnlyTheNullObject -from unit_test_api import configuration - - -class TestNullTypeMatchesOnlyTheNullObject(unittest.TestCase): - """NullTypeMatchesOnlyTheNullObject unit test stubs""" - _configuration = configuration.Configuration() - - def test_a_float_is_not_null_fails(self): - # a float is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_an_object_is_not_null_fails(self): - # an object is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_false_is_not_null_fails(self): - # false is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_an_integer_is_not_null_fails(self): - # an integer is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_true_is_not_null_fails(self): - # true is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_zero_is_not_null_fails(self): - # zero is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - 0, - _configuration=self._configuration - ) - - def test_an_empty_string_is_not_null_fails(self): - # an empty string is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - "", - _configuration=self._configuration - ) - - def test_null_is_null_passes(self): - # null is null - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - None, - _configuration=self._configuration - ) - - def test_an_array_is_not_null_fails(self): - # an array is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_a_string_is_not_null_fails(self): - # a string is not null - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - NullTypeMatchesOnlyTheNullObject._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_complex_types.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_complex_types.py deleted file mode 100644 index 16e639618c3b..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_complex_types.py +++ /dev/null @@ -1,71 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.oneof_complex_types import OneofComplexTypes -from unit_test_api import configuration - - -class TestOneofComplexTypes(unittest.TestCase): - """OneofComplexTypes unit test stubs""" - _configuration = configuration.Configuration() - - def test_first_oneof_valid_complex_passes(self): - # first oneOf valid (complex) - OneofComplexTypes._from_openapi_data( - { - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_neither_oneof_valid_complex_fails(self): - # neither oneOf valid (complex) - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - OneofComplexTypes._from_openapi_data( - { - "foo": - 2, - "bar": - "quux", - }, - _configuration=self._configuration - ) - - def test_both_oneof_valid_complex_fails(self): - # both oneOf valid (complex) - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - OneofComplexTypes._from_openapi_data( - { - "foo": - "baz", - "bar": - 2, - }, - _configuration=self._configuration - ) - - def test_second_oneof_valid_complex_passes(self): - # second oneOf valid (complex) - OneofComplexTypes._from_openapi_data( - { - "foo": - "baz", - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_base_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_base_schema.py deleted file mode 100644 index 52e075c47c37..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_base_schema.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.oneof_with_base_schema import OneofWithBaseSchema -from unit_test_api import configuration - - -class TestOneofWithBaseSchema(unittest.TestCase): - """OneofWithBaseSchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_both_oneof_valid_fails(self): - # both oneOf valid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - OneofWithBaseSchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - def test_mismatch_base_schema_fails(self): - # mismatch base schema - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - OneofWithBaseSchema._from_openapi_data( - 3, - _configuration=self._configuration - ) - - def test_one_oneof_valid_passes(self): - # one oneOf valid - OneofWithBaseSchema._from_openapi_data( - "foobar", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_empty_schema.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_empty_schema.py deleted file mode 100644 index 66b9d79990d8..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_oneof_with_empty_schema.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.oneof_with_empty_schema import OneofWithEmptySchema -from unit_test_api import configuration - - -class TestOneofWithEmptySchema(unittest.TestCase): - """OneofWithEmptySchema unit test stubs""" - _configuration = configuration.Configuration() - - def test_both_valid_invalid_fails(self): - # both valid - invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - OneofWithEmptySchema._from_openapi_data( - 123, - _configuration=self._configuration - ) - - def test_one_valid_valid_passes(self): - # one valid - valid - OneofWithEmptySchema._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_pattern_is_not_anchored.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_pattern_is_not_anchored.py deleted file mode 100644 index 15eb5c255868..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_pattern_is_not_anchored.py +++ /dev/null @@ -1,32 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.pattern_is_not_anchored import PatternIsNotAnchored -from unit_test_api import configuration - - -class TestPatternIsNotAnchored(unittest.TestCase): - """PatternIsNotAnchored unit test stubs""" - _configuration = configuration.Configuration() - - def test_matches_a_substring_passes(self): - # matches a substring - PatternIsNotAnchored._from_openapi_data( - "xxaayy", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_allof.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_allof.py deleted file mode 100644 index a1bcc3650913..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_allof.py +++ /dev/null @@ -1,46 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.ref_in_allof import RefInAllof -from unit_test_api import configuration - - -class TestRefInAllof(unittest.TestCase): - """RefInAllof unit test stubs""" - _configuration = configuration.Configuration() - - def test_property_named_ref_valid_passes(self): - # property named $ref valid - RefInAllof._from_openapi_data( - { - "$ref": - "a", - }, - _configuration=self._configuration - ) - - def test_property_named_ref_invalid_fails(self): - # property named $ref invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - RefInAllof._from_openapi_data( - { - "$ref": - 2, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_anyof.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_anyof.py deleted file mode 100644 index 33ece563af9e..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_anyof.py +++ /dev/null @@ -1,46 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.ref_in_anyof import RefInAnyof -from unit_test_api import configuration - - -class TestRefInAnyof(unittest.TestCase): - """RefInAnyof unit test stubs""" - _configuration = configuration.Configuration() - - def test_property_named_ref_valid_passes(self): - # property named $ref valid - RefInAnyof._from_openapi_data( - { - "$ref": - "a", - }, - _configuration=self._configuration - ) - - def test_property_named_ref_invalid_fails(self): - # property named $ref invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - RefInAnyof._from_openapi_data( - { - "$ref": - 2, - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_items.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_items.py deleted file mode 100644 index 1cc69e3556ba..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_ref_in_items.py +++ /dev/null @@ -1,50 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.ref_in_items import RefInItems -from unit_test_api import configuration - - -class TestRefInItems(unittest.TestCase): - """RefInItems unit test stubs""" - _configuration = configuration.Configuration() - - def test_property_named_ref_valid_passes(self): - # property named $ref valid - RefInItems._from_openapi_data( - [ - { - "$ref": - "a", - }, - ], - _configuration=self._configuration - ) - - def test_property_named_ref_invalid_fails(self): - # property named $ref invalid - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - RefInItems._from_openapi_data( - [ - { - "$ref": - 2, - }, - ], - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_default_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_default_validation.py deleted file mode 100644 index c17d16842b76..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_default_validation.py +++ /dev/null @@ -1,33 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.required_default_validation import RequiredDefaultValidation -from unit_test_api import configuration - - -class TestRequiredDefaultValidation(unittest.TestCase): - """RequiredDefaultValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_not_required_by_default_passes(self): - # not required by default - RequiredDefaultValidation._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_with_empty_array.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_with_empty_array.py deleted file mode 100644 index aced932c7039..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_required_with_empty_array.py +++ /dev/null @@ -1,33 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.required_with_empty_array import RequiredWithEmptyArray -from unit_test_api import configuration - - -class TestRequiredWithEmptyArray(unittest.TestCase): - """RequiredWithEmptyArray unit test stubs""" - _configuration = configuration.Configuration() - - def test_property_not_required_passes(self): - # property not required - RequiredWithEmptyArray._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_string_type_matches_strings.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_string_type_matches_strings.py deleted file mode 100644 index 807e2afe1c9c..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_string_type_matches_strings.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.string_type_matches_strings import StringTypeMatchesStrings -from unit_test_api import configuration - - -class TestStringTypeMatchesStrings(unittest.TestCase): - """StringTypeMatchesStrings unit test stubs""" - _configuration = configuration.Configuration() - - def test_1_is_not_a_string_fails(self): - # 1 is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - 1, - _configuration=self._configuration - ) - - def test_a_string_is_still_a_string_even_if_it_looks_like_a_number_passes(self): - # a string is still a string, even if it looks like a number - StringTypeMatchesStrings._from_openapi_data( - "1", - _configuration=self._configuration - ) - - def test_an_empty_string_is_still_a_string_passes(self): - # an empty string is still a string - StringTypeMatchesStrings._from_openapi_data( - "", - _configuration=self._configuration - ) - - def test_a_float_is_not_a_string_fails(self): - # a float is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - 1.1, - _configuration=self._configuration - ) - - def test_an_object_is_not_a_string_fails(self): - # an object is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_an_array_is_not_a_string_fails(self): - # an array is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_a_boolean_is_not_a_string_fails(self): - # a boolean is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - True, - _configuration=self._configuration - ) - - def test_null_is_not_a_string_fails(self): - # null is not a string - with self.assertRaises((unit_test_api.ApiValueError, unit_test_api.ApiTypeError)): - StringTypeMatchesStrings._from_openapi_data( - None, - _configuration=self._configuration - ) - - def test_a_string_is_a_string_passes(self): - # a string is a string - StringTypeMatchesStrings._from_openapi_data( - "foo", - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uniqueitems_false_validation.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uniqueitems_false_validation.py deleted file mode 100644 index afe2f481d7e9..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uniqueitems_false_validation.py +++ /dev/null @@ -1,246 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.uniqueitems_false_validation import UniqueitemsFalseValidation -from unit_test_api import configuration - - -class TestUniqueitemsFalseValidation(unittest.TestCase): - """UniqueitemsFalseValidation unit test stubs""" - _configuration = configuration.Configuration() - - def test_non_unique_array_of_integers_is_valid_passes(self): - # non-unique array of integers is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - 1, - 1, - ], - _configuration=self._configuration - ) - - def test_unique_array_of_objects_is_valid_passes(self): - # unique array of objects is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - "foo": - "bar", - }, - { - "foo": - "baz", - }, - ], - _configuration=self._configuration - ) - - def test_non_unique_array_of_nested_objects_is_valid_passes(self): - # non-unique array of nested objects is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - "foo": - { - "bar": - { - "baz": - True, - }, - }, - }, - { - "foo": - { - "bar": - { - "baz": - True, - }, - }, - }, - ], - _configuration=self._configuration - ) - - def test_non_unique_array_of_objects_is_valid_passes(self): - # non-unique array of objects is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - "foo": - "bar", - }, - { - "foo": - "bar", - }, - ], - _configuration=self._configuration - ) - - def test_1_and_true_are_unique_passes(self): - # 1 and true are unique - UniqueitemsFalseValidation._from_openapi_data( - [ - 1, - True, - ], - _configuration=self._configuration - ) - - def test_unique_array_of_integers_is_valid_passes(self): - # unique array of integers is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - 1, - 2, - ], - _configuration=self._configuration - ) - - def test_non_unique_array_of_arrays_is_valid_passes(self): - # non-unique array of arrays is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - [ - "foo", - ], - [ - "foo", - ], - ], - _configuration=self._configuration - ) - - def test_numbers_are_unique_if_mathematically_unequal_passes(self): - # numbers are unique if mathematically unequal - UniqueitemsFalseValidation._from_openapi_data( - [ - 1.0, - 1.0, - 1, - ], - _configuration=self._configuration - ) - - def test_false_is_not_equal_to_zero_passes(self): - # false is not equal to zero - UniqueitemsFalseValidation._from_openapi_data( - [ - 0, - False, - ], - _configuration=self._configuration - ) - - def test_unique_array_of_nested_objects_is_valid_passes(self): - # unique array of nested objects is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - "foo": - { - "bar": - { - "baz": - True, - }, - }, - }, - { - "foo": - { - "bar": - { - "baz": - False, - }, - }, - }, - ], - _configuration=self._configuration - ) - - def test_0_and_false_are_unique_passes(self): - # 0 and false are unique - UniqueitemsFalseValidation._from_openapi_data( - [ - 0, - False, - ], - _configuration=self._configuration - ) - - def test_unique_array_of_arrays_is_valid_passes(self): - # unique array of arrays is valid - UniqueitemsFalseValidation._from_openapi_data( - [ - [ - "foo", - ], - [ - "bar", - ], - ], - _configuration=self._configuration - ) - - def test_true_is_not_equal_to_one_passes(self): - # true is not equal to one - UniqueitemsFalseValidation._from_openapi_data( - [ - 1, - True, - ], - _configuration=self._configuration - ) - - def test_non_unique_heterogeneous_types_are_valid_passes(self): - # non-unique heterogeneous types are valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - }, - [ - 1, - ], - True, - None, - { - }, - 1, - ], - _configuration=self._configuration - ) - - def test_unique_heterogeneous_types_are_valid_passes(self): - # unique heterogeneous types are valid - UniqueitemsFalseValidation._from_openapi_data( - [ - { - }, - [ - 1, - ], - True, - None, - 1, - ], - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_reference_format.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_reference_format.py deleted file mode 100644 index c5508b68bc6f..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_reference_format.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.uri_reference_format import UriReferenceFormat -from unit_test_api import configuration - - -class TestUriReferenceFormat(unittest.TestCase): - """UriReferenceFormat unit test stubs""" - _configuration = configuration.Configuration() - - def test_all_string_formats_ignore_objects_passes(self): - # all string formats ignore objects - UriReferenceFormat._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_booleans_passes(self): - # all string formats ignore booleans - UriReferenceFormat._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_integers_passes(self): - # all string formats ignore integers - UriReferenceFormat._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_floats_passes(self): - # all string formats ignore floats - UriReferenceFormat._from_openapi_data( - 13.7, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_arrays_passes(self): - # all string formats ignore arrays - UriReferenceFormat._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_nulls_passes(self): - # all string formats ignore nulls - UriReferenceFormat._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_template_format.py b/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_template_format.py deleted file mode 100644 index 456c0794ad0c..000000000000 --- a/samples/openapi3/client/3_0_3_unit_test/python-experimental/test/test_uri_template_format.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding: utf-8 - -""" - openapi 3.0.3 sample spec - - sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501 - - The version of the OpenAPI document: 0.0.1 - Generated by: https://openapi-generator.tech -""" - -import unittest - -import unit_test_api -from unit_test_api.model.uri_template_format import UriTemplateFormat -from unit_test_api import configuration - - -class TestUriTemplateFormat(unittest.TestCase): - """UriTemplateFormat unit test stubs""" - _configuration = configuration.Configuration() - - def test_all_string_formats_ignore_objects_passes(self): - # all string formats ignore objects - UriTemplateFormat._from_openapi_data( - { - }, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_booleans_passes(self): - # all string formats ignore booleans - UriTemplateFormat._from_openapi_data( - False, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_integers_passes(self): - # all string formats ignore integers - UriTemplateFormat._from_openapi_data( - 12, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_floats_passes(self): - # all string formats ignore floats - UriTemplateFormat._from_openapi_data( - 13.7, - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_arrays_passes(self): - # all string formats ignore arrays - UriTemplateFormat._from_openapi_data( - [ - ], - _configuration=self._configuration - ) - - def test_all_string_formats_ignore_nulls_passes(self): - # all string formats ignore nulls - UriTemplateFormat._from_openapi_data( - None, - _configuration=self._configuration - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/typing_utils.py b/samples/server/petstore/python-blueplanet/app/openapi_server/typing_utils.py index 0563f81fd534..e69de29bb2d1 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/typing_utils.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/typing_utils.py @@ -1,32 +0,0 @@ -# coding: utf-8 - -import sys - -if sys.version_info < (3, 7): - import typing - - def is_generic(klass): - """ Determine whether klass is a generic class """ - return type(klass) == typing.GenericMeta - - def is_dict(klass): - """ Determine whether klass is a Dict """ - return klass.__extra__ == dict - - def is_list(klass): - """ Determine whether klass is a List """ - return klass.__extra__ == list - -else: - - def is_generic(klass): - """ Determine whether klass is a generic class """ - return hasattr(klass, '__origin__') - - def is_dict(klass): - """ Determine whether klass is a Dict """ - return klass.__origin__ == dict - - def is_list(klass): - """ Determine whether klass is a List """ - return klass.__origin__ == list From 0eb6c55c273e967a3ef0444027a2576440ed720d Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Fri, 22 Jul 2022 13:09:17 +0200 Subject: [PATCH 08/13] upload kotlin Multiplatform samples --- .../build.gradle.kts | 12 +++-- .../openapitools/client/apis/DefaultApi.kt | 1 - .../client/infrastructure/ApiClient.kt | 47 ++++++------------- .../client/infrastructure/Bytes.kt | 2 +- .../client/infrastructure/HttpResponse.kt | 8 ++-- .../build.gradle.kts | 12 +++-- .../openapitools/client/apis/DefaultApi.kt | 1 - .../client/infrastructure/ApiClient.kt | 47 ++++++------------- .../client/infrastructure/Bytes.kt | 2 +- .../client/infrastructure/HttpResponse.kt | 8 ++-- .../build.gradle.kts | 12 +++-- .../openapitools/client/apis/DefaultApi.kt | 1 - .../client/infrastructure/ApiClient.kt | 47 ++++++------------- .../client/infrastructure/Bytes.kt | 2 +- .../client/infrastructure/HttpResponse.kt | 8 ++-- 15 files changed, 78 insertions(+), 132 deletions(-) diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts index 2380844aa924..219d79917c91 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() @@ -30,9 +30,11 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") - api("io.ktor:ktor-client-json:$ktor_version") api("io.ktor:ktor-client-serialization:$ktor_version") + api("io.ktor:ktor-client-content-negotiation:$ktor_version") + api("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") } } diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt index d79299bb11a5..567106aadbf0 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt @@ -25,7 +25,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 77dc28c81460..0a7de2d2dd34 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -3,9 +3,8 @@ package org.openapitools.client.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.features.json.serializer.KotlinxSerializer +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.serialization.kotlinx.json.* import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent @@ -27,19 +26,12 @@ open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - private val json: Json + private val jsonBlock: Json ) { - private val serializer: JsonSerializer by lazy { - KotlinxSerializer(json).ignoreOutgoingContent() - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { json(jsonBlock) } httpClientConfig?.invoke(it) } } @@ -52,7 +44,11 @@ open class ApiClient( companion object { const val BASE_URL = "http://localhost" - val JSON_DEFAULT = Json { ignoreUnknownKeys = true } + val JSON_DEFAULT = Json { + ignoreUnknownKeys = true + prettyPrint = true + isLenient = true + } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } @@ -132,18 +128,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -156,7 +147,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body + this.setBody(body) } } @@ -182,14 +173,4 @@ open class ApiClient( RequestMethod.POST -> HttpMethod.Post RequestMethod.OPTIONS -> HttpMethod.Options } -} - -// https://github.com/ktorio/ktor/issues/851 -private fun JsonSerializer.ignoreOutgoingContent() = IgnoreOutgoingContentJsonSerializer(this) - -private class IgnoreOutgoingContentJsonSerializer(private val delegate: JsonSerializer) : JsonSerializer by delegate { - override fun write(data: Any): OutgoingContent { - if (data is OutgoingContent) return data - return delegate.write(data) - } -} +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt index 7d30ce18fcf1..0ff85787389a 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt @@ -14,7 +14,7 @@ private fun ByteArray.clearFrom(from: Int) = (from until size).forEach { this[it private fun Int.toBase64(): Char = BASE64_ALPHABET[this] private fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK internal fun ByteArray.encodeBase64(): String = buildPacket { writeFully(this@encodeBase64) }.encodeBase64() -internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { writeStringUtf8(dropLastWhile { it == BASE64_PAD }) }.decodeBase64Bytes().readBytes() +internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { dropLastWhile { it == BASE64_PAD } }.decodeBase64Bytes().readBytes() /** * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes. diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index 61e55bc5b153..4285d605ea62 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts index 2380844aa924..219d79917c91 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() @@ -30,9 +30,11 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") - api("io.ktor:ktor-client-json:$ktor_version") api("io.ktor:ktor-client-serialization:$ktor_version") + api("io.ktor:ktor-client-content-negotiation:$ktor_version") + api("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") } } diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt index 8daf4379155e..ce791db9b5b5 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt @@ -26,7 +26,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 77dc28c81460..0a7de2d2dd34 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -3,9 +3,8 @@ package org.openapitools.client.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.features.json.serializer.KotlinxSerializer +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.serialization.kotlinx.json.* import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent @@ -27,19 +26,12 @@ open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - private val json: Json + private val jsonBlock: Json ) { - private val serializer: JsonSerializer by lazy { - KotlinxSerializer(json).ignoreOutgoingContent() - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { json(jsonBlock) } httpClientConfig?.invoke(it) } } @@ -52,7 +44,11 @@ open class ApiClient( companion object { const val BASE_URL = "http://localhost" - val JSON_DEFAULT = Json { ignoreUnknownKeys = true } + val JSON_DEFAULT = Json { + ignoreUnknownKeys = true + prettyPrint = true + isLenient = true + } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } @@ -132,18 +128,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -156,7 +147,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body + this.setBody(body) } } @@ -182,14 +173,4 @@ open class ApiClient( RequestMethod.POST -> HttpMethod.Post RequestMethod.OPTIONS -> HttpMethod.Options } -} - -// https://github.com/ktorio/ktor/issues/851 -private fun JsonSerializer.ignoreOutgoingContent() = IgnoreOutgoingContentJsonSerializer(this) - -private class IgnoreOutgoingContentJsonSerializer(private val delegate: JsonSerializer) : JsonSerializer by delegate { - override fun write(data: Any): OutgoingContent { - if (data is OutgoingContent) return data - return delegate.write(data) - } -} +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt index 7d30ce18fcf1..0ff85787389a 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt @@ -14,7 +14,7 @@ private fun ByteArray.clearFrom(from: Int) = (from until size).forEach { this[it private fun Int.toBase64(): Char = BASE64_ALPHABET[this] private fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK internal fun ByteArray.encodeBase64(): String = buildPacket { writeFully(this@encodeBase64) }.encodeBase64() -internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { writeStringUtf8(dropLastWhile { it == BASE64_PAD }) }.decodeBase64Bytes().readBytes() +internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { dropLastWhile { it == BASE64_PAD } }.decodeBase64Bytes().readBytes() /** * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes. diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index 61e55bc5b153..4285d605ea62 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts index 2380844aa924..219d79917c91 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts +++ b/samples/client/petstore/kotlin-default-values-multiplatform/build.gradle.kts @@ -8,10 +8,10 @@ plugins { group = "org.openapitools" version = "1.0.0" -val kotlin_version = "1.6.0" -val coroutines_version = "1.5.2" -val serialization_version = "1.3.0" -val ktor_version = "1.6.4" +val kotlin_version = "1.6.10" +val coroutines_version = "1.6.3" +val serialization_version = "1.3.3" +val ktor_version = "2.0.3" repositories { mavenCentral() @@ -30,9 +30,11 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") - api("io.ktor:ktor-client-json:$ktor_version") api("io.ktor:ktor-client-serialization:$ktor_version") + api("io.ktor:ktor-client-content-negotiation:$ktor_version") + api("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") } } diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt index 6f47869c5a0a..a57053d08449 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt @@ -25,7 +25,6 @@ import org.openapitools.client.infrastructure.* import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json import io.ktor.http.ParametersBuilder import kotlinx.serialization.* diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 77dc28c81460..0a7de2d2dd34 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -3,9 +3,8 @@ package org.openapitools.client.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.json.JsonSerializer -import io.ktor.client.features.json.serializer.KotlinxSerializer +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.serialization.kotlinx.json.* import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent @@ -27,19 +26,12 @@ open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null, - private val json: Json + private val jsonBlock: Json ) { - private val serializer: JsonSerializer by lazy { - KotlinxSerializer(json).ignoreOutgoingContent() - } - private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy { { - // Hold a reference to the serializer to avoid freezing the entire ApiClient instance - // when the JsonFeature is configured. - val serializerReference = serializer - it.install(JsonFeature) { serializer = serializerReference } + it.install(ContentNegotiation) { json(jsonBlock) } httpClientConfig?.invoke(it) } } @@ -52,7 +44,11 @@ open class ApiClient( companion object { const val BASE_URL = "http://localhost" - val JSON_DEFAULT = Json { ignoreUnknownKeys = true } + val JSON_DEFAULT = Json { + ignoreUnknownKeys = true + prettyPrint = true + isLenient = true + } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) } @@ -132,18 +128,13 @@ open class ApiClient( return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { - val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } - ?: ContentType.Application.Json) - return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) - else request(requestConfig, authNames = authNames) - } + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse = request(requestConfig, body, authNames) - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun request(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.request { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -156,7 +147,7 @@ open class ApiClient( this.method = requestConfig.method.httpMethod headers.filter { header -> !UNSAFE_HEADERS.contains(header.key) }.forEach { header -> this.header(header.key, header.value) } if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) - this.body = body + this.setBody(body) } } @@ -182,14 +173,4 @@ open class ApiClient( RequestMethod.POST -> HttpMethod.Post RequestMethod.OPTIONS -> HttpMethod.Options } -} - -// https://github.com/ktorio/ktor/issues/851 -private fun JsonSerializer.ignoreOutgoingContent() = IgnoreOutgoingContentJsonSerializer(this) - -private class IgnoreOutgoingContentJsonSerializer(private val delegate: JsonSerializer) : JsonSerializer by delegate { - override fun write(data: Any): OutgoingContent { - if (data is OutgoingContent) return data - return delegate.write(data) - } -} +} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt index 7d30ce18fcf1..0ff85787389a 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt @@ -14,7 +14,7 @@ private fun ByteArray.clearFrom(from: Int) = (from until size).forEach { this[it private fun Int.toBase64(): Char = BASE64_ALPHABET[this] private fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK internal fun ByteArray.encodeBase64(): String = buildPacket { writeFully(this@encodeBase64) }.encodeBase64() -internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { writeStringUtf8(dropLastWhile { it == BASE64_PAD }) }.decodeBase64Bytes().readBytes() +internal fun String.decodeBase64Bytes(): ByteArray = buildPacket { dropLastWhile { it == BASE64_PAD } }.decodeBase64Bytes().readBytes() /** * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes. diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index 61e55bc5b153..4285d605ea62 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -1,9 +1,9 @@ package org.openapitools.client.infrastructure -import io.ktor.client.call.TypeInfo -import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess +import io.ktor.util.reflect.TypeInfo +import io.ktor.util.reflect.typeInfo open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value @@ -29,11 +29,11 @@ interface BodyProvider { class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = - response.call.receive(type) as T + response.call.body(type) as T @Suppress("UNCHECKED_CAST") override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = - response.call.receive(type) as V + response.call.body(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { From 784bd96e7e3c2191e675f0a0e1561828bec33ae3 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Sun, 24 Jul 2022 22:39:36 +0200 Subject: [PATCH 09/13] fix gson ktor sample --- .../main/resources/kotlin-client/libraries/jvm-ktor/api.mustache | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache index 37cb584d8348..50d5c790dee5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache @@ -13,6 +13,7 @@ import io.ktor.http.ParametersBuilder {{#gson}} import com.google.gson.Gson import com.google.gson.GsonBuilder +import java.text.DateFormat {{/gson}} {{#jackson}} import com.fasterxml.jackson.databind.ObjectMapper From 856e6527ad95ba29571acfcda14d9d5e63bfde48 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Sun, 24 Jul 2022 22:42:56 +0200 Subject: [PATCH 10/13] update samples --- .../org/openapitools/client/apis/PetApi.kt | 1 + .../org/openapitools/client/apis/StoreApi.kt | 1 + .../org/openapitools/client/apis/UserApi.kt | 1 + samples/client/petstore/perl/docs/MapTest.md | 18 + .../OpenAPIClient-php/lib/Model/ModelList.php | 401 ++++++++++++++++++ .../python-asyncio/petstore_api/models/dog.py | 131 ++++++ 6 files changed, 553 insertions(+) diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 2431082dbd4f..8ed8a448ef46 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -31,6 +31,7 @@ import io.ktor.http.ParametersBuilder import com.google.gson.Gson import com.google.gson.GsonBuilder +import java.text.DateFormat open class PetApi( baseUrl: String = ApiClient.BASE_URL, diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 8837368d61b9..d7f5593be89f 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -30,6 +30,7 @@ import io.ktor.http.ParametersBuilder import com.google.gson.Gson import com.google.gson.GsonBuilder +import java.text.DateFormat open class StoreApi( baseUrl: String = ApiClient.BASE_URL, diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 62f5b190a721..ee9ea3c9c87e 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -30,6 +30,7 @@ import io.ktor.http.ParametersBuilder import com.google.gson.Gson import com.google.gson.GsonBuilder +import java.text.DateFormat open class UserApi( baseUrl: String = ApiClient.BASE_URL, diff --git a/samples/client/petstore/perl/docs/MapTest.md b/samples/client/petstore/perl/docs/MapTest.md index e69de29bb2d1..9053f3e3db66 100644 --- a/samples/client/petstore/perl/docs/MapTest.md +++ b/samples/client/petstore/perl/docs/MapTest.md @@ -0,0 +1,18 @@ +# WWW::OpenAPIClient::Object::MapTest + +## Load the model package +```perl +use WWW::OpenAPIClient::Object::MapTest; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**map_map_of_string** | **HASH[string,HASH[string,string]]** | | [optional] +**map_of_enum_string** | **HASH[string,string]** | | [optional] +**direct_map** | **HASH[string,boolean]** | | [optional] +**indirect_map** | **HASH[string,boolean]** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index e69de29bb2d1..f921a0ba525a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -0,0 +1,401 @@ + + */ +class ModelList implements ModelInterface, ArrayAccess, \JsonSerializable +{ + public const DISCRIMINATOR = null; + + /** + * The original name of the model. + * + * @var string + */ + protected static $openAPIModelName = 'List'; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @var string[] + */ + protected static $openAPITypes = [ + '_123_list' => 'string' + ]; + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @var string[] + * @phpstan-var array + * @psalm-var array + */ + protected static $openAPIFormats = [ + '_123_list' => null + ]; + + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + '_123_list' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPITypes() + { + return self::$openAPITypes; + } + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPIFormats() + { + return self::$openAPIFormats; + } + + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @var string[] + */ + protected static $attributeMap = [ + '_123_list' => '123-list' + ]; + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @var string[] + */ + protected static $setters = [ + '_123_list' => 'set123List' + ]; + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @var string[] + */ + protected static $getters = [ + '_123_list' => 'get123List' + ]; + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @return array + */ + public static function attributeMap() + { + return self::$attributeMap; + } + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @return array + */ + public static function setters() + { + return self::$setters; + } + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @return array + */ + public static function getters() + { + return self::$getters; + } + + /** + * The original name of the model. + * + * @return string + */ + public function getModelName() + { + return self::$openAPIModelName; + } + + + /** + * Associative array for storing property values + * + * @var mixed[] + */ + protected $container = []; + + /** + * Constructor + * + * @param mixed[] $data Associated array of property values + * initializing the model + */ + public function __construct(array $data = null) + { + $this->setIfExists('_123_list', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; + } + + /** + * Show all the invalid properties with reasons. + * + * @return array invalid properties with reasons + */ + public function listInvalidProperties() + { + $invalidProperties = []; + + return $invalidProperties; + } + + /** + * Validate all the properties in the model + * return true if all passed + * + * @return bool True if all properties are valid + */ + public function valid() + { + return count($this->listInvalidProperties()) === 0; + } + + + /** + * Gets _123_list + * + * @return string|null + */ + public function get123List() + { + return $this->container['_123_list']; + } + + /** + * Sets _123_list + * + * @param string|null $_123_list _123_list + * + * @return self + */ + public function set123List($_123_list) + { + + if (is_null($_123_list)) { + throw new \InvalidArgumentException('non-nullable _123_list cannot be null'); + } + + $this->container['_123_list'] = $_123_list; + + return $this; + } + /** + * Returns true if offset exists. False otherwise. + * + * @param integer $offset Offset + * + * @return boolean + */ + public function offsetExists($offset): bool + { + return isset($this->container[$offset]); + } + + /** + * Gets offset. + * + * @param integer $offset Offset + * + * @return mixed|null + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->container[$offset] ?? null; + } + + /** + * Sets value based on offset. + * + * @param int|null $offset Offset + * @param mixed $value Value to be set + * + * @return void + */ + public function offsetSet($offset, $value): void + { + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + /** + * Unsets offset. + * + * @param integer $offset Offset + * + * @return void + */ + public function offsetUnset($offset): void + { + unset($this->container[$offset]); + } + + /** + * Serializes the object to a value that can be serialized natively by json_encode(). + * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php + * + * @return mixed Returns data which can be serialized by json_encode(), which is a value + * of any type other than a resource. + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return ObjectSerializer::sanitizeForSerialization($this); + } + + /** + * Gets the string presentation of the object + * + * @return string + */ + public function __toString() + { + return json_encode( + ObjectSerializer::sanitizeForSerialization($this), + JSON_PRETTY_PRINT + ); + } + + /** + * Gets a header-safe presentation of the object + * + * @return string + */ + public function toHeaderValue() + { + return json_encode(ObjectSerializer::sanitizeForSerialization($this)); + } +} + + diff --git a/samples/client/petstore/python-asyncio/petstore_api/models/dog.py b/samples/client/petstore/python-asyncio/petstore_api/models/dog.py index e69de29bb2d1..61acd35cdfe2 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/models/dog.py +++ b/samples/client/petstore/python-asyncio/petstore_api/models/dog.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" + OpenAPI Petstore + + This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +try: + from inspect import getfullargspec +except ImportError: + from inspect import getargspec as getfullargspec +import pprint +import re # noqa: F401 +import six + +from petstore_api.configuration import Configuration + + +class Dog(object): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + 'breed': 'str' + } + + attribute_map = { + 'breed': 'breed' + } + + def __init__(self, breed=None, local_vars_configuration=None): # noqa: E501 + """Dog - a model defined in OpenAPI""" # noqa: E501 + if local_vars_configuration is None: + local_vars_configuration = Configuration.get_default_copy() + self.local_vars_configuration = local_vars_configuration + + self._breed = None + self.discriminator = None + + if breed is not None: + self.breed = breed + + @property + def breed(self): + """Gets the breed of this Dog. # noqa: E501 + + + :return: The breed of this Dog. # noqa: E501 + :rtype: str + """ + return self._breed + + @breed.setter + def breed(self, breed): + """Sets the breed of this Dog. + + + :param breed: The breed of this Dog. # noqa: E501 + :type breed: str + """ + + self._breed = breed + + def to_dict(self, serialize=False): + """Returns the model properties as a dict""" + result = {} + + def convert(x): + if hasattr(x, "to_dict"): + args = getfullargspec(x.to_dict).args + if len(args) == 1: + return x.to_dict() + else: + return x.to_dict(serialize) + else: + return x + + for attr, _ in six.iteritems(self.openapi_types): + value = getattr(self, attr) + attr = self.attribute_map.get(attr, attr) if serialize else attr + if isinstance(value, list): + result[attr] = list(map( + lambda x: convert(x), + value + )) + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], convert(item[1])), + value.items() + )) + else: + result[attr] = convert(value) + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, Dog): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, Dog): + return True + + return self.to_dict() != other.to_dict() From 4dc3a286d71c6794717c7f8c2c624013d97386ca Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Tue, 9 Aug 2022 09:40:20 +0200 Subject: [PATCH 11/13] fix: unused imports --- .../multiplatform/infrastructure/ApiClient.kt.mustache | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache index 8c67cfa9eaa9..bc5d9b195081 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache @@ -11,15 +11,11 @@ import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent import io.ktor.http.* -import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData import kotlin.Unit import kotlinx.serialization.json.Json -import {{apiPackage}}.* -import {{modelPackage}}.* import {{packageName}}.auth.* {{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient( From df6b8ab8fa225468e06c0113d6bb1555c13e7d25 Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Tue, 9 Aug 2022 13:00:03 +0200 Subject: [PATCH 12/13] fix imports of ApiClient --- .../resources/kotlin-client/libraries/jvm-ktor/api.mustache | 1 - .../libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache index 50d5c790dee5..168401c67435 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache @@ -9,7 +9,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - {{#gson}} import com.google.gson.Gson import com.google.gson.GsonBuilder diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache index d8097bbc7960..51a0a5f504e5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/infrastructure/ApiClient.kt.mustache @@ -22,9 +22,8 @@ import io.ktor.http.encodedPath import io.ktor.http.takeFrom {{#gson}} import io.ktor.serialization.gson.* -import com.google.gson.Gson import com.google.gson.GsonBuilder -import java.nio.charset.StandardCharsets +import java.text.DateFormat {{/gson}} {{#jackson}} import io.ktor.serialization.jackson.* From 3bcd33445fc950bb865b75aca148c339e91537fd Mon Sep 17 00:00:00 2001 From: Marek Malik Date: Tue, 9 Aug 2022 13:08:41 +0200 Subject: [PATCH 13/13] update kotlin samples --- .../org/openapitools/client/infrastructure/ApiClient.kt | 4 ---- .../org/openapitools/client/infrastructure/ApiClient.kt | 4 ---- .../org/openapitools/client/infrastructure/ApiClient.kt | 4 ---- .../client/petstore/kotlin-json-request-string/build.gradle | 5 +---- .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 - .../src/main/kotlin/org/openapitools/client/apis/StoreApi.kt | 1 - .../src/main/kotlin/org/openapitools/client/apis/UserApi.kt | 1 - .../org/openapitools/client/infrastructure/ApiClient.kt | 3 +-- .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 - .../src/main/kotlin/org/openapitools/client/apis/StoreApi.kt | 1 - .../src/main/kotlin/org/openapitools/client/apis/UserApi.kt | 1 - .../org/openapitools/client/infrastructure/ApiClient.kt | 4 ---- samples/client/petstore/kotlin-uppercase-enum/build.gradle | 5 +---- 13 files changed, 3 insertions(+), 32 deletions(-) diff --git a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0a7de2d2dd34..fd07e4229d10 100644 --- a/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-array-simple-string-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -11,15 +11,11 @@ import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent import io.ktor.http.* -import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData import kotlin.Unit import kotlinx.serialization.json.Json -import org.openapitools.client.apis.* -import org.openapitools.client.models.* import org.openapitools.client.auth.* open class ApiClient( diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0a7de2d2dd34..fd07e4229d10 100644 --- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -11,15 +11,11 @@ import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent import io.ktor.http.* -import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData import kotlin.Unit import kotlinx.serialization.json.Json -import org.openapitools.client.apis.* -import org.openapitools.client.models.* import org.openapitools.client.auth.* open class ApiClient( diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0a7de2d2dd34..fd07e4229d10 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -11,15 +11,11 @@ import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent import io.ktor.http.* -import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData import kotlin.Unit import kotlinx.serialization.json.Json -import org.openapitools.client.apis.* -import org.openapitools.client.models.* import org.openapitools.client.auth.* open class ApiClient( diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin-json-request-string/build.gradle index 5fa9d001d0d4..f495c77a7452 100644 --- a/samples/client/petstore/kotlin-json-request-string/build.gradle +++ b/samples/client/petstore/kotlin-json-request-string/build.gradle @@ -32,11 +32,8 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.squareup.moshi:moshi-kotlin:1.13.0" - implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3" implementation "com.squareup.okhttp3:okhttp:4.10.0" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 8ed8a448ef46..a57d7bb3f4a7 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -28,7 +28,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.google.gson.Gson import com.google.gson.GsonBuilder import java.text.DateFormat diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index d7f5593be89f..af11d8184a29 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -27,7 +27,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.google.gson.Gson import com.google.gson.GsonBuilder import java.text.DateFormat diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index ee9ea3c9c87e..0e2a0d3dcb16 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -27,7 +27,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.google.gson.Gson import com.google.gson.GsonBuilder import java.text.DateFormat diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 8d18e1f8f3aa..5d6fc3af68b6 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -21,9 +21,8 @@ import io.ktor.http.encodeURLQueryComponent import io.ktor.http.encodedPath import io.ktor.http.takeFrom import io.ktor.serialization.gson.* -import com.google.gson.Gson import com.google.gson.GsonBuilder -import java.nio.charset.StandardCharsets +import java.text.DateFormat import org.openapitools.client.auth.ApiKeyAuth import org.openapitools.client.auth.Authentication import org.openapitools.client.auth.HttpBasicAuth diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index b34d6bd43156..6f7528a51784 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -28,7 +28,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.fasterxml.jackson.databind.ObjectMapper open class PetApi( diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 203f27430cce..c5ed2f8ac42d 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -27,7 +27,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.fasterxml.jackson.databind.ObjectMapper open class StoreApi( diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 8437db661480..d19684bc8676 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -27,7 +27,6 @@ import io.ktor.client.HttpClientConfig import io.ktor.client.request.forms.formData import io.ktor.client.engine.HttpClientEngine import io.ktor.http.ParametersBuilder - import com.fasterxml.jackson.databind.ObjectMapper open class UserApi( 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 index aea8c8050526..dc660734191a 100644 --- 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 @@ -11,15 +11,11 @@ import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.statement.HttpResponse -import io.ktor.client.utils.EmptyContent import io.ktor.http.* -import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData import kotlin.Unit import kotlinx.serialization.json.Json -import org.openapitools.client.apis.* -import org.openapitools.client.models.* import org.openapitools.client.auth.* open class ApiClient( diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin-uppercase-enum/build.gradle index 8fc5382ab009..1df0362d6c86 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin-uppercase-enum/build.gradle @@ -31,10 +31,7 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" - implementation "com.squareup.moshi:moshi-kotlin:1.13.0" - implementation "com.squareup.moshi:moshi-adapters:1.13.0" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3" implementation "com.squareup.okhttp3:okhttp:4.10.0" testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" }