Andrew Emery d92d84bb12 Kotlin multiplatform auth (#4284)
* Includes support for the Javascript platform

* Fixes enum serialization with non-string values

* Updates to expose api dependencies to consumers

* Uses explicit class name for Kotlin collection classes

* Maps unknown object type to Kotlin String

The Kotlinx serialization library uses reflectionless serialization and
requires compile-time serialization declarations. As a result, unknown
objects are mapped to Kotlin String instances to enable compilation
where object types are not explicitly defined.

* Improves support for binary objects

Previously, objects that contained binary data were assigned the
InputProvider data type. This was suitable for a binary input form
parameter, but unsuitable for Base64 or octet binary strings. These
binary strings are now assigned a more suitable object.

* Includes Kotlin Multiplatform auth classes

Includes support for:
- api key
- http basic
- http bearer
- oauth (partial support)

https://github.com/OpenAPITools/openapi-generator/issues/4283

* Updates Kotlin samples
2019-10-28 16:03:49 +08:00

162 lines
5.6 KiB
Groovy

apply plugin: 'kotlin-multiplatform'
apply plugin: 'kotlinx-serialization'
group 'org.openapitools'
version '1.0.0'
ext {
kotlin_version = '1.3.50'
kotlinx_version = '1.1.0'
coroutines_version = '1.3.1'
serialization_version = '0.12.0'
ktor_version = '1.2.4'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" // $kotlin_version
classpath "org.jetbrains.kotlin:kotlin-serialization:1.3.50" // $kotlin_version
}
}
repositories {
jcenter()
}
kotlin {
jvm()
iosArm64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } }
iosX64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } }
js()
sourceSets {
commonMain {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$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"
}
}
commonTest {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-test-common"
implementation "org.jetbrains.kotlin:kotlin-test-annotations-common"
implementation "io.ktor:ktor-client-mock:$ktor_version"
}
}
jvmMain {
dependsOn commonMain
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
api "io.ktor:ktor-client-core-jvm:$ktor_version"
api "io.ktor:ktor-client-json-jvm:$ktor_version"
api "io.ktor:ktor-client-serialization-jvm:$ktor_version"
}
}
jvmTest {
dependsOn commonTest
dependencies {
implementation "org.jetbrains.kotlin:kotlin-test"
implementation "org.jetbrains.kotlin:kotlin-test-junit"
implementation "io.ktor:ktor-client-mock-jvm:$ktor_version"
}
}
iosMain {
dependsOn commonMain
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
api "io.ktor:ktor-client-ios:$ktor_version"
}
}
iosTest {
dependsOn commonTest
dependencies {
implementation "io.ktor:ktor-client-mock-native:$ktor_version"
}
}
iosArm64().compilations.main.defaultSourceSet {
dependsOn iosMain
dependencies {
api "io.ktor:ktor-client-ios-iosarm64:$ktor_version"
api "io.ktor:ktor-client-json-iosarm64:$ktor_version"
api "io.ktor:ktor-client-serialization-iosarm64:$ktor_version"
}
}
iosArm64().compilations.test.defaultSourceSet {
dependsOn iosTest
}
iosX64().compilations.main.defaultSourceSet {
dependsOn iosMain
dependencies {
api "io.ktor:ktor-client-ios-iosx64:$ktor_version"
api "io.ktor:ktor-client-json-iosx64:$ktor_version"
api "io.ktor:ktor-client-serialization-iosx64:$ktor_version"
}
}
jsMain {
dependsOn commonMain
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serialization_version"
api "io.ktor:ktor-client-js:$ktor_version"
api "io.ktor:ktor-client-json-js:$ktor_version"
api "io.ktor:ktor-client-serialization-js:$ktor_version"
}
}
jsTest {
dependsOn commonTest
dependencies {
implementation "io.ktor:ktor-client-mock-js:$ktor_version"
implementation "io.ktor:ktor-client-js:$ktor_version"
implementation "io.ktor:ktor-client-json:$ktor_version"
implementation "io.ktor:ktor-client-serialization-js:$ktor_version"
}
}
iosX64().compilations.test.defaultSourceSet {
dependsOn iosTest
}
all {
languageSettings {
useExperimentalAnnotation('kotlin.Experimental')
}
}
}
}
task iosTest {
def device = project.findProperty("device")?.toString() ?: "iPhone 8"
dependsOn 'linkDebugTestIosX64'
group = JavaBasePlugin.VERIFICATION_GROUP
description = "Execute unit tests on ${device} simulator"
doLast {
def binary = kotlin.targets.iosX64.binaries.getTest('DEBUG')
exec { commandLine 'xcrun', 'simctl', 'spawn', device, binary.outputFile }
}
}
configurations { // workaround for https://youtrack.jetbrains.com/issue/KT-27170
compileClasspath
}