Kotlin multiplatform client (#3900)

* Includes Kotlin multiplatform client

Kotlin multiplatform allows Kotlin code to be shared across various target platforms.
This implementation generates Swagger clients for JVM and iOS platforms.

* Includes Kotlin Multiplatform sample scripts

* Updates existing Kotlin samples

* Includes Kotlin Multiplatform samples

* Fixes incorrect Windows sample resource location

* Updates Kotlin client documentation

* Removes unnecessary workaround to remove duplicate entries

* Includes additional multiplatform type and import mappings

* Fixes Kotlin client definitions with multiple enums

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

* Updates Kotlin samples
This commit is contained in:
Andrew Emery
2019-09-21 23:48:41 +10:00
committed by William Cheng
parent 0ea1ead59e
commit 21e0e0d5d5
223 changed files with 11192 additions and 58 deletions

View File

@@ -12,9 +12,12 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
fun <T: Any?> toMultiValue(items: List<T>, collectionFormat: String, map: (item: Any?) -> String = defaultMultiValueConverter): List<String> {
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
= toMultiValue(items.asIterable(), collectionFormat, map)
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
return when(collectionFormat) {
"multi" -> items.map(map)
else -> listOf(items.map(map).joinToString(separator = collectionDelimiter(collectionFormat)))
else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
}
}

View File

@@ -19,6 +19,7 @@ import com.squareup.moshi.Json
* @param type
* @param message
*/
data class ApiResponse (
@Json(name = "code")
val code: kotlin.Int? = null,
@@ -28,4 +29,3 @@ data class ApiResponse (
val message: kotlin.String? = null
)

View File

@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
* @param id
* @param name
*/
data class Category (
@Json(name = "id")
val id: kotlin.Long? = null,
@@ -25,4 +26,3 @@ data class Category (
val name: kotlin.String? = null
)

View File

@@ -22,6 +22,7 @@ import com.squareup.moshi.Json
* @param status Order Status
* @param complete
*/
data class Order (
@Json(name = "id")
val id: kotlin.Long? = null,
@@ -37,12 +38,13 @@ data class Order (
@Json(name = "complete")
val complete: kotlin.Boolean? = null
)
{
/**
* Order Status
* Values: placed,approved,delivered
*/
enum class Status(val value: kotlin.String){
@Json(name = "placed") placed("placed"),
@@ -51,7 +53,8 @@ data class Order (
@Json(name = "delivered") delivered("delivered");
}
}

View File

@@ -24,6 +24,7 @@ import com.squareup.moshi.Json
* @param tags
* @param status pet status in the store
*/
data class Pet (
@Json(name = "name")
val name: kotlin.String,
@@ -39,12 +40,13 @@ data class Pet (
@Json(name = "status")
val status: Pet.Status? = null
)
{
/**
* pet status in the store
* Values: available,pending,sold
*/
enum class Status(val value: kotlin.String){
@Json(name = "available") available("available"),
@@ -53,7 +55,8 @@ data class Pet (
@Json(name = "sold") sold("sold");
}
}

View File

@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
* @param id
* @param name
*/
data class Tag (
@Json(name = "id")
val id: kotlin.Long? = null,
@@ -25,4 +26,3 @@ data class Tag (
val name: kotlin.String? = null
)

View File

@@ -24,6 +24,7 @@ import com.squareup.moshi.Json
* @param phone
* @param userStatus User Status
*/
data class User (
@Json(name = "id")
val id: kotlin.Long? = null,
@@ -44,4 +45,3 @@ data class User (
val userStatus: kotlin.Int? = null
)