forked from loafle/openapi-generator-original
[Kotlin] Introduce support for Kotlin Explicit API Mode for Kotlin-Client generator (resolve #16506) (#19999)
* [Kotlin] Properly document nonPublicApi CLI option * [Kotlin] Respect parameter name of parent KSerializer to avoid miss-behavior * [Kotlin] Introduce support for Kotlin Explicit API Mode for Kotlin-Client generator (resolves #16506)
This commit is contained in:
parent
e9ea12f25a
commit
acb16410c4
1
.github/workflows/samples-kotlin-client.yaml
vendored
1
.github/workflows/samples-kotlin-client.yaml
vendored
@ -20,6 +20,7 @@ jobs:
|
|||||||
sample:
|
sample:
|
||||||
# client
|
# client
|
||||||
- samples/client/petstore/kotlin
|
- samples/client/petstore/kotlin
|
||||||
|
- samples/client/petstore/kotlin-explicit
|
||||||
- samples/client/petstore/kotlin-gson
|
- samples/client/petstore/kotlin-gson
|
||||||
- samples/client/petstore/kotlin-jackson
|
- samples/client/petstore/kotlin-jackson
|
||||||
- samples/client/petstore/kotlin-model-prefix-type-mappings
|
- samples/client/petstore/kotlin-model-prefix-type-mappings
|
||||||
|
7
bin/configs/kotlin-explicit.yaml
Normal file
7
bin/configs/kotlin-explicit.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
generatorName: kotlin
|
||||||
|
outputDir: samples/client/petstore/kotlin-explicit
|
||||||
|
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
|
||||||
|
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
|
||||||
|
additionalProperties:
|
||||||
|
artifactId: kotlin-petstore-explicit
|
||||||
|
explicitApi: "true"
|
@ -25,6 +25,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
|||||||
|collectionType|Option. Collection type to use|<dl><dt>**array**</dt><dd>kotlin.Array</dd><dt>**list**</dt><dd>kotlin.collections.List</dd></dl>|list|
|
|collectionType|Option. Collection type to use|<dl><dt>**array**</dt><dd>kotlin.Array</dd><dt>**list**</dt><dd>kotlin.collections.List</dd></dl>|list|
|
||||||
|dateLibrary|Option. Date library to use|<dl><dt>**threetenbp-localdatetime**</dt><dd>Threetenbp - Backport of JSR310 (jvm only, for legacy app only)</dd><dt>**kotlinx-datetime**</dt><dd>kotlinx-datetime (preferred for multiplatform)</dd><dt>**string**</dt><dd>String</dd><dt>**java8-localdatetime**</dt><dd>Java 8 native JSR310 (jvm only, for legacy app only)</dd><dt>**java8**</dt><dd>Java 8 native JSR310 (jvm only, preferred for jdk 1.8+)</dd><dt>**threetenbp**</dt><dd>Threetenbp - Backport of JSR310 (jvm only, preferred for jdk < 1.8)</dd></dl>|java8|
|
|dateLibrary|Option. Date library to use|<dl><dt>**threetenbp-localdatetime**</dt><dd>Threetenbp - Backport of JSR310 (jvm only, for legacy app only)</dd><dt>**kotlinx-datetime**</dt><dd>kotlinx-datetime (preferred for multiplatform)</dd><dt>**string**</dt><dd>String</dd><dt>**java8-localdatetime**</dt><dd>Java 8 native JSR310 (jvm only, for legacy app only)</dd><dt>**java8**</dt><dd>Java 8 native JSR310 (jvm only, preferred for jdk 1.8+)</dd><dt>**threetenbp**</dt><dd>Threetenbp - Backport of JSR310 (jvm only, preferred for jdk < 1.8)</dd></dl>|java8|
|
||||||
|enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |original|
|
|enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |original|
|
||||||
|
|explicitApi|Generates code with explicit access modifiers to comply with Kotlin Explicit API Mode.| |false|
|
||||||
|failOnUnknownProperties|Fail Jackson de-serialization on unknown properties| |false|
|
|failOnUnknownProperties|Fail Jackson de-serialization on unknown properties| |false|
|
||||||
|generateOneOfAnyOfWrappers|Generate oneOf, anyOf schemas as wrappers.| |false|
|
|generateOneOfAnyOfWrappers|Generate oneOf, anyOf schemas as wrappers.| |false|
|
||||||
|generateRoomModels|Generate Android Room database models in addition to API models (JVM Volley library only)| |false|
|
|generateRoomModels|Generate Android Room database models in addition to API models (JVM Volley library only)| |false|
|
||||||
@ -34,6 +35,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
|||||||
|mapFileBinaryToByteArray|Map File and Binary to ByteArray (default: false)| |false|
|
|mapFileBinaryToByteArray|Map File and Binary to ByteArray (default: false)| |false|
|
||||||
|modelMutable|Create mutable models| |false|
|
|modelMutable|Create mutable models| |false|
|
||||||
|moshiCodeGen|Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.| |false|
|
|moshiCodeGen|Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.| |false|
|
||||||
|
|nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.| |false|
|
||||||
|nullableReturnType|Nullable return type| |false|
|
|nullableReturnType|Nullable return type| |false|
|
||||||
|omitGradlePluginVersions|Whether to declare Gradle plugin versions in build files.| |false|
|
|omitGradlePluginVersions|Whether to declare Gradle plugin versions in build files.| |false|
|
||||||
|omitGradleWrapper|Whether to omit Gradle wrapper for creating a sub project.| |false|
|
|omitGradleWrapper|Whether to omit Gradle wrapper for creating a sub project.| |false|
|
||||||
|
@ -90,6 +90,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
|||||||
|
|
||||||
public static final String MOSHI_CODE_GEN = "moshiCodeGen";
|
public static final String MOSHI_CODE_GEN = "moshiCodeGen";
|
||||||
|
|
||||||
|
public static final String EXPLICIT_API = "explicitApi";
|
||||||
public static final String NULLABLE_RETURN_TYPE = "nullableReturnType";
|
public static final String NULLABLE_RETURN_TYPE = "nullableReturnType";
|
||||||
|
|
||||||
public static final String SUPPORT_ANDROID_API_LEVEL_25_AND_BELLOW = "supportAndroidApiLevel25AndBelow";
|
public static final String SUPPORT_ANDROID_API_LEVEL_25_AND_BELLOW = "supportAndroidApiLevel25AndBelow";
|
||||||
@ -268,6 +269,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
|||||||
cliOptions.add(CliOption.newBoolean(MOSHI_CODE_GEN, "Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info."));
|
cliOptions.add(CliOption.newBoolean(MOSHI_CODE_GEN, "Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info."));
|
||||||
cliOptions.add(CliOption.newBoolean(FAIL_ON_UNKNOWN_PROPERTIES, "Fail Jackson de-serialization on unknown properties", false));
|
cliOptions.add(CliOption.newBoolean(FAIL_ON_UNKNOWN_PROPERTIES, "Fail Jackson de-serialization on unknown properties", false));
|
||||||
|
|
||||||
|
cliOptions.add(CliOption.newBoolean(EXPLICIT_API, "Generates code with explicit access modifiers to comply with Kotlin Explicit API Mode."));
|
||||||
|
cliOptions.add(CliOption.newBoolean(CodegenConstants.NON_PUBLIC_API, CodegenConstants.NON_PUBLIC_API_DESC));
|
||||||
cliOptions.add(CliOption.newBoolean(NULLABLE_RETURN_TYPE, "Nullable return type"));
|
cliOptions.add(CliOption.newBoolean(NULLABLE_RETURN_TYPE, "Nullable return type"));
|
||||||
|
|
||||||
cliOptions.add(CliOption.newBoolean(GENERATE_ROOM_MODELS, "Generate Android Room database models in addition to API models (JVM Volley library only)", false));
|
cliOptions.add(CliOption.newBoolean(GENERATE_ROOM_MODELS, "Generate Android Room database models in addition to API models (JVM Volley library only)", false));
|
||||||
|
@ -71,7 +71,7 @@ import java.io.IOException
|
|||||||
@Deprecated(message = "This schema is deprecated.")
|
@Deprecated(message = "This schema is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{>additionalModelTypeAnnotations}}
|
{{>additionalModelTypeAnnotations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}data class {{classname}}(var actualInstance: Any? = null) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}data class {{classname}}(var actualInstance: Any? = null) {
|
||||||
|
|
||||||
class CustomTypeAdapterFactory : TypeAdapterFactory {
|
class CustomTypeAdapterFactory : TypeAdapterFactory {
|
||||||
override fun <T> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
override fun <T> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
||||||
|
@ -99,6 +99,11 @@ idea {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
{{/idea}}
|
{{/idea}}
|
||||||
|
{{#explicitApi}}
|
||||||
|
kotlin {
|
||||||
|
explicitApi()
|
||||||
|
}
|
||||||
|
{{/explicitApi}}
|
||||||
{{#jvm-spring-webclient}}{{#useSpringBoot3}}
|
{{#jvm-spring-webclient}}{{#useSpringBoot3}}
|
||||||
kotlin {
|
kotlin {
|
||||||
jvmToolchain {
|
jvmToolchain {
|
||||||
|
@ -77,7 +77,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
|||||||
{{#vendorExtensions.x-class-extra-annotation}}
|
{{#vendorExtensions.x-class-extra-annotation}}
|
||||||
{{{vendorExtensions.x-class-extra-annotation}}}
|
{{{vendorExtensions.x-class-extra-annotation}}}
|
||||||
{{/vendorExtensions.x-class-extra-annotation}}
|
{{/vendorExtensions.x-class-extra-annotation}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}{{#hasVars}}data {{/hasVars}}class{{/discriminator}} {{classname}}{{^discriminator}} (
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}{{#hasVars}}data {{/hasVars}}class{{/discriminator}} {{classname}}{{^discriminator}} (
|
||||||
|
|
||||||
{{#allVars}}
|
{{#allVars}}
|
||||||
{{#required}}{{>data_class_req_var}}{{/required}}{{^required}}{{>data_class_opt_var}}{{/required}}{{^-last}},{{/-last}}
|
{{#required}}{{>data_class_req_var}}{{/required}}{{^required}}{{>data_class_opt_var}}{{/required}}{{^-last}},{{/-last}}
|
||||||
@ -94,7 +94,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
|||||||
){{/discriminator}}
|
){{/discriminator}}
|
||||||
{{/generateRoomModels}}
|
{{/generateRoomModels}}
|
||||||
{{#serializableModel}}
|
{{#serializableModel}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private const val serialVersionUID: Long = 123
|
private const val serialVersionUID: Long = 123
|
||||||
}
|
}
|
||||||
{{/serializableModel}}
|
{{/serializableModel}}
|
||||||
@ -120,7 +120,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
|||||||
{{#multiplatform}}
|
{{#multiplatform}}
|
||||||
@Serializable
|
@Serializable
|
||||||
{{/multiplatform}}
|
{{/multiplatform}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInPascalCase}}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{{nameInPascalCase}}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
{{^multiplatform}}
|
{{^multiplatform}}
|
||||||
|
@ -39,7 +39,7 @@ import kotlinx.serialization.*
|
|||||||
@JsonClass(generateAdapter = false)
|
@JsonClass(generateAdapter = false)
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{/multiplatform}}
|
{{/multiplatform}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{classname}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{{dataType}}}) {
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
{{^multiplatform}}
|
{{^multiplatform}}
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
@ -79,16 +79,16 @@ import kotlinx.serialization.*
|
|||||||
*/
|
*/
|
||||||
override fun toString(): kotlin.String = value{{^isString}}.toString(){{/isString}}
|
override fun toString(): kotlin.String = value{{^isString}}.toString(){{/isString}}
|
||||||
|
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
/**
|
/**
|
||||||
* Converts the provided [data] to a [String] on success, null otherwise.
|
* Converts the provided [data] to a [String] on success, null otherwise.
|
||||||
*/
|
*/
|
||||||
fun encode(data: kotlin.Any?): kotlin.String? = if (data is {{classname}}) "$data" else null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun encode(data: kotlin.Any?): kotlin.String? = if (data is {{classname}}) "$data" else null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a valid [{{classname}}] for [data], null otherwise.
|
* Returns a valid [{{classname}}] for [data], null otherwise.
|
||||||
*/
|
*/
|
||||||
fun decode(data: kotlin.Any?): {{classname}}? = data?.let {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun decode(data: kotlin.Any?): {{classname}}? = data?.let {
|
||||||
val normalizedData = "$it".lowercase()
|
val normalizedData = "$it".lowercase()
|
||||||
values().firstOrNull { value ->
|
values().firstOrNull { value ->
|
||||||
it == value || normalizedData == "$value".lowercase()
|
it == value || normalizedData == "$value".lowercase()
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}typealias MultiValueMap = MutableMap<String,List<String>>
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -10,12 +10,12 @@ package {{packageName}}.infrastructure
|
|||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
return when(collectionFormat) {
|
return when(collectionFormat) {
|
||||||
"multi" -> items.map(map)
|
"multi" -> items.map(map)
|
||||||
else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
|
else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
|
||||||
|
@ -5,7 +5,7 @@ package {{packageName}}.infrastructure
|
|||||||
* NOTE: Headers is a Map<String,String> because rfc2616 defines
|
* NOTE: Headers is a Map<String,String> because rfc2616 defines
|
||||||
* multi-valued headers as csv-only.
|
* multi-valued headers as csv-only.
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}data class PartConfig<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}data class PartConfig<T>(
|
||||||
val headers: MutableMap<String, String> = mutableMapOf(),
|
val headers: MutableMap<String, String> = mutableMapOf(),
|
||||||
val body: T? = null
|
val body: T? = null
|
||||||
)
|
)
|
||||||
|
@ -8,7 +8,7 @@ package {{packageName}}.infrastructure
|
|||||||
* NOTE: Headers is a Map<String,String> because rfc2616 defines
|
* NOTE: Headers is a Map<String,String> because rfc2616 defines
|
||||||
* multi-valued headers as csv-only.
|
* multi-valued headers as csv-only.
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}data class RequestConfig<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}data class RequestConfig<T>(
|
||||||
val method: RequestMethod,
|
val method: RequestMethod,
|
||||||
val path: String,
|
val path: String,
|
||||||
val headers: MutableMap<String, String> = mutableMapOf(),
|
val headers: MutableMap<String, String> = mutableMapOf(),
|
||||||
|
@ -3,6 +3,6 @@ package {{packageName}}.infrastructure
|
|||||||
/**
|
/**
|
||||||
* Provides enumerated HTTP verbs
|
* Provides enumerated HTTP verbs
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class RequestMethod {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class RequestMethod {
|
||||||
GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT
|
GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
|
||||||
@Serializer(forClass = AtomicBoolean::class)
|
@Serializer(forClass = AtomicBoolean::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object AtomicBooleanAdapter : KSerializer<AtomicBoolean> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object AtomicBooleanAdapter : KSerializer<AtomicBoolean> {
|
||||||
override fun serialize(encoder: Encoder, value: AtomicBoolean) {
|
override fun serialize(encoder: Encoder, value: AtomicBoolean) {
|
||||||
encoder.encodeBoolean(value.get())
|
encoder.encodeBoolean(value.get())
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
|
||||||
@Serializer(forClass = AtomicInteger::class)
|
@Serializer(forClass = AtomicInteger::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object AtomicIntegerAdapter : KSerializer<AtomicInteger> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object AtomicIntegerAdapter : KSerializer<AtomicInteger> {
|
||||||
override fun serialize(encoder: Encoder, value: AtomicInteger) {
|
override fun serialize(encoder: Encoder, value: AtomicInteger) {
|
||||||
encoder.encodeInt(value.get())
|
encoder.encodeInt(value.get())
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||||||
import java.util.concurrent.atomic.AtomicLong
|
import java.util.concurrent.atomic.AtomicLong
|
||||||
|
|
||||||
@Serializer(forClass = AtomicLong::class)
|
@Serializer(forClass = AtomicLong::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object AtomicLongAdapter : KSerializer<AtomicLong> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object AtomicLongAdapter : KSerializer<AtomicLong> {
|
||||||
override fun serialize(encoder: Encoder, value: AtomicLong) {
|
override fun serialize(encoder: Encoder, value: AtomicLong) {
|
||||||
encoder.encodeLong(value.get())
|
encoder.encodeLong(value.get())
|
||||||
}
|
}
|
||||||
|
@ -17,21 +17,21 @@ import java.math.BigDecimal
|
|||||||
|
|
||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
@Serializer(forClass = BigDecimal::class)
|
@Serializer(forClass = BigDecimal::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object BigDecimalAdapter : KSerializer<BigDecimal> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object BigDecimalAdapter : KSerializer<BigDecimal> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigDecimal", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigDecimal", PrimitiveKind.STRING)
|
||||||
override fun deserialize(decoder: Decoder): BigDecimal = BigDecimal(decoder.decodeString())
|
override fun deserialize(decoder: Decoder): BigDecimal = BigDecimal(decoder.decodeString())
|
||||||
override fun serialize(encoder: Encoder, value: BigDecimal) = encoder.encodeString(value.toPlainString())
|
override fun serialize(encoder: Encoder, value: BigDecimal) = encoder.encodeString(value.toPlainString())
|
||||||
}
|
}
|
||||||
{{/kotlinx_serialization}}
|
{{/kotlinx_serialization}}
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class BigDecimalAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class BigDecimalAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: BigDecimal): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: BigDecimal): String {
|
||||||
return value.toPlainString()
|
return value.toPlainString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): BigDecimal {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): BigDecimal {
|
||||||
return BigDecimal(value)
|
return BigDecimal(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ import java.math.BigInteger
|
|||||||
|
|
||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
@Serializer(forClass = BigInteger::class)
|
@Serializer(forClass = BigInteger::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object BigIntegerAdapter : KSerializer<BigInteger> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object BigIntegerAdapter : KSerializer<BigInteger> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigInteger", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigInteger", PrimitiveKind.STRING)
|
||||||
override fun deserialize(decoder: Decoder): BigInteger {
|
override fun deserialize(decoder: Decoder): BigInteger {
|
||||||
return BigInteger(decoder.decodeString())
|
return BigInteger(decoder.decodeString())
|
||||||
@ -29,14 +29,14 @@ import java.math.BigInteger
|
|||||||
}
|
}
|
||||||
{{/kotlinx_serialization}}
|
{{/kotlinx_serialization}}
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class BigIntegerAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class BigIntegerAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: BigInteger): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: BigInteger): String {
|
||||||
return value.toString()
|
return value.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): BigInteger {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): BigInteger {
|
||||||
return BigInteger(value)
|
return BigInteger(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,16 +13,16 @@ import java.io.IOException
|
|||||||
{{/gson}}
|
{{/gson}}
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ByteArrayAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ByteArrayAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(data: ByteArray): String = String(data)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(data: ByteArray): String = String(data)
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(data: String): ByteArray = data.toByteArray()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(data: String): ByteArray = data.toByteArray()
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ByteArrayAdapter : TypeAdapter<ByteArray>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ByteArrayAdapter : TypeAdapter<ByteArray>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: ByteArray?) {
|
override fun write(out: JsonWriter?, value: ByteArray?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
@ -14,21 +14,21 @@ import java.io.IOException
|
|||||||
import kotlinx.datetime.Instant
|
import kotlinx.datetime.Instant
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class InstantAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class InstantAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: Instant): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: Instant): String {
|
||||||
return value.toString()
|
return value.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): Instant {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): Instant {
|
||||||
return Instant.parse(value)
|
return Instant.parse(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class InstantAdapter : TypeAdapter<Instant>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class InstantAdapter : TypeAdapter<Instant>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: Instant?) {
|
override fun write(out: JsonWriter?, value: Instant?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
@ -35,9 +35,9 @@ import kotlinx.datetime.LocalDate
|
|||||||
{{/kotlinx-datetime}}
|
{{/kotlinx-datetime}}
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalDateAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalDateAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: LocalDate): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: LocalDate): String {
|
||||||
{{#kotlinx-datetime}}
|
{{#kotlinx-datetime}}
|
||||||
return value.toString()
|
return value.toString()
|
||||||
{{/kotlinx-datetime}}
|
{{/kotlinx-datetime}}
|
||||||
@ -47,14 +47,14 @@ import kotlinx.datetime.LocalDate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): LocalDate {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): LocalDate {
|
||||||
return LocalDate.parse(value{{^kotlinx-datetime}}, DateTimeFormatter.ISO_LOCAL_DATE{{/kotlinx-datetime}})
|
return LocalDate.parse(value{{^kotlinx-datetime}}, DateTimeFormatter.ISO_LOCAL_DATE{{/kotlinx-datetime}})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalDateAdapter({{^kotlinx-datetime}}private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE{{/kotlinx-datetime}}) : TypeAdapter<LocalDate>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalDateAdapter({{^kotlinx-datetime}}private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE{{/kotlinx-datetime}}) : TypeAdapter<LocalDate>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: LocalDate?) {
|
override fun write(out: JsonWriter?, value: LocalDate?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
@ -88,7 +88,7 @@ import kotlinx.datetime.LocalDate
|
|||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
{{^kotlinx-datetime}}
|
{{^kotlinx-datetime}}
|
||||||
@Serializer(forClass = LocalDate::class)
|
@Serializer(forClass = LocalDate::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object LocalDateAdapter : KSerializer<LocalDate> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object LocalDateAdapter : KSerializer<LocalDate> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDate", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDate", PrimitiveKind.STRING)
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: LocalDate) {
|
override fun serialize(encoder: Encoder, value: LocalDate) {
|
||||||
|
@ -35,9 +35,9 @@ import kotlinx.datetime.LocalDateTime
|
|||||||
{{/kotlinx-datetime}}
|
{{/kotlinx-datetime}}
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalDateTimeAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalDateTimeAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: LocalDateTime): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: LocalDateTime): String {
|
||||||
{{#kotlinx-datetime}}
|
{{#kotlinx-datetime}}
|
||||||
return value.toString()
|
return value.toString()
|
||||||
{{/kotlinx-datetime}}
|
{{/kotlinx-datetime}}
|
||||||
@ -47,14 +47,14 @@ import kotlinx.datetime.LocalDateTime
|
|||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): LocalDateTime {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): LocalDateTime {
|
||||||
return LocalDateTime.parse(value{{^kotlinx-datetime}}, DateTimeFormatter.ISO_LOCAL_DATE_TIME{{/kotlinx-datetime}})
|
return LocalDateTime.parse(value{{^kotlinx-datetime}}, DateTimeFormatter.ISO_LOCAL_DATE_TIME{{/kotlinx-datetime}})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalDateTimeAdapter({{^kotlinx-datetime}}private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME{{/kotlinx-datetime}}) : TypeAdapter<LocalDateTime>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalDateTimeAdapter({{^kotlinx-datetime}}private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME{{/kotlinx-datetime}}) : TypeAdapter<LocalDateTime>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: LocalDateTime?) {
|
override fun write(out: JsonWriter?, value: LocalDateTime?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
@ -88,7 +88,7 @@ import kotlinx.datetime.LocalDateTime
|
|||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
{{^kotlinx-datetime}}
|
{{^kotlinx-datetime}}
|
||||||
@Serializer(forClass = LocalDateTime::class)
|
@Serializer(forClass = LocalDateTime::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object LocalDateTimeAdapter : KSerializer<LocalDateTime> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object LocalDateTimeAdapter : KSerializer<LocalDateTime> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDateTime", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDateTime", PrimitiveKind.STRING)
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: LocalDateTime) {
|
override fun serialize(encoder: Encoder, value: LocalDateTime) {
|
||||||
|
@ -14,21 +14,21 @@ import java.io.IOException
|
|||||||
import kotlinx.datetime.LocalTime
|
import kotlinx.datetime.LocalTime
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalTimeAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalTimeAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: LocalTime): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: LocalTime): String {
|
||||||
return value.toString()
|
return value.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): LocalTime {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): LocalTime {
|
||||||
return LocalTime.parse(value)
|
return LocalTime.parse(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class LocalTimeAdapter : TypeAdapter<LocalTime>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class LocalTimeAdapter : TypeAdapter<LocalTime>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: LocalTime?) {
|
override fun write(out: JsonWriter?, value: LocalTime?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
@ -30,21 +30,21 @@ import org.threeten.bp.format.DateTimeFormatter
|
|||||||
{{/threetenbp}}
|
{{/threetenbp}}
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class OffsetDateTimeAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OffsetDateTimeAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(value: OffsetDateTime): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(value: OffsetDateTime): String {
|
||||||
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value)
|
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(value: String): OffsetDateTime {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(value: String): OffsetDateTime {
|
||||||
return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
|
return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class OffsetDateTimeAdapter(private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME) : TypeAdapter<OffsetDateTime>() {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OffsetDateTimeAdapter(private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME) : TypeAdapter<OffsetDateTime>() {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun write(out: JsonWriter?, value: OffsetDateTime?) {
|
override fun write(out: JsonWriter?, value: OffsetDateTime?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
@ -72,7 +72,7 @@ import org.threeten.bp.format.DateTimeFormatter
|
|||||||
{{/gson}}
|
{{/gson}}
|
||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
@Serializer(forClass = OffsetDateTime::class)
|
@Serializer(forClass = OffsetDateTime::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object OffsetDateTimeAdapter : KSerializer<OffsetDateTime> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object OffsetDateTimeAdapter : KSerializer<OffsetDateTime> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("OffsetDateTime", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("OffsetDateTime", PrimitiveKind.STRING)
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: OffsetDateTime) {
|
override fun serialize(encoder: Encoder, value: OffsetDateTime) {
|
||||||
|
@ -58,10 +58,10 @@ import java.util.concurrent.atomic.AtomicInteger
|
|||||||
import java.util.concurrent.atomic.AtomicLong
|
import java.util.concurrent.atomic.AtomicLong
|
||||||
{{/kotlinx_serialization}}
|
{{/kotlinx_serialization}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object Serializer {
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshiBuilder: Moshi.Builder = Moshi.Builder()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val moshiBuilder: Moshi.Builder = Moshi.Builder()
|
||||||
.add(OffsetDateTimeAdapter())
|
.add(OffsetDateTimeAdapter())
|
||||||
{{#kotlinx-datetime}}
|
{{#kotlinx-datetime}}
|
||||||
.add(InstantAdapter())
|
.add(InstantAdapter())
|
||||||
@ -79,7 +79,7 @@ import java.util.concurrent.atomic.AtomicLong
|
|||||||
.add(BigIntegerAdapter())
|
.add(BigIntegerAdapter())
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshi: Moshi by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val moshi: Moshi by lazy {
|
||||||
{{#enumUnknownDefaultCase}}
|
{{#enumUnknownDefaultCase}}
|
||||||
SerializerHelper.addEnumUnknownDefaultCase(moshiBuilder)
|
SerializerHelper.addEnumUnknownDefaultCase(moshiBuilder)
|
||||||
{{/enumUnknownDefaultCase}}
|
{{/enumUnknownDefaultCase}}
|
||||||
|
@ -7,9 +7,9 @@ import com.squareup.moshi.adapters.EnumJsonAdapter
|
|||||||
{{/enumUnknownDefaultCase}}
|
{{/enumUnknownDefaultCase}}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object SerializerHelper {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object SerializerHelper {
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
fun addEnumUnknownDefaultCase(moshiBuilder: Moshi.Builder): Moshi.Builder {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun addEnumUnknownDefaultCase(moshiBuilder: Moshi.Builder): Moshi.Builder {
|
||||||
return moshiBuilder
|
return moshiBuilder
|
||||||
{{#enumUnknownDefaultCase}}
|
{{#enumUnknownDefaultCase}}
|
||||||
{{#models}}
|
{{#models}}
|
||||||
|
@ -9,7 +9,7 @@ import kotlinx.serialization.descriptors.PrimitiveKind
|
|||||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
|
|
||||||
@Serializer(forClass = StringBuilder::class)
|
@Serializer(forClass = StringBuilder::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object StringBuilderAdapter : KSerializer<StringBuilder> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object StringBuilderAdapter : KSerializer<StringBuilder> {
|
||||||
override fun serialize(encoder: Encoder, value: StringBuilder) {
|
override fun serialize(encoder: Encoder, value: StringBuilder) {
|
||||||
encoder.encodeString(value.toString())
|
encoder.encodeString(value.toString())
|
||||||
}
|
}
|
||||||
|
@ -16,17 +16,17 @@ import com.squareup.moshi.ToJson
|
|||||||
import java.net.URI
|
import java.net.URI
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class URIAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class URIAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uri: URI) = uri.toString()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(uri: URI): String = uri.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): URI = URI.create(s)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(s: String): URI = URI.create(s)
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
@Serializer(forClass = URI::class)
|
@Serializer(forClass = URI::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object URIAdapter : KSerializer<URI> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object URIAdapter : KSerializer<URI> {
|
||||||
override fun serialize(encoder: Encoder, value: URI) {
|
override fun serialize(encoder: Encoder, value: URI) {
|
||||||
encoder.encodeString(value.toASCIIString())
|
encoder.encodeString(value.toASCIIString())
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
@Serializer(forClass = URL::class)
|
@Serializer(forClass = URL::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object URLAdapter : KSerializer<URL> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object URLAdapter : KSerializer<URL> {
|
||||||
override fun serialize(encoder: Encoder, value: URL) {
|
override fun serialize(encoder: Encoder, value: URL) {
|
||||||
encoder.encodeString(value.toExternalForm())
|
encoder.encodeString(value.toExternalForm())
|
||||||
}
|
}
|
||||||
|
@ -16,17 +16,17 @@ import com.squareup.moshi.ToJson
|
|||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class UUIDAdapter {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class UUIDAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toJson(uuid: UUID): String = uuid.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): UUID = UUID.fromString(s)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun fromJson(s: String): UUID = UUID.fromString(s)
|
||||||
}
|
}
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#kotlinx_serialization}}
|
{{#kotlinx_serialization}}
|
||||||
@Serializer(forClass = UUID::class)
|
@Serializer(forClass = UUID::class)
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}object UUIDAdapter : KSerializer<UUID> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}object UUIDAdapter : KSerializer<UUID> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: UUID) {
|
override fun serialize(encoder: Encoder, value: UUID) {
|
||||||
|
@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
|||||||
{{/jackson}}
|
{{/jackson}}
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class {{classname}}(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class {{classname}}(
|
||||||
baseUrl: String = ApiClient.BASE_URL,
|
baseUrl: String = ApiClient.BASE_URL,
|
||||||
httpClientEngine: HttpClientEngine? = null,
|
httpClientEngine: HttpClientEngine? = null,
|
||||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||||
@ -51,7 +51,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
|||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
{{/returnType}}
|
{{/returnType}}
|
||||||
open suspend fun {{operationId}}({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): HttpResponse<{{{returnType}}}{{^returnType}}Unit{{/returnType}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open suspend fun {{operationId}}({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): HttpResponse<{{{returnType}}}{{^returnType}}Unit{{/returnType}}> {
|
||||||
|
|
||||||
val localVariableAuthNames = listOf<String>({{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}})
|
val localVariableAuthNames = listOf<String>({{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}})
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class ApiKeyAuth(private val location: String, val paramName: String) : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ApiKeyAuth(private val location: String, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val paramName: String) : Authentication {
|
||||||
var apiKey: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var apiKey: String? = null
|
||||||
var apiKeyPrefix: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var apiKeyPrefix: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val key: String = apiKey ?: return
|
val key: String = apiKey ?: return
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
interface Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface Authentication {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply authentication settings to header and query params.
|
* Apply authentication settings to header and query params.
|
||||||
@ -8,6 +8,6 @@ interface Authentication {
|
|||||||
* @param query Query parameters.
|
* @param query Query parameters.
|
||||||
* @param headers Header parameters.
|
* @param headers Header parameters.
|
||||||
*/
|
*/
|
||||||
fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@ package {{packageName}}.auth
|
|||||||
import io.ktor.util.InternalAPI
|
import io.ktor.util.InternalAPI
|
||||||
import io.ktor.util.encodeBase64
|
import io.ktor.util.encodeBase64
|
||||||
|
|
||||||
class HttpBasicAuth : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBasicAuth : Authentication {
|
||||||
var username: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var username: String? = null
|
||||||
var password: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var password: String? = null
|
||||||
|
|
||||||
@OptIn(InternalAPI::class)
|
@OptIn(InternalAPI::class)
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class HttpBearerAuth(private val scheme: String?) : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBearerAuth(private val scheme: String?) : Authentication {
|
||||||
var bearerToken: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var bearerToken: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val token: String = bearerToken ?: return
|
val token: String = bearerToken ?: return
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class OAuth : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OAuth : Authentication {
|
||||||
var accessToken: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var accessToken: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val token: String = accessToken ?: return
|
val token: String = accessToken ?: return
|
||||||
|
@ -38,7 +38,7 @@ import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
|
|||||||
{{/jackson}}
|
{{/jackson}}
|
||||||
import {{packageName}}.auth.*
|
import {{packageName}}.auth.*
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(
|
||||||
private val baseUrl: String,
|
private val baseUrl: String,
|
||||||
httpClientEngine: HttpClientEngine?,
|
httpClientEngine: HttpClientEngine?,
|
||||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||||
@ -81,16 +81,16 @@ import {{packageName}}.auth.*
|
|||||||
private val authentications: kotlin.collections.Map<String, Authentication>? = null
|
private val authentications: kotlin.collections.Map<String, Authentication>? = null
|
||||||
{{/hasAuthMethods}}
|
{{/hasAuthMethods}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
const val BASE_URL = "{{{basePath}}}"
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}const val BASE_URL: String = "{{{basePath}}}"
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
val JSON_DEFAULT : GsonBuilder.() -> Unit = {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val JSON_DEFAULT : GsonBuilder.() -> Unit = {
|
||||||
setDateFormat(DateFormat.LONG)
|
setDateFormat(DateFormat.LONG)
|
||||||
setPrettyPrinting()
|
setPrettyPrinting()
|
||||||
}
|
}
|
||||||
{{/gson}}
|
{{/gson}}
|
||||||
{{#jackson}}
|
{{#jackson}}
|
||||||
val JSON_DEFAULT: ObjectMapper.() -> Unit = {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val JSON_DEFAULT: ObjectMapper.() -> Unit = {
|
||||||
configure(SerializationFeature.INDENT_OUTPUT, true)
|
configure(SerializationFeature.INDENT_OUTPUT, true)
|
||||||
setDefaultPrettyPrinter(DefaultPrettyPrinter().apply {
|
setDefaultPrettyPrinter(DefaultPrettyPrinter().apply {
|
||||||
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
|
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
|
||||||
@ -99,7 +99,7 @@ import {{packageName}}.auth.*
|
|||||||
registerModule(JavaTimeModule())
|
registerModule(JavaTimeModule())
|
||||||
}
|
}
|
||||||
{{/jackson}}
|
{{/jackson}}
|
||||||
protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType)
|
protected val UNSAFE_HEADERS: List<String> = listOf(HttpHeaders.ContentType)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -107,7 +107,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param username Username
|
* @param username Username
|
||||||
*/
|
*/
|
||||||
fun setUsername(username: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No HTTP basic authentication configured")
|
||||||
auth.username = username
|
auth.username = username
|
||||||
@ -118,7 +118,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param password Password
|
* @param password Password
|
||||||
*/
|
*/
|
||||||
fun setPassword(password: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No HTTP basic authentication configured")
|
||||||
auth.password = password
|
auth.password = password
|
||||||
@ -130,7 +130,7 @@ import {{packageName}}.auth.*
|
|||||||
* @param apiKey API key
|
* @param apiKey API key
|
||||||
* @param paramName The name of the API key parameter, or null or set the first key.
|
* @param paramName The name of the API key parameter, or null or set the first key.
|
||||||
*/
|
*/
|
||||||
fun setApiKey(apiKey: String, paramName: String? = null) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No API key authentication configured")
|
||||||
auth.apiKey = apiKey
|
auth.apiKey = apiKey
|
||||||
@ -142,7 +142,7 @@ import {{packageName}}.auth.*
|
|||||||
* @param apiKeyPrefix API key prefix
|
* @param apiKeyPrefix API key prefix
|
||||||
* @param paramName The name of the API key parameter, or null or set the first key.
|
* @param paramName The name of the API key parameter, or null or set the first key.
|
||||||
*/
|
*/
|
||||||
fun setApiKeyPrefix(apiKeyPrefix: String, paramName: String? = null) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No API key authentication configured")
|
||||||
auth.apiKeyPrefix = apiKeyPrefix
|
auth.apiKeyPrefix = apiKeyPrefix
|
||||||
@ -153,7 +153,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param accessToken Access token
|
* @param accessToken Access token
|
||||||
*/
|
*/
|
||||||
fun setAccessToken(accessToken: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No OAuth2 authentication configured")
|
||||||
auth.accessToken = accessToken
|
auth.accessToken = accessToken
|
||||||
@ -164,7 +164,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param bearerToken The bearer token.
|
* @param bearerToken The bearer token.
|
||||||
*/
|
*/
|
||||||
fun setBearerToken(bearerToken: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No Bearer authentication configured")
|
||||||
auth.bearerToken = bearerToken
|
auth.bearerToken = bearerToken
|
||||||
|
@ -5,14 +5,14 @@ import io.ktor.http.isSuccess
|
|||||||
import io.ktor.util.reflect.TypeInfo
|
import io.ktor.util.reflect.TypeInfo
|
||||||
import io.ktor.util.reflect.typeInfo
|
import io.ktor.util.reflect.typeInfo
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse<T : Any>(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider<T>) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class HttpResponse<T : Any>({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val response: io.ktor.client.statement.HttpResponse, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val provider: BodyProvider<T>) {
|
||||||
val status: Int = response.status.value
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val status: Int = response.status.value
|
||||||
val success: Boolean = response.status.isSuccess()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val success: Boolean = response.status.isSuccess()
|
||||||
val headers: Map<String, List<String>> = response.headers.mapEntries()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val headers: Map<String, List<String>> = response.headers.mapEntries()
|
||||||
suspend fun body(): T = provider.body(response)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun body(): T = provider.body(response)
|
||||||
suspend fun <V : Any> typedBody(type: TypeInfo): V = provider.typedBody(response, type)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun <V : Any> typedBody(type: TypeInfo): V = provider.typedBody(response, type)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private fun Headers.mapEntries(): Map<String, List<String>> {
|
private fun Headers.mapEntries(): Map<String, List<String>> {
|
||||||
val result = mutableMapOf<String, List<String>>()
|
val result = mutableMapOf<String, List<String>>()
|
||||||
entries().forEach { result[it.key] = it.value }
|
entries().forEach { result[it.key] = it.value }
|
||||||
@ -21,12 +21,12 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}interface BodyProvider<T : Any> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface BodyProvider<T : Any> {
|
||||||
suspend fun body(response: io.ktor.client.statement.HttpResponse): T
|
suspend fun body(response: io.ktor.client.statement.HttpResponse): T
|
||||||
suspend fun <V : Any> typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V
|
suspend fun <V : Any> typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class TypedBodyProvider<T : Any>(private val type: TypeInfo) : BodyProvider<T> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class TypedBodyProvider<T : Any>(private val type: TypeInfo) : BodyProvider<T> {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
||||||
response.call.body(type) as T
|
response.call.body(type) as T
|
||||||
@ -36,7 +36,7 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
response.call.body(type) as V
|
response.call.body(type) as V
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class MappedBodyProvider<S : Any, T : Any>(private val provider: BodyProvider<S>, private val block: S.() -> T) : BodyProvider<T> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class MappedBodyProvider<S : Any, T : Any>(private val provider: BodyProvider<S>, private val block: S.() -> T) : BodyProvider<T> {
|
||||||
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
||||||
block(provider.body(response))
|
block(provider.body(response))
|
||||||
|
|
||||||
@ -44,8 +44,8 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
provider.typedBody(response, type)
|
provider.typedBody(response, type)
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}inline fun <reified T : Any> io.ktor.client.statement.HttpResponse.wrap(): HttpResponse<T> =
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T : Any> io.ktor.client.statement.HttpResponse.wrap(): HttpResponse<T> =
|
||||||
HttpResponse(this, TypedBodyProvider(typeInfo<T>()))
|
HttpResponse(this, TypedBodyProvider(typeInfo<T>()))
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}fun <T : Any, V : Any> HttpResponse<T>.map(block: T.() -> V): HttpResponse<V> =
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <T : Any, V : Any> HttpResponse<T>.map(block: T.() -> V): HttpResponse<V> =
|
||||||
HttpResponse(response, MappedBodyProvider(provider, block))
|
HttpResponse(response, MappedBodyProvider(provider, block))
|
||||||
|
@ -48,10 +48,10 @@ import {{packageName}}.infrastructure.Success
|
|||||||
import {{packageName}}.infrastructure.toMultiValue
|
import {{packageName}}.infrastructure.toMultiValue
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}(basePath: kotlin.String = defaultBasePath, client: Call.Factory = ApiClient.defaultClient) : ApiClient(basePath, client) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class {{classname}}(basePath: kotlin.String = defaultBasePath, client: Call.Factory = ApiClient.defaultClient) : ApiClient(basePath, client) {
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultBasePath: String by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val defaultBasePath: String by lazy {
|
||||||
System.getProperties().getProperty(ApiClient.baseUrlKey, "{{{basePath}}}")
|
System.getProperties().getProperty(ApiClient.baseUrlKey, "{{{basePath}}}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ import {{packageName}}.infrastructure.toMultiValue
|
|||||||
/**
|
/**
|
||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
@ -138,7 +138,7 @@ import {{packageName}}.infrastructure.toMultiValue
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{^doNotUseRxAndCoroutines}}{{#useCoroutines}} = withContext(Dispatchers.IO){{/useCoroutines}}{{/doNotUseRxAndCoroutines}} {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{^doNotUseRxAndCoroutines}}{{#useCoroutines}} = withContext(Dispatchers.IO){{/useCoroutines}}{{/doNotUseRxAndCoroutines}} {
|
||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
@ -172,7 +172,7 @@ import {{packageName}}.infrastructure.toMultiValue
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>{{^doNotUseRxAndCoroutines}}{{#useCoroutines}} = withContext(Dispatchers.IO){{/useCoroutines}}{{/doNotUseRxAndCoroutines}} {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>{{^doNotUseRxAndCoroutines}}{{#useCoroutines}} = withContext(Dispatchers.IO){{/useCoroutines}}{{/doNotUseRxAndCoroutines}} {
|
||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
@ -192,7 +192,7 @@ import {{packageName}}.infrastructure.toMultiValue
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
||||||
val localVariableBody = {{#hasBodyParam}}{{!
|
val localVariableBody = {{#hasBodyParam}}{{!
|
||||||
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
||||||
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
||||||
|
@ -58,33 +58,33 @@ import com.fasterxml.jackson.core.type.TypeReference
|
|||||||
import com.squareup.moshi.adapter
|
import com.squareup.moshi.adapter
|
||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val EMPTY_REQUEST: RequestBody = ByteArray(0).toRequestBody()
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val EMPTY_REQUEST: RequestBody = ByteArray(0).toRequestBody()
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val baseUrl: String, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val client: Call.Factory = defaultClient) {
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
protected const val ContentType = "Content-Type"
|
protected const val ContentType: String = "Content-Type"
|
||||||
protected const val Accept = "Accept"
|
protected const val Accept: String = "Accept"
|
||||||
protected const val Authorization = "Authorization"
|
protected const val Authorization: String = "Authorization"
|
||||||
protected const val JsonMediaType = "application/json"
|
protected const val JsonMediaType: String = "application/json"
|
||||||
protected const val FormDataMediaType = "multipart/form-data"
|
protected const val FormDataMediaType: String = "multipart/form-data"
|
||||||
protected const val FormUrlEncMediaType = "application/x-www-form-urlencoded"
|
protected const val FormUrlEncMediaType: String = "application/x-www-form-urlencoded"
|
||||||
protected const val XmlMediaType = "application/xml"
|
protected const val XmlMediaType: String = "application/xml"
|
||||||
protected const val OctetMediaType = "application/octet-stream"
|
protected const val OctetMediaType: String = "application/octet-stream"
|
||||||
|
|
||||||
val apiKey: MutableMap<String, String> = mutableMapOf()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val apiKey: MutableMap<String, String> = mutableMapOf()
|
||||||
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
||||||
var username: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var username: String? = null
|
||||||
var password: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var password: String? = null
|
||||||
var accessToken: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var accessToken: String? = null
|
||||||
const val baseUrlKey = "{{packageName}}.baseUrl"
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}const val baseUrlKey: String = "{{packageName}}.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultClient: OkHttpClient by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val defaultClient: OkHttpClient by lazy {
|
||||||
builder.build()
|
builder.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val builder: OkHttpClient.Builder = OkHttpClient.Builder()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val builder: OkHttpClient.Builder = OkHttpClient.Builder()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,43 +1,43 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class ResponseType {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class ResponseType {
|
||||||
Success, Informational, Redirection, ClientError, ServerError
|
Success, Informational, Redirection, ClientError, ServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}interface Response
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface Response
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}abstract class ApiResponse<T>(val responseType: ResponseType): Response {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract class ApiResponse<T>({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val responseType: ResponseType): Response {
|
||||||
abstract val statusCode: Int
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract val statusCode: Int
|
||||||
abstract val headers: Map<String,List<String>>
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract val headers: Map<String,List<String>>
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Success<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Success<T>(
|
||||||
val data: T{{#nullableReturnType}}?{{/nullableReturnType}},
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val data: T{{#nullableReturnType}}?{{/nullableReturnType}},
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
): ApiResponse<T>(ResponseType.Success)
|
): ApiResponse<T>(ResponseType.Success)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Informational<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Informational<T>(
|
||||||
val statusText: String,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val statusText: String,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.Informational)
|
) : ApiResponse<T>(ResponseType.Informational)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Redirection<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Redirection<T>(
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.Redirection)
|
) : ApiResponse<T>(ResponseType.Redirection)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ClientError<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ClientError<T>(
|
||||||
val message: String? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val message: String? = null,
|
||||||
val body: Any? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val body: Any? = null,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.ClientError)
|
) : ApiResponse<T>(ResponseType.ClientError)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ServerError<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ServerError<T>(
|
||||||
val message: String? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val message: String? = null,
|
||||||
val body: Any? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val body: Any? = null,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>>
|
override val headers: Map<String, List<String>>
|
||||||
): ApiResponse<T>(ResponseType.ServerError)
|
): ApiResponse<T>(ResponseType.ServerError)
|
||||||
|
@ -3,16 +3,16 @@ package {{packageName}}.infrastructure
|
|||||||
|
|
||||||
import java.lang.RuntimeException
|
import java.lang.RuntimeException
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ClientException(message: kotlin.String? = null, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val statusCode: Int = -1, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val response: Response? = null) : RuntimeException(message) {
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private const val serialVersionUID: Long = 123L
|
private const val serialVersionUID: Long = 123L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ServerException(message: kotlin.String? = null, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val statusCode: Int = -1, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val response: Response? = null) : RuntimeException(message) {
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private const val serialVersionUID: Long = 456L
|
private const val serialVersionUID: Long = 456L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,20 +5,20 @@ import okhttp3.Response
|
|||||||
/**
|
/**
|
||||||
* Provides an extension to evaluation whether the response is a 1xx code
|
* Provides an extension to evaluation whether the response is a 1xx code
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val Response.isInformational : Boolean get() = this.code in 100..199
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val Response.isInformational : Boolean get() = this.code in 100..199
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides an extension to evaluation whether the response is a 3xx code
|
* Provides an extension to evaluation whether the response is a 3xx code
|
||||||
*/
|
*/
|
||||||
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
|
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val Response.isRedirect : Boolean get() = this.code in 300..399
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val Response.isRedirect : Boolean get() = this.code in 300..399
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides an extension to evaluation whether the response is a 4xx code
|
* Provides an extension to evaluation whether the response is a 4xx code
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val Response.isClientError : Boolean get() = this.code in 400..499
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val Response.isClientError : Boolean get() = this.code in 400..499
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code
|
* Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}val Response.isServerError : Boolean get() = this.code in 500..999
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val Response.isServerError : Boolean get() = this.code in 500..999
|
||||||
|
@ -69,7 +69,7 @@ import okhttp3.MultipartBody
|
|||||||
|
|
||||||
{{/isMultipart}}
|
{{/isMultipart}}
|
||||||
{{/x-kotlin-multipart-import}}
|
{{/x-kotlin-multipart-import}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}interface {{classname}} {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface {{classname}} {
|
||||||
{{#operation}}
|
{{#operation}}
|
||||||
{{#allParams}}
|
{{#allParams}}
|
||||||
{{#isEnum}}
|
{{#isEnum}}
|
||||||
@ -77,7 +77,7 @@ import okhttp3.MultipartBody
|
|||||||
/**
|
/**
|
||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
@ -154,7 +154,7 @@ import okhttp3.MultipartBody
|
|||||||
{{/prioritizedContentTypes}}
|
{{/prioritizedContentTypes}}
|
||||||
{{/formParams}}
|
{{/formParams}}
|
||||||
@{{httpMethod}}("{{{path}}}")
|
@{{httpMethod}}("{{{path}}}")
|
||||||
{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{#-last}}){{/-last}}{{/allParams}}: {{^doNotUseRxAndCoroutines}}{{#useRxJava}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/useRxJava}}{{#useRxJava2}}{{#returnType}}Single<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Single<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{#useCoroutines}}Response<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/useCoroutines}}{{/doNotUseRxAndCoroutines}}{{#doNotUseRxAndCoroutines}}Call<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/doNotUseRxAndCoroutines}}
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}{{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{#-last}}){{/-last}}{{/allParams}}: {{^doNotUseRxAndCoroutines}}{{#useRxJava}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/useRxJava}}{{#useRxJava2}}{{#returnType}}Single<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Single<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{#useCoroutines}}Response<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/useCoroutines}}{{/doNotUseRxAndCoroutines}}{{#doNotUseRxAndCoroutines}}Call<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{^returnType}}Unit{{/returnType}}{{/isResponseFile}}>{{/doNotUseRxAndCoroutines}}
|
||||||
|
|
||||||
{{/operation}}
|
{{/operation}}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import java.net.URISyntaxException
|
|||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
class ApiKeyAuth(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ApiKeyAuth(
|
||||||
private val location: String = "",
|
private val location: String = "",
|
||||||
private val paramName: String = "",
|
private val paramName: String = "",
|
||||||
private var apiKey: String = ""
|
private var apiKey: String = ""
|
||||||
|
@ -8,12 +8,12 @@ import okhttp3.Interceptor.Chain
|
|||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import okhttp3.Credentials
|
import okhttp3.Credentials
|
||||||
|
|
||||||
class HttpBasicAuth(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBasicAuth(
|
||||||
private var username: String = "",
|
private var username: String = "",
|
||||||
private var password: String = ""
|
private var password: String = ""
|
||||||
) : Interceptor {
|
) : Interceptor {
|
||||||
|
|
||||||
fun setCredentials(username: String, password: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setCredentials(username: String, password: String) {
|
||||||
this.username = username
|
this.username = username
|
||||||
this.password = password
|
this.password = password
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import okhttp3.Interceptor
|
|||||||
import okhttp3.Interceptor.Chain
|
import okhttp3.Interceptor.Chain
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
class HttpBearerAuth(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBearerAuth(
|
||||||
private var schema: String = "",
|
private var schema: String = "",
|
||||||
var bearerToken: String = ""
|
var bearerToken: String = ""
|
||||||
) : Interceptor {
|
) : Interceptor {
|
||||||
|
@ -19,13 +19,13 @@ import okhttp3.Interceptor
|
|||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
class OAuth(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OAuth(
|
||||||
client: OkHttpClient,
|
client: OkHttpClient,
|
||||||
var tokenRequestBuilder: TokenRequestBuilder
|
var tokenRequestBuilder: TokenRequestBuilder
|
||||||
) : Interceptor {
|
) : Interceptor {
|
||||||
|
|
||||||
interface AccessTokenListener {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface AccessTokenListener {
|
||||||
fun notify(token: BasicOAuthToken)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun notify(token: BasicOAuthToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var oauthClient: OAuthClient = OAuthClient(OAuthOkHttpClient(client))
|
private var oauthClient: OAuthClient = OAuthClient(OAuthOkHttpClient(client))
|
||||||
@ -35,14 +35,14 @@ class OAuth(
|
|||||||
var authenticationRequestBuilder: AuthenticationRequestBuilder? = null
|
var authenticationRequestBuilder: AuthenticationRequestBuilder? = null
|
||||||
private var accessTokenListener: AccessTokenListener? = null
|
private var accessTokenListener: AccessTokenListener? = null
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
requestBuilder: TokenRequestBuilder
|
requestBuilder: TokenRequestBuilder
|
||||||
) : this(
|
) : this(
|
||||||
OkHttpClient(),
|
OkHttpClient(),
|
||||||
requestBuilder
|
requestBuilder
|
||||||
)
|
)
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
flow: OAuthFlow,
|
flow: OAuthFlow,
|
||||||
authorizationUrl: String,
|
authorizationUrl: String,
|
||||||
tokenUrl: String,
|
tokenUrl: String,
|
||||||
@ -54,7 +54,7 @@ class OAuth(
|
|||||||
authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl)
|
authenticationRequestBuilder = OAuthClientRequest.authorizationLocation(authorizationUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setFlow(flow: OAuthFlow) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setFlow(flow: OAuthFlow) {
|
||||||
when (flow) {
|
when (flow) {
|
||||||
OAuthFlow.accessCode, OAuthFlow.implicit ->
|
OAuthFlow.accessCode, OAuthFlow.implicit ->
|
||||||
tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE)
|
tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE)
|
||||||
@ -129,7 +129,7 @@ class OAuth(
|
|||||||
*/
|
*/
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun updateAccessToken(requestAccessToken: String?): Boolean {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun updateAccessToken(requestAccessToken: String?): Boolean {
|
||||||
if (accessToken == null || accessToken.equals(requestAccessToken)) {
|
if (accessToken == null || accessToken.equals(requestAccessToken)) {
|
||||||
return try {
|
return try {
|
||||||
val accessTokenResponse = oauthClient.accessToken(this.tokenRequestBuilder.buildBodyMessage())
|
val accessTokenResponse = oauthClient.accessToken(this.tokenRequestBuilder.buildBodyMessage())
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
enum class OAuthFlow {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class OAuthFlow {
|
||||||
accessCode, implicit, password, application
|
accessCode, implicit, password, application
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import okhttp3.RequestBody
|
|||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
|
|
||||||
|
|
||||||
class OAuthOkHttpClient(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OAuthOkHttpClient(
|
||||||
private var client: OkHttpClient = OkHttpClient()
|
private var client: OkHttpClient = OkHttpClient()
|
||||||
) : HttpClient {
|
) : HttpClient {
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ import {{packageName}}.infrastructure.Serializer.kotlinxSerializationJson
|
|||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
{{/kotlinx_serialization}}
|
{{/kotlinx_serialization}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ApiClient(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ApiClient(
|
||||||
private var baseUrl: String = defaultBasePath,
|
private var baseUrl: String = defaultBasePath,
|
||||||
private val okHttpClientBuilder: OkHttpClient.Builder? = null,
|
private val okHttpClientBuilder: OkHttpClient.Builder? = null,
|
||||||
{{^kotlinx_serialization}}
|
{{^kotlinx_serialization}}
|
||||||
@ -95,7 +95,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
private val apiAuthorizations = mutableMapOf<String, Interceptor>()
|
private val apiAuthorizations = mutableMapOf<String, Interceptor>()
|
||||||
var logger: ((String) -> Unit)? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var logger: ((String) -> Unit)? = null
|
||||||
|
|
||||||
private val retrofitBuilder: Retrofit.Builder by lazy {
|
private val retrofitBuilder: Retrofit.Builder by lazy {
|
||||||
Retrofit.Builder()
|
Retrofit.Builder()
|
||||||
@ -129,7 +129,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
}
|
}
|
||||||
|
|
||||||
{{#hasAuthMethods}}
|
{{#hasAuthMethods}}
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String = defaultBasePath,
|
baseUrl: String = defaultBasePath,
|
||||||
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
||||||
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
||||||
@ -168,7 +168,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
{{#authMethods}}
|
{{#authMethods}}
|
||||||
{{#isBasic}}
|
{{#isBasic}}
|
||||||
{{#isBasicBasic}}
|
{{#isBasicBasic}}
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String = defaultBasePath,
|
baseUrl: String = defaultBasePath,
|
||||||
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
||||||
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
||||||
@ -181,7 +181,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
|
|
||||||
{{/isBasicBasic}}
|
{{/isBasicBasic}}
|
||||||
{{#isBasicBearer}}
|
{{#isBasicBearer}}
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String = defaultBasePath,
|
baseUrl: String = defaultBasePath,
|
||||||
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
||||||
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
||||||
@ -195,7 +195,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
{{/isBasic}}
|
{{/isBasic}}
|
||||||
{{/authMethods}}
|
{{/authMethods}}
|
||||||
{{#hasOAuthMethods}}
|
{{#hasOAuthMethods}}
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String = defaultBasePath,
|
baseUrl: String = defaultBasePath,
|
||||||
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
okHttpClientBuilder: OkHttpClient.Builder? = null,
|
||||||
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
{{^kotlinx_serialization}}serializerBuilder: {{#gson}}GsonBuilder{{/gson}}{{#moshi}}Moshi.Builder{{/moshi}}{{#jackson}}ObjectMapper{{/jackson}} = Serializer.{{#gson}}gsonBuilder{{/gson}}{{#moshi}}moshiBuilder{{/moshi}}{{#jackson}}jacksonObjectMapper{{/jackson}},{{/kotlinx_serialization}}
|
||||||
@ -216,7 +216,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
{{#authMethods}}
|
{{#authMethods}}
|
||||||
{{#isBasic}}
|
{{#isBasic}}
|
||||||
{{#isBasicBasic}}
|
{{#isBasicBasic}}
|
||||||
fun setCredentials(username: String, password: String): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setCredentials(username: String, password: String): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, HttpBasicAuth> {
|
||||||
setCredentials(username, password)
|
setCredentials(username, password)
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
{{/isBasicBasic}}
|
{{/isBasicBasic}}
|
||||||
{{^isBasicBasic}}
|
{{^isBasicBasic}}
|
||||||
{{#hasOAuthMethods}}
|
{{#hasOAuthMethods}}
|
||||||
fun setCredentials(username: String, password: String): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setCredentials(username: String, password: String): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
tokenRequestBuilder.setUsername(username).setPassword(password)
|
tokenRequestBuilder.setUsername(username).setPassword(password)
|
||||||
}
|
}
|
||||||
@ -240,7 +240,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
{{/hasOAuthMethods}}
|
{{/hasOAuthMethods}}
|
||||||
{{/isBasicBasic}}
|
{{/isBasicBasic}}
|
||||||
{{#isBasicBearer}}
|
{{#isBasicBearer}}
|
||||||
fun setBearerToken(bearerToken: String): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setBearerToken(bearerToken: String): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, HttpBearerAuth> {
|
||||||
this.bearerToken = bearerToken
|
this.bearerToken = bearerToken
|
||||||
}
|
}
|
||||||
@ -256,7 +256,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one)
|
* Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one)
|
||||||
* @return Token request builder
|
* @return Token request builder
|
||||||
*/
|
*/
|
||||||
fun getTokenEndPoint(): TokenRequestBuilder? {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun getTokenEndPoint(): TokenRequestBuilder? {
|
||||||
var result: TokenRequestBuilder? = null
|
var result: TokenRequestBuilder? = null
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
result = tokenRequestBuilder
|
result = tokenRequestBuilder
|
||||||
@ -268,7 +268,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one)
|
* Helper method to configure authorization endpoint of the first oauth found in the apiAuthorizations (there should be only one)
|
||||||
* @return Authentication request builder
|
* @return Authentication request builder
|
||||||
*/
|
*/
|
||||||
fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun getAuthorizationEndPoint(): AuthenticationRequestBuilder? {
|
||||||
var result: AuthenticationRequestBuilder? = null
|
var result: AuthenticationRequestBuilder? = null
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
result = authenticationRequestBuilder
|
result = authenticationRequestBuilder
|
||||||
@ -281,7 +281,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* @param accessToken Access token
|
* @param accessToken Access token
|
||||||
* @return ApiClient
|
* @return ApiClient
|
||||||
*/
|
*/
|
||||||
fun setAccessToken(accessToken: String): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setAccessToken(accessToken: String): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
setAccessToken(accessToken)
|
setAccessToken(accessToken)
|
||||||
}
|
}
|
||||||
@ -295,7 +295,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* @param redirectURI Redirect URI
|
* @param redirectURI Redirect URI
|
||||||
* @return ApiClient
|
* @return ApiClient
|
||||||
*/
|
*/
|
||||||
fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun configureAuthorizationFlow(clientId: String, clientSecret: String, redirectURI: String): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
tokenRequestBuilder
|
tokenRequestBuilder
|
||||||
.setClientId(clientId)
|
.setClientId(clientId)
|
||||||
@ -313,7 +313,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* @param accessTokenListener Access token listener
|
* @param accessTokenListener Access token listener
|
||||||
* @return ApiClient
|
* @return ApiClient
|
||||||
*/
|
*/
|
||||||
fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun registerAccessTokenListener(accessTokenListener: AccessTokenListener): ApiClient {
|
||||||
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
apiAuthorizations.values.runOnFirst<Interceptor, OAuth> {
|
||||||
registerAccessTokenListener(accessTokenListener)
|
registerAccessTokenListener(accessTokenListener)
|
||||||
}
|
}
|
||||||
@ -327,7 +327,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* @param authorization Authorization interceptor
|
* @param authorization Authorization interceptor
|
||||||
* @return ApiClient
|
* @return ApiClient
|
||||||
*/
|
*/
|
||||||
fun addAuthorization(authName: String, authorization: Interceptor): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun addAuthorization(authName: String, authorization: Interceptor): ApiClient {
|
||||||
if (apiAuthorizations.containsKey(authName)) {
|
if (apiAuthorizations.containsKey(authName)) {
|
||||||
throw RuntimeException("auth name $authName already in api authorizations")
|
throw RuntimeException("auth name $authName already in api authorizations")
|
||||||
}
|
}
|
||||||
@ -336,12 +336,12 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setLogger(logger: (String) -> Unit): ApiClient {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun setLogger(logger: (String) -> Unit): ApiClient {
|
||||||
this.logger = logger
|
this.logger = logger
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <S> createService(serviceClass: Class<S>): S {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <S> createService(serviceClass: Class<S>): S {
|
||||||
val usedCallFactory = this.callFactory ?: clientBuilder.build()
|
val usedCallFactory = this.callFactory ?: clientBuilder.build()
|
||||||
return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass)
|
return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass)
|
||||||
}
|
}
|
||||||
@ -353,7 +353,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* Gets the serializer builder.
|
* Gets the serializer builder.
|
||||||
* @return serial builder
|
* @return serial builder
|
||||||
*/
|
*/
|
||||||
fun getSerializerBuilder(): GsonBuilder {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun getSerializerBuilder(): GsonBuilder {
|
||||||
return serializerBuilder
|
return serializerBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,12 +375,12 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
protected val baseUrlKey = "{{packageName}}.baseUrl"
|
protected val baseUrlKey: String = "{{packageName}}.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultBasePath: String by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val defaultBasePath: String by lazy {
|
||||||
System.getProperties().getProperty(baseUrlKey, "{{{basePath}}}")
|
System.getProperties().getProperty(baseUrlKey, "{{{basePath}}}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -395,7 +395,7 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||||||
* @param gsonBuilder gson builder
|
* @param gsonBuilder gson builder
|
||||||
* @return GSON builder
|
* @return GSON builder
|
||||||
*/
|
*/
|
||||||
fun registerTypeAdapterFactoryForAllModels(gsonBuilder: GsonBuilder): GsonBuilder {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun registerTypeAdapterFactoryForAllModels(gsonBuilder: GsonBuilder): GsonBuilder {
|
||||||
{{#models}}
|
{{#models}}
|
||||||
{{#model}}
|
{{#model}}
|
||||||
{{^isEnum}}
|
{{^isEnum}}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
class CollectionFormats {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class CollectionFormats {
|
||||||
|
|
||||||
open class CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class CSVParams {
|
||||||
|
|
||||||
var params: List<String>
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var params: List<String>
|
||||||
|
|
||||||
constructor(params: List<String>) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) {
|
||||||
this.params = params
|
this.params = params
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(vararg params: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) {
|
||||||
this.params = listOf(*params)
|
this.params = listOf(*params)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,38 +19,38 @@ class CollectionFormats {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class SSVParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class SSVParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString(" ")
|
return params.joinToString(" ")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TSVParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class TSVParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString("\t")
|
return params.joinToString("\t")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PIPESParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class PIPESParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString("|")
|
return params.joinToString("|")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SPACEParams : SSVParams()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class SPACEParams : SSVParams()
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import retrofit2.Response
|
|||||||
|
|
||||||
{{#moshi}}
|
{{#moshi}}
|
||||||
@Throws(JsonDataException::class)
|
@Throws(JsonDataException::class)
|
||||||
inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Builder = Serializer.moshiBuilder): T? {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Builder = Serializer.moshiBuilder): T? {
|
||||||
val serializer = serializerBuilder.build()
|
val serializer = serializerBuilder.build()
|
||||||
val parser = serializer.adapter(T::class.java)
|
val parser = serializer.adapter(T::class.java)
|
||||||
val response = errorBody()?.string()
|
val response = errorBody()?.string()
|
||||||
@ -24,7 +24,7 @@ inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: Moshi.Bui
|
|||||||
{{/moshi}}
|
{{/moshi}}
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
@Throws(JsonParseException::class)
|
@Throws(JsonParseException::class)
|
||||||
inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: GsonBuilder = Serializer.gsonBuilder): T? {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T> Response<*>.getErrorResponse(serializerBuilder: GsonBuilder = Serializer.gsonBuilder): T? {
|
||||||
val serializer = serializerBuilder.create()
|
val serializer = serializerBuilder.create()
|
||||||
val reader = errorBody()?.charStream()
|
val reader = errorBody()?.charStream()
|
||||||
if (reader != null) {
|
if (reader != null) {
|
||||||
|
@ -20,10 +20,10 @@ import org.springframework.http.MediaType
|
|||||||
import {{packageName}}.infrastructure.*
|
import {{packageName}}.infrastructure.*
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}(client: RestClient) : ApiClient(client) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class {{classname}}(client: RestClient) : ApiClient(client) {
|
||||||
|
|
||||||
{{#jackson}}
|
{{#jackson}}
|
||||||
constructor(baseUrl: String) : this(RestClient.builder()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(baseUrl: String) : this(RestClient.builder()
|
||||||
.baseUrl(baseUrl)
|
.baseUrl(baseUrl)
|
||||||
.messageConverters { it.add(MappingJackson2HttpMessageConverter()) }
|
.messageConverters { it.add(MappingJackson2HttpMessageConverter()) }
|
||||||
.build()
|
.build()
|
||||||
@ -36,7 +36,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
/**
|
/**
|
||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
@ -66,7 +66,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}} {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}} {
|
||||||
{{#returnType}}val result = {{/returnType}}{{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
{{#returnType}}val result = {{/returnType}}{{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
return result.body!!
|
return result.body!!
|
||||||
@ -77,7 +77,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): ResponseEntity<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): ResponseEntity<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}> {
|
||||||
val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||||
return request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}, {{{returnType}}}{{^returnType}}Unit{{/returnType}}>(
|
return request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}, {{{returnType}}}{{^returnType}}Unit{{/returnType}}>(
|
||||||
localVariableConfig
|
localVariableConfig
|
||||||
@ -87,7 +87,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
||||||
val localVariableBody = {{#hasBodyParam}}{{!
|
val localVariableBody = {{#hasBodyParam}}{{!
|
||||||
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
||||||
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
||||||
|
@ -8,7 +8,7 @@ import org.springframework.web.client.RestClient
|
|||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.util.LinkedMultiValueMap
|
import org.springframework.util.LinkedMultiValueMap
|
||||||
|
|
||||||
open class ApiClient(protected val client: RestClient) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(protected val client: RestClient) {
|
||||||
|
|
||||||
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): ResponseEntity<T> {
|
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): ResponseEntity<T> {
|
||||||
return prepare(defaults(requestConfig))
|
return prepare(defaults(requestConfig))
|
||||||
@ -50,7 +50,7 @@ open class ApiClient(protected val client: RestClient) {
|
|||||||
apply { if (requestConfig.body != null) body(requestConfig.body) }
|
apply { if (requestConfig.body != null) body(requestConfig.body) }
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T: Any> parseDateToQueryString(value : T): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T: Any> parseDateToQueryString(value : T): String {
|
||||||
{{#toJson}}
|
{{#toJson}}
|
||||||
/*
|
/*
|
||||||
.replace("\"", "") converts the json object string to an actual string for the query parameter.
|
.replace("\"", "") converts the json object string to an actual string for the query parameter.
|
||||||
|
@ -21,10 +21,10 @@ import org.springframework.util.LinkedMultiValueMap
|
|||||||
import {{packageName}}.infrastructure.*
|
import {{packageName}}.infrastructure.*
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}(client: WebClient) : ApiClient(client) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class {{classname}}(client: WebClient) : ApiClient(client) {
|
||||||
|
|
||||||
{{#jackson}}
|
{{#jackson}}
|
||||||
constructor(baseUrl: String) : this(WebClient.builder()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(baseUrl: String) : this(WebClient.builder()
|
||||||
.baseUrl(baseUrl)
|
.baseUrl(baseUrl)
|
||||||
.codecs {
|
.codecs {
|
||||||
it.defaultCodecs().jackson2JsonEncoder(Jackson2JsonEncoder(Serializer.jacksonObjectMapper, MediaType.APPLICATION_JSON))
|
it.defaultCodecs().jackson2JsonEncoder(Jackson2JsonEncoder(Serializer.jacksonObjectMapper, MediaType.APPLICATION_JSON))
|
||||||
@ -40,7 +40,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
/**
|
/**
|
||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
@ -70,7 +70,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): Mono<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): Mono<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}> {
|
||||||
return {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
return {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||||
.map { {{#returnType}}it.body{{/returnType}}{{^returnType}}Unit{{/returnType}} }
|
.map { {{#returnType}}it.body{{/returnType}}{{^returnType}}Unit{{/returnType}} }
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): Mono<ResponseEntity<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}>> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): Mono<ResponseEntity<{{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}>> {
|
||||||
val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
|
||||||
return request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}, {{{returnType}}}{{^returnType}}Unit{{/returnType}}>(
|
return request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}, {{{returnType}}}{{^returnType}}Unit{{/returnType}}>(
|
||||||
localVariableConfig
|
localVariableConfig
|
||||||
@ -89,7 +89,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{#defaultValue}} = {{>param_default_value}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map<String, PartConfig<*>>{{/hasFormParams}}{{/hasBodyParam}}> {
|
||||||
val localVariableBody = {{#hasBodyParam}}{{!
|
val localVariableBody = {{#hasBodyParam}}{{!
|
||||||
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{!
|
||||||
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
}}{{^hasFormParams}}null{{/hasFormParams}}{{!
|
||||||
|
@ -10,7 +10,7 @@ import org.springframework.http.client.MultipartBodyBuilder
|
|||||||
import org.springframework.util.LinkedMultiValueMap
|
import org.springframework.util.LinkedMultiValueMap
|
||||||
import reactor.core.publisher.Mono
|
import reactor.core.publisher.Mono
|
||||||
|
|
||||||
open class ApiClient(protected val client: WebClient) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(protected val client: WebClient) {
|
||||||
|
|
||||||
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
|
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
|
||||||
return prepare(defaults(requestConfig))
|
return prepare(defaults(requestConfig))
|
||||||
@ -68,7 +68,7 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T: Any> parseDateToQueryString(value : T): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T: Any> parseDateToQueryString(value : T): String {
|
||||||
{{#toJson}}
|
{{#toJson}}
|
||||||
/*
|
/*
|
||||||
.replace("\"", "") converts the json object string to an actual string for the query parameter.
|
.replace("\"", "") converts the json object string to an actual string for the query parameter.
|
||||||
|
@ -37,14 +37,14 @@ import {{packageName}}.infrastructure.*
|
|||||||
|
|
||||||
@Suppress ("UNUSED")
|
@Suppress ("UNUSED")
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class {{classname}}(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
|
||||||
{{#operation}}
|
{{#operation}}
|
||||||
{{#allParams}}
|
{{#allParams}}
|
||||||
{{#isEnum}}
|
{{#isEnum}}
|
||||||
/**
|
/**
|
||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
@ -103,7 +103,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{#useCoroutines}}suspend {{/useCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{^useCoroutines}}Future<{{/useCoroutines}}{{#returnType}}{{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{^useCoroutines}}>{{/useCoroutines}} {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}{{#useCoroutines}}suspend {{/useCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{^useCoroutines}}Future<{{/useCoroutines}}{{#returnType}}{{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{^useCoroutines}}>{{/useCoroutines}} {
|
||||||
return {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}).map { localVarResponse ->
|
return {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}).map { localVarResponse ->
|
||||||
when (localVarResponse.responseType) {
|
when (localVarResponse.responseType) {
|
||||||
ResponseType.Success -> {{#returnType}}(localVarResponse as Success<*>).data as {{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}
|
ResponseType.Success -> {{#returnType}}(localVarResponse as Success<*>).data as {{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}
|
||||||
@ -134,7 +134,7 @@ import {{packageName}}.infrastructure.*
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated(message = "This operation is deprecated.")
|
@Deprecated(message = "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : Future<ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : Future<ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>> {
|
||||||
val vertxClient = WebClient.create(vertx)
|
val vertxClient = WebClient.create(vertx)
|
||||||
val request = vertxClient.requestAbs(HttpMethod.{{httpMethod}}, UriTemplate.of("$basePath{{{path}}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}}))
|
val request = vertxClient.requestAbs(HttpMethod.{{httpMethod}}, UriTemplate.of("$basePath{{{path}}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}{{^required}}?{{/required}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}}))
|
||||||
|
|
||||||
|
@ -10,12 +10,12 @@ import com.fasterxml.jackson.core.type.TypeReference
|
|||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
{{/gson}}
|
{{/gson}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
const val baseUrlKey = "{{packageName}}.baseUrl"
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}const val baseUrlKey: String = "{{packageName}}.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultBasePath: String by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val defaultBasePath: String by lazy {
|
||||||
System.getProperties().getProperty(baseUrlKey, "{{{basePath}}}")
|
System.getProperties().getProperty(baseUrlKey, "{{{basePath}}}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,43 +1,43 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class ResponseType {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class ResponseType {
|
||||||
Success, Informational, Redirection, ClientError, ServerError
|
Success, Informational, Redirection, ClientError, ServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}interface Response
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface Response
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}abstract class ApiResponse<T>(val responseType: ResponseType): Response {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract class ApiResponse<T>({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val responseType: ResponseType): Response {
|
||||||
abstract val statusCode: Int
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract val statusCode: Int
|
||||||
abstract val headers: Map<String,List<String>>
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}abstract val headers: Map<String,List<String>>
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Success<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Success<T>(
|
||||||
val data: T{{#nullableReturnType}}?{{/nullableReturnType}},
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val data: T{{#nullableReturnType}}?{{/nullableReturnType}},
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
): ApiResponse<T>(ResponseType.Success)
|
): ApiResponse<T>(ResponseType.Success)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Informational<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Informational<T>(
|
||||||
val statusText: String,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val statusText: String,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.Informational)
|
) : ApiResponse<T>(ResponseType.Informational)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class Redirection<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Redirection<T>(
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.Redirection)
|
) : ApiResponse<T>(ResponseType.Redirection)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ClientError<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ClientError<T>(
|
||||||
val message: String? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val message: String? = null,
|
||||||
val body: Any? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val body: Any? = null,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>> = mapOf()
|
override val headers: Map<String, List<String>> = mapOf()
|
||||||
) : ApiResponse<T>(ResponseType.ClientError)
|
) : ApiResponse<T>(ResponseType.ClientError)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class ServerError<T>(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ServerError<T>(
|
||||||
val message: String? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val message: String? = null,
|
||||||
val body: Any? = null,
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val body: Any? = null,
|
||||||
override val statusCode: Int = -1,
|
override val statusCode: Int = -1,
|
||||||
override val headers: Map<String, List<String>>
|
override val headers: Map<String, List<String>>
|
||||||
): ApiResponse<T>(ResponseType.ServerError)
|
): ApiResponse<T>(ResponseType.ServerError)
|
||||||
|
@ -3,16 +3,16 @@ package {{packageName}}.infrastructure
|
|||||||
|
|
||||||
import java.lang.RuntimeException
|
import java.lang.RuntimeException
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private const val serialVersionUID: Long = 123L
|
private const val serialVersionUID: Long = 123L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private const val serialVersionUID: Long = 456L
|
private const val serialVersionUID: Long = 456L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import {{packageName}}.infrastructure.CollectionFormats.*
|
|||||||
* can pass that to the request queue like:
|
* can pass that to the request queue like:
|
||||||
* Volley.newRequestQueue(context.applicationContext, myCustomHttpStack)
|
* Volley.newRequestQueue(context.applicationContext, myCustomHttpStack)
|
||||||
*/
|
*/
|
||||||
class {{classname}} (
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class {{classname}} (
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val requestQueue: Lazy<RequestQueue> = lazy(initializer = {
|
private val requestQueue: Lazy<RequestQueue> = lazy(initializer = {
|
||||||
Volley.newRequestQueue(context.applicationContext)
|
Volley.newRequestQueue(context.applicationContext)
|
||||||
@ -45,7 +45,7 @@ class {{classname}} (
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@Deprecated("This api was deprecated")
|
@Deprecated("This api was deprecated")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
suspend fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{#-last}}{{#operationAuthMethod}}, opAuthHeaderFactory = () -> map<String, String>{{/operationAuthMethod}}){{/-last}}{{/allParams}}: {{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit{{/returnType}} {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun {{operationId}}({{^allParams}}){{/allParams}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{#-last}}{{#operationAuthMethod}}, opAuthHeaderFactory = () -> map<String, String>{{/operationAuthMethod}}){{/-last}}{{/allParams}}: {{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit{{/returnType}} {
|
||||||
{{#bodyParam}}
|
{{#bodyParam}}
|
||||||
val body: Any? = {{paramName}}
|
val body: Any? = {{paramName}}
|
||||||
{{/bodyParam}}
|
{{/bodyParam}}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// TODO: Not sure about cookie auth form
|
// TODO: Not sure about cookie auth form
|
||||||
// If implementing api key in query parameter use the ^isKeyInHeader property
|
// If implementing api key in query parameter use the ^isKeyInHeader property
|
||||||
|
|
||||||
val apiKeyAuthHeaderFactoryBuilder = {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val apiKeyAuthHeaderFactoryBuilder = {
|
||||||
paramName: String, apiKeyPrefix: String?, apiKey: String? -> {
|
paramName: String, apiKeyPrefix: String?, apiKey: String? -> {
|
||||||
mapOf(paramName to
|
mapOf(paramName to
|
||||||
if (apiKeyPrefix != null) {
|
if (apiKeyPrefix != null) {
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
val basicAuthHeaderFactoryBuilder = { username: String?, password: String? ->
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val basicAuthHeaderFactoryBuilder = { username: String?, password: String? ->
|
||||||
{ mapOf("Authorization" to "Basic " + Base64.encodeToString("${username ?: ""}:${password ?: ""}".toByteArray(), Base64.DEFAULT))}
|
{ mapOf("Authorization" to "Basic " + Base64.encodeToString("${username ?: ""}:${password ?: ""}".toByteArray(), Base64.DEFAULT))}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
val basicAuthHeaderFactoryBuilder = { username: String?, password: String? ->
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val basicAuthHeaderFactoryBuilder = { username: String?, password: String? ->
|
||||||
{
|
{
|
||||||
throw NotImplementedError("OAuth security scheme header factory not implemented yet - see open api generator auth/oauth.mustache")
|
throw NotImplementedError("OAuth security scheme header factory not implemented yet - see open api generator auth/oauth.mustache")
|
||||||
mapOf("" to "")}
|
mapOf("" to "")}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
class CollectionFormats {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class CollectionFormats {
|
||||||
|
|
||||||
open class CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class CSVParams {
|
||||||
|
|
||||||
var params: List<String>
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var params: List<String>
|
||||||
|
|
||||||
constructor(params: List<String>) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) {
|
||||||
this.params = params
|
this.params = params
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(vararg params: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) {
|
||||||
this.params = listOf(*params)
|
this.params = listOf(*params)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,38 +19,38 @@ class CollectionFormats {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class SSVParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class SSVParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString(" ")
|
return params.joinToString(" ")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TSVParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class TSVParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString("\t")
|
return params.joinToString("\t")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PIPESParams : CSVParams {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class PIPESParams : CSVParams {
|
||||||
|
|
||||||
constructor(params: List<String>) : super(params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(params: List<String>) : super(params)
|
||||||
|
|
||||||
constructor(vararg params: String) : super(*params)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(vararg params: String) : super(*params)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return params.joinToString("|")
|
return params.joinToString("|")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SPACEParams : SSVParams()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class SPACEParams : SSVParams()
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,6 @@ package {{packageName}}.infrastructure
|
|||||||
import {{roomModelPackage}}.*
|
import {{roomModelPackage}}.*
|
||||||
|
|
||||||
// TODO ITransformForStorage
|
// TODO ITransformForStorage
|
||||||
interface ITransformForStorage<T> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface ITransformForStorage<T> {
|
||||||
fun toRoomModel(): T
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun toRoomModel(): T
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ import {{packageName}}.infrastructure.LocalDateTimeAdapter
|
|||||||
import {{packageName}}.infrastructure.LocalDateAdapter
|
import {{packageName}}.infrastructure.LocalDateAdapter
|
||||||
import {{packageName}}.infrastructure.ByteArrayAdapter
|
import {{packageName}}.infrastructure.ByteArrayAdapter
|
||||||
|
|
||||||
class GsonRequest<T>(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class GsonRequest<T>(
|
||||||
method: Int,
|
method: Int,
|
||||||
url: String,
|
url: String,
|
||||||
private val body: Any?,
|
private val body: Any?,
|
||||||
@ -35,7 +35,7 @@ class GsonRequest<T>(
|
|||||||
errorListener: Response.ErrorListener
|
errorListener: Response.ErrorListener
|
||||||
) : Request<T>(method, url, errorListener) {
|
) : Request<T>(method, url, errorListener) {
|
||||||
|
|
||||||
val gsonBuilder: GsonBuilder = GsonBuilder()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val gsonBuilder: GsonBuilder = GsonBuilder()
|
||||||
.registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter())
|
.registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter())
|
||||||
.registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter())
|
.registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter())
|
||||||
.registerTypeAdapter(LocalDate::class.java, LocalDateAdapter())
|
.registerTypeAdapter(LocalDate::class.java, LocalDateAdapter())
|
||||||
@ -46,7 +46,7 @@ class GsonRequest<T>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val gson: Gson by lazy {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val gson: Gson by lazy {
|
||||||
gsonBuilder.create()
|
gsonBuilder.create()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,17 +13,17 @@ import java.time.OffsetDateTime
|
|||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
|
||||||
interface IRequestFactory {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface IRequestFactory {
|
||||||
|
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
/**
|
/**
|
||||||
* ISO 8601 date time format.
|
* ISO 8601 date time format.
|
||||||
* @see https://en.wikipedia.org/wiki/ISO_8601
|
* @see https://en.wikipedia.org/wiki/ISO_8601
|
||||||
*/
|
*/
|
||||||
fun formatDateTime(datetime: OffsetDateTime) = DateTimeFormatter.ISO_INSTANT.format(datetime)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun formatDateTime(datetime: OffsetDateTime) = DateTimeFormatter.ISO_INSTANT.format(datetime)
|
||||||
fun formatDate(date: LocalDate) = DateTimeFormatter.ISO_LOCAL_DATE.format(date)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun formatDate(date: LocalDate) = DateTimeFormatter.ISO_LOCAL_DATE.format(date)
|
||||||
|
|
||||||
fun escapeString(str: String): String {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun escapeString(str: String): String {
|
||||||
return try {
|
return try {
|
||||||
URLEncoder.encode(str, "UTF-8")
|
URLEncoder.encode(str, "UTF-8")
|
||||||
} catch (e: UnsupportedEncodingException) {
|
} catch (e: UnsupportedEncodingException) {
|
||||||
@ -31,7 +31,7 @@ interface IRequestFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun parameterToString(param: Any?) =
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun parameterToString(param: Any?) =
|
||||||
when (param) {
|
when (param) {
|
||||||
null -> ""
|
null -> ""
|
||||||
is OffsetDateTime -> formatDateTime(param)
|
is OffsetDateTime -> formatDateTime(param)
|
||||||
@ -50,7 +50,7 @@ interface IRequestFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun <T> build(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <T> build(
|
||||||
method: Int,
|
method: Int,
|
||||||
url : String,
|
url : String,
|
||||||
body: Any?,
|
body: Any?,
|
||||||
|
@ -12,7 +12,7 @@ import java.lang.reflect.Type
|
|||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
class RequestFactory(private val headerFactories : List<() -> Map<String, String>> = listOf(), private val postProcessors :List <(Request<*>) -> Unit> = listOf(), private val gsonAdapters: Map<Type, Any> = mapOf()): IRequestFactory {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class RequestFactory(private val headerFactories : List<() -> Map<String, String>> = listOf(), private val postProcessors :List <(Request<*>) -> Unit> = listOf(), private val gsonAdapters: Map<Type, Any> = mapOf()): IRequestFactory {
|
||||||
{{#hasAuthMethods}}
|
{{#hasAuthMethods}}
|
||||||
|
|
||||||
{{>auth/authentication}}
|
{{>auth/authentication}}
|
||||||
|
@ -16,16 +16,16 @@ import kotlinx.serialization.descriptors.*
|
|||||||
import kotlinx.serialization.encoding.*
|
import kotlinx.serialization.encoding.*
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class {{classname}} : ApiClient {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class {{classname}} : ApiClient {
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String = ApiClient.BASE_URL,
|
baseUrl: String = ApiClient.BASE_URL,
|
||||||
httpClientEngine: HttpClientEngine? = null,
|
httpClientEngine: HttpClientEngine? = null,
|
||||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||||
jsonSerializer: Json = ApiClient.JSON_DEFAULT
|
jsonSerializer: Json = ApiClient.JSON_DEFAULT
|
||||||
) : super(baseUrl = baseUrl, httpClientEngine = httpClientEngine, httpClientConfig = httpClientConfig, jsonBlock = jsonSerializer)
|
) : super(baseUrl = baseUrl, httpClientEngine = httpClientEngine, httpClientConfig = httpClientConfig, jsonBlock = jsonSerializer)
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String,
|
baseUrl: String,
|
||||||
httpClient: HttpClient
|
httpClient: HttpClient
|
||||||
): super(baseUrl = baseUrl, httpClient = httpClient)
|
): super(baseUrl = baseUrl, httpClient = httpClient)
|
||||||
@ -38,7 +38,7 @@ import kotlinx.serialization.encoding.*
|
|||||||
* enum for parameter {{paramName}}
|
* enum for parameter {{paramName}}
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
|
||||||
{{^enumUnknownDefaultCase}}
|
{{^enumUnknownDefaultCase}}
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
@SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
|
@SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
|
||||||
@ -64,7 +64,7 @@ import kotlinx.serialization.encoding.*
|
|||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
{{/returnType}}
|
{{/returnType}}
|
||||||
open suspend fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{defaultValue}}}.toDouble(){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{defaultValue}}}.toDouble(){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): HttpResponse<{{{returnType}}}{{^returnType}}Unit{{/returnType}}> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open suspend fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}{{operationIdCamelCase}}>{{/isContainer}}{{^isContainer}}{{enumName}}{{operationIdCamelCase}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{defaultValue}}}.toDouble(){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{#isEnum}}{{enumName}}{{operationIdCamelCase}}.{{enumDefaultValue}}{{/isEnum}}{{^isEnum}}{{{defaultValue}}}{{/isEnum}}{{/isNumber}}{{#isNumber}}{{{defaultValue}}}.toDouble(){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}): HttpResponse<{{{returnType}}}{{^returnType}}Unit{{/returnType}}> {
|
||||||
|
|
||||||
val localVariableAuthNames = listOf<String>({{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}})
|
val localVariableAuthNames = listOf<String>({{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}})
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class ApiKeyAuth(private val location: String, val paramName: String) : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class ApiKeyAuth(private val location: String, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val paramName: String) : Authentication {
|
||||||
var apiKey: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var apiKey: String? = null
|
||||||
var apiKeyPrefix: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var apiKeyPrefix: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val key: String = apiKey ?: return
|
val key: String = apiKey ?: return
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
interface Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface Authentication {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply authentication settings to header and query params.
|
* Apply authentication settings to header and query params.
|
||||||
@ -8,6 +8,6 @@ interface Authentication {
|
|||||||
* @param query Query parameters.
|
* @param query Query parameters.
|
||||||
* @param headers Header parameters.
|
* @param headers Header parameters.
|
||||||
*/
|
*/
|
||||||
fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@ package {{packageName}}.auth
|
|||||||
import io.ktor.util.InternalAPI
|
import io.ktor.util.InternalAPI
|
||||||
import io.ktor.util.encodeBase64
|
import io.ktor.util.encodeBase64
|
||||||
|
|
||||||
class HttpBasicAuth : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBasicAuth : Authentication {
|
||||||
var username: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var username: String? = null
|
||||||
var password: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var password: String? = null
|
||||||
|
|
||||||
@OptIn(InternalAPI::class)
|
@OptIn(InternalAPI::class)
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class HttpBearerAuth(private val scheme: String?) : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class HttpBearerAuth(private val scheme: String?) : Authentication {
|
||||||
var bearerToken: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var bearerToken: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val token: String = bearerToken ?: return
|
val token: String = bearerToken ?: return
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package {{packageName}}.auth
|
package {{packageName}}.auth
|
||||||
|
|
||||||
class OAuth : Authentication {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OAuth : Authentication {
|
||||||
var accessToken: String? = null
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}var accessToken: String? = null
|
||||||
|
|
||||||
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
|
||||||
val token: String = accessToken ?: return
|
val token: String = accessToken ?: return
|
||||||
|
@ -18,6 +18,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
|
{{#explicitApi}}
|
||||||
|
explicitApi()
|
||||||
|
|
||||||
|
{{/explicitApi}}
|
||||||
jvm()
|
jvm()
|
||||||
iosX64()
|
iosX64()
|
||||||
iosArm64()
|
iosArm64()
|
||||||
|
@ -20,13 +20,13 @@ import kotlinx.serialization.json.Json
|
|||||||
|
|
||||||
import {{packageName}}.auth.*
|
import {{packageName}}.auth.*
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient(
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(
|
||||||
private val baseUrl: String
|
private val baseUrl: String
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private lateinit var client: HttpClient
|
private lateinit var client: HttpClient
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String,
|
baseUrl: String,
|
||||||
httpClientEngine: HttpClientEngine?,
|
httpClientEngine: HttpClientEngine?,
|
||||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||||
@ -42,7 +42,7 @@ import {{packageName}}.auth.*
|
|||||||
client = httpClientEngine?.let { HttpClient(it, clientConfig) } ?: HttpClient(clientConfig)
|
client = httpClientEngine?.let { HttpClient(it, clientConfig) } ?: HttpClient(clientConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}constructor(
|
||||||
baseUrl: String,
|
baseUrl: String,
|
||||||
httpClient: HttpClient
|
httpClient: HttpClient
|
||||||
): this(baseUrl = baseUrl) {
|
): this(baseUrl = baseUrl) {
|
||||||
@ -62,14 +62,14 @@ import {{packageName}}.auth.*
|
|||||||
private val authentications: kotlin.collections.Map<String, Authentication>? = null
|
private val authentications: kotlin.collections.Map<String, Authentication>? = null
|
||||||
{{/hasAuthMethods}}
|
{{/hasAuthMethods}}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
const val BASE_URL = "{{{basePath}}}"
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}const val BASE_URL: String = "{{{basePath}}}"
|
||||||
val JSON_DEFAULT = Json {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val JSON_DEFAULT: Json = Json {
|
||||||
ignoreUnknownKeys = true
|
ignoreUnknownKeys = true
|
||||||
prettyPrint = true
|
prettyPrint = true
|
||||||
isLenient = true
|
isLenient = true
|
||||||
}
|
}
|
||||||
protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType)
|
protected val UNSAFE_HEADERS: List<String> = listOf(HttpHeaders.ContentType)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -77,7 +77,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param username Username
|
* @param username Username
|
||||||
*/
|
*/
|
||||||
fun setUsername(username: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No HTTP basic authentication configured")
|
||||||
auth.username = username
|
auth.username = username
|
||||||
@ -88,7 +88,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param password Password
|
* @param password Password
|
||||||
*/
|
*/
|
||||||
fun setPassword(password: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No HTTP basic authentication configured")
|
||||||
auth.password = password
|
auth.password = password
|
||||||
@ -100,7 +100,7 @@ import {{packageName}}.auth.*
|
|||||||
* @param apiKey API key
|
* @param apiKey API key
|
||||||
* @param paramName The name of the API key parameter, or null or set the first key.
|
* @param paramName The name of the API key parameter, or null or set the first key.
|
||||||
*/
|
*/
|
||||||
fun setApiKey(apiKey: String, paramName: String? = null) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No API key authentication configured")
|
||||||
auth.apiKey = apiKey
|
auth.apiKey = apiKey
|
||||||
@ -112,7 +112,7 @@ import {{packageName}}.auth.*
|
|||||||
* @param apiKeyPrefix API key prefix
|
* @param apiKeyPrefix API key prefix
|
||||||
* @param paramName The name of the API key parameter, or null or set the first key.
|
* @param paramName The name of the API key parameter, or null or set the first key.
|
||||||
*/
|
*/
|
||||||
fun setApiKeyPrefix(apiKeyPrefix: String, paramName: String? = null) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No API key authentication configured")
|
||||||
auth.apiKeyPrefix = apiKeyPrefix
|
auth.apiKeyPrefix = apiKeyPrefix
|
||||||
@ -123,7 +123,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param accessToken Access token
|
* @param accessToken Access token
|
||||||
*/
|
*/
|
||||||
fun setAccessToken(accessToken: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No OAuth2 authentication configured")
|
||||||
auth.accessToken = accessToken
|
auth.accessToken = accessToken
|
||||||
@ -134,7 +134,7 @@ import {{packageName}}.auth.*
|
|||||||
*
|
*
|
||||||
* @param bearerToken The bearer token.
|
* @param bearerToken The bearer token.
|
||||||
*/
|
*/
|
||||||
fun setBearerToken(bearerToken: String) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}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")
|
?: throw Exception("No Bearer authentication configured")
|
||||||
auth.bearerToken = bearerToken
|
auth.bearerToken = bearerToken
|
||||||
|
@ -5,11 +5,11 @@ import kotlinx.serialization.descriptors.*
|
|||||||
import kotlinx.serialization.encoding.*
|
import kotlinx.serialization.encoding.*
|
||||||
|
|
||||||
@Serializable(Base64ByteArray.Companion::class)
|
@Serializable(Base64ByteArray.Companion::class)
|
||||||
class Base64ByteArray(val value: ByteArray) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class Base64ByteArray({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: ByteArray) {
|
||||||
companion object : KSerializer<Base64ByteArray> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object : KSerializer<Base64ByteArray> {
|
||||||
override val descriptor = PrimitiveSerialDescriptor("Base64ByteArray", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Base64ByteArray", PrimitiveKind.STRING)
|
||||||
override fun serialize(encoder: Encoder, obj: Base64ByteArray) = encoder.encodeString(obj.value.encodeBase64())
|
override fun serialize(encoder: Encoder, value: Base64ByteArray): Unit = encoder.encodeString(value.value.encodeBase64())
|
||||||
override fun deserialize(decoder: Decoder) = Base64ByteArray(decoder.decodeString().decodeBase64Bytes())
|
override fun deserialize(decoder: Decoder): Base64ByteArray = Base64ByteArray(decoder.decodeString().decodeBase64Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
|
@ -5,14 +5,14 @@ import io.ktor.http.isSuccess
|
|||||||
import io.ktor.util.reflect.TypeInfo
|
import io.ktor.util.reflect.TypeInfo
|
||||||
import io.ktor.util.reflect.typeInfo
|
import io.ktor.util.reflect.typeInfo
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse<T : Any>(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider<T>) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class HttpResponse<T : Any>({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val response: io.ktor.client.statement.HttpResponse, {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val provider: BodyProvider<T>) {
|
||||||
val status: Int = response.status.value
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val status: Int = response.status.value
|
||||||
val success: Boolean = response.status.isSuccess()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val success: Boolean = response.status.isSuccess()
|
||||||
val headers: Map<String, List<String>> = response.headers.mapEntries()
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val headers: Map<String, List<String>> = response.headers.mapEntries()
|
||||||
suspend fun body(): T = provider.body(response)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun body(): T = provider.body(response)
|
||||||
suspend fun <V : Any> typedBody(type: TypeInfo): V = provider.typedBody(response, type)
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun <V : Any> typedBody(type: TypeInfo): V = provider.typedBody(response, type)
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
private fun Headers.mapEntries(): Map<String, List<String>> {
|
private fun Headers.mapEntries(): Map<String, List<String>> {
|
||||||
val result = mutableMapOf<String, List<String>>()
|
val result = mutableMapOf<String, List<String>>()
|
||||||
entries().forEach { result[it.key] = it.value }
|
entries().forEach { result[it.key] = it.value }
|
||||||
@ -21,12 +21,12 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}interface BodyProvider<T : Any> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}interface BodyProvider<T : Any> {
|
||||||
suspend fun body(response: io.ktor.client.statement.HttpResponse): T
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun body(response: io.ktor.client.statement.HttpResponse): T
|
||||||
suspend fun <V : Any> typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}suspend fun <V : Any> typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class TypedBodyProvider<T : Any>(private val type: TypeInfo) : BodyProvider<T> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class TypedBodyProvider<T : Any>(private val type: TypeInfo) : BodyProvider<T> {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
||||||
response.call.body(type) as T
|
response.call.body(type) as T
|
||||||
@ -36,7 +36,7 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
response.call.body(type) as V
|
response.call.body(type) as V
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}class MappedBodyProvider<S : Any, T : Any>(private val provider: BodyProvider<S>, private val block: S.() -> T) : BodyProvider<T> {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class MappedBodyProvider<S : Any, T : Any>(private val provider: BodyProvider<S>, private val block: S.() -> T) : BodyProvider<T> {
|
||||||
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
override suspend fun body(response: io.ktor.client.statement.HttpResponse): T =
|
||||||
block(provider.body(response))
|
block(provider.body(response))
|
||||||
|
|
||||||
@ -44,8 +44,8 @@ import io.ktor.util.reflect.typeInfo
|
|||||||
provider.typedBody(response, type)
|
provider.typedBody(response, type)
|
||||||
}
|
}
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}inline fun <reified T : Any> io.ktor.client.statement.HttpResponse.wrap(): HttpResponse<T> =
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}inline fun <reified T : Any> io.ktor.client.statement.HttpResponse.wrap(): HttpResponse<T> =
|
||||||
HttpResponse(this, TypedBodyProvider(typeInfo<T>()))
|
HttpResponse(this, TypedBodyProvider(typeInfo<T>()))
|
||||||
|
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}fun <T : Any, V : Any> HttpResponse<T>.map(block: T.() -> V): HttpResponse<V> =
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun <T : Any, V : Any> HttpResponse<T>.map(block: T.() -> V): HttpResponse<V> =
|
||||||
HttpResponse(response, MappedBodyProvider(provider, block))
|
HttpResponse(response, MappedBodyProvider(provider, block))
|
||||||
|
@ -5,11 +5,11 @@ import kotlinx.serialization.descriptors.*
|
|||||||
import kotlinx.serialization.encoding.*
|
import kotlinx.serialization.encoding.*
|
||||||
|
|
||||||
@Serializable(OctetByteArray.Companion::class)
|
@Serializable(OctetByteArray.Companion::class)
|
||||||
class OctetByteArray(val value: ByteArray) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class OctetByteArray({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: ByteArray) {
|
||||||
companion object : KSerializer<OctetByteArray> {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object : KSerializer<OctetByteArray> {
|
||||||
override val descriptor = PrimitiveSerialDescriptor("OctetByteArray", PrimitiveKind.STRING)
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("OctetByteArray", PrimitiveKind.STRING)
|
||||||
override fun serialize(encoder: Encoder, obj: OctetByteArray) = encoder.encodeString(hex(obj.value))
|
override fun serialize(encoder: Encoder, value: OctetByteArray): Unit = encoder.encodeString(hex(value.value))
|
||||||
override fun deserialize(decoder: Decoder) = OctetByteArray(hex(decoder.decodeString()))
|
override fun deserialize(decoder: Decoder): OctetByteArray = OctetByteArray(hex(decoder.decodeString()))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
@Serializable({{operationIdCamelCase}}Request.Companion::class)
|
@Serializable({{operationIdCamelCase}}Request.Companion::class)
|
||||||
private class {{operationIdCamelCase}}Request(val value: List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>) {
|
private class {{operationIdCamelCase}}Request(val value: List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>) {
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Request> {
|
companion object : KSerializer<{{operationIdCamelCase}}Request> {
|
||||||
private val serializer: KSerializer<List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>> = serializer<List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>>()
|
private val serializer: KSerializer<List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>> = serializer<List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>>()
|
||||||
override val descriptor = serializer.descriptor
|
override val descriptor = serializer.descriptor
|
||||||
override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value)
|
override fun serialize(encoder: Encoder, value: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, value.value)
|
||||||
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder))
|
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
@Serializable({{operationIdCamelCase}}Request.Companion::class)
|
@Serializable({{operationIdCamelCase}}Request.Companion::class)
|
||||||
private class {{operationIdCamelCase}}Request(val value: Map<kotlin.String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>) {
|
private class {{operationIdCamelCase}}Request(val value: Map<kotlin.String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>) {
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Request> {
|
companion object : KSerializer<{{operationIdCamelCase}}Request> {
|
||||||
private val serializer: KSerializer<Map<kotlin.String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>> = serializer<Map<String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>>()
|
private val serializer: KSerializer<Map<kotlin.String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>> = serializer<Map<String, {{#bodyParam}}{{baseType}}{{/bodyParam}}>>()
|
||||||
override val descriptor = serializer.descriptor
|
override val descriptor = serializer.descriptor
|
||||||
override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value)
|
override fun serialize(encoder: Encoder, value: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, value.value)
|
||||||
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder))
|
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
@Serializable({{operationIdCamelCase}}Response.Companion::class)
|
@Serializable({{operationIdCamelCase}}Response.Companion::class)
|
||||||
private class {{operationIdCamelCase}}Response(val value: List<{{returnBaseType}}>) {
|
private class {{operationIdCamelCase}}Response(val value: List<{{returnBaseType}}>) {
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Response> {
|
companion object : KSerializer<{{operationIdCamelCase}}Response> {
|
||||||
private val serializer: KSerializer<List<{{returnBaseType}}>> = serializer<List<{{returnBaseType}}>>()
|
private val serializer: KSerializer<List<{{returnBaseType}}>> = serializer<List<{{returnBaseType}}>>()
|
||||||
override val descriptor = serializer.descriptor
|
override val descriptor = serializer.descriptor
|
||||||
override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value)
|
override fun serialize(encoder: Encoder, value: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, value.value)
|
||||||
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder))
|
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
@Serializable({{operationIdCamelCase}}Response.Companion::class)
|
@Serializable({{operationIdCamelCase}}Response.Companion::class)
|
||||||
private class {{operationIdCamelCase}}Response(val value: Map<kotlin.String, {{returnBaseType}}>) {
|
private class {{operationIdCamelCase}}Response(val value: Map<kotlin.String, {{returnBaseType}}>) {
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Response> {
|
companion object : KSerializer<{{operationIdCamelCase}}Response> {
|
||||||
private val serializer: KSerializer<Map<kotlin.String, {{returnBaseType}}>> = serializer<Map<String, {{returnBaseType}}>>()
|
private val serializer: KSerializer<Map<kotlin.String, {{returnBaseType}}>> = serializer<Map<String, {{returnBaseType}}>>()
|
||||||
override val descriptor = serializer.descriptor
|
override val descriptor = serializer.descriptor
|
||||||
override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value)
|
override fun serialize(encoder: Encoder, value: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, value.value)
|
||||||
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder))
|
override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,7 +16,7 @@ import {{modelPackage}}.*
|
|||||||
* @param {{{name}}} {{{description}}}
|
* @param {{{name}}} {{{description}}}
|
||||||
{{/allVars}}
|
{{/allVars}}
|
||||||
*/
|
*/
|
||||||
data class {{classname}}RoomModel (
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}data class {{classname}}RoomModel (
|
||||||
@PrimaryKey(autoGenerate = true) var roomTableId: Int,
|
@PrimaryKey(autoGenerate = true) var roomTableId: Int,
|
||||||
{{#allVars}}{{#items.isPrimitiveType}}var {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInPascalCase}}}{{/items.isEnum}}>{{>model_room_init_var}}{{/isArray}},
|
{{#allVars}}{{#items.isPrimitiveType}}var {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInPascalCase}}}{{/items.isEnum}}>{{>model_room_init_var}}{{/isArray}},
|
||||||
{{/items.isPrimitiveType}}{{/allVars}}
|
{{/items.isPrimitiveType}}{{/allVars}}
|
||||||
|
@ -71,9 +71,9 @@ import java.io.IOException
|
|||||||
@Deprecated(message = "This schema is deprecated.")
|
@Deprecated(message = "This schema is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{>additionalModelTypeAnnotations}}
|
{{>additionalModelTypeAnnotations}}
|
||||||
{{#nonPublicApi}}internal {{/nonPublicApi}}data class {{classname}}(var actualInstance: Any? = null) {
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}data class {{classname}}(var actualInstance: Any? = null) {
|
||||||
|
|
||||||
class CustomTypeAdapterFactory : TypeAdapterFactory {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}class CustomTypeAdapterFactory : TypeAdapterFactory {
|
||||||
override fun <T> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
override fun <T> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
||||||
if (!{{classname}}::class.java.isAssignableFrom(type.rawType)) {
|
if (!{{classname}}::class.java.isAssignableFrom(type.rawType)) {
|
||||||
return null // this class only serializes '{{classname}}' and its subtypes
|
return null // this class only serializes '{{classname}}' and its subtypes
|
||||||
@ -237,7 +237,7 @@ import java.io.IOException
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}companion object {
|
||||||
/**
|
/**
|
||||||
* Validates the JSON Element and throws an exception if issues found
|
* Validates the JSON Element and throws an exception if issues found
|
||||||
*
|
*
|
||||||
@ -245,7 +245,7 @@ import java.io.IOException
|
|||||||
* @throws IOException if the JSON Element is invalid with respect to {{classname}}
|
* @throws IOException if the JSON Element is invalid with respect to {{classname}}
|
||||||
*/
|
*/
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
fun validateJsonElement(jsonElement: JsonElement?) {
|
{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}fun validateJsonElement(jsonElement: JsonElement?) {
|
||||||
requireNotNull(jsonElement) {
|
requireNotNull(jsonElement) {
|
||||||
"Provided json element must not be null"
|
"Provided json element must not be null"
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package org.openapitools.client.infrastructure
|
|||||||
|
|
||||||
typealias MultiValueMap = MutableMap<String,List<String>>
|
typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -12,7 +12,7 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
|||||||
|
|
||||||
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
|
@ -2,7 +2,7 @@ package org.openapitools.client.infrastructure
|
|||||||
|
|
||||||
typealias MultiValueMap = MutableMap<String,List<String>>
|
typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -12,7 +12,7 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
|||||||
|
|
||||||
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
|
@ -159,7 +159,7 @@ class ApiClient(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
protected val baseUrlKey = "org.openapitools.client.baseUrl"
|
protected val baseUrlKey: String = "org.openapitools.client.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultBasePath: String by lazy {
|
val defaultBasePath: String by lazy {
|
||||||
|
@ -2,7 +2,7 @@ package org.openapitools.client.infrastructure
|
|||||||
|
|
||||||
typealias MultiValueMap = MutableMap<String,List<String>>
|
typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -12,7 +12,7 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
|||||||
|
|
||||||
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
|
@ -33,21 +33,21 @@ val EMPTY_REQUEST: RequestBody = ByteArray(0).toRequestBody()
|
|||||||
|
|
||||||
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
||||||
companion object {
|
companion object {
|
||||||
protected const val ContentType = "Content-Type"
|
protected const val ContentType: String = "Content-Type"
|
||||||
protected const val Accept = "Accept"
|
protected const val Accept: String = "Accept"
|
||||||
protected const val Authorization = "Authorization"
|
protected const val Authorization: String = "Authorization"
|
||||||
protected const val JsonMediaType = "application/json"
|
protected const val JsonMediaType: String = "application/json"
|
||||||
protected const val FormDataMediaType = "multipart/form-data"
|
protected const val FormDataMediaType: String = "multipart/form-data"
|
||||||
protected const val FormUrlEncMediaType = "application/x-www-form-urlencoded"
|
protected const val FormUrlEncMediaType: String = "application/x-www-form-urlencoded"
|
||||||
protected const val XmlMediaType = "application/xml"
|
protected const val XmlMediaType: String = "application/xml"
|
||||||
protected const val OctetMediaType = "application/octet-stream"
|
protected const val OctetMediaType: String = "application/octet-stream"
|
||||||
|
|
||||||
val apiKey: MutableMap<String, String> = mutableMapOf()
|
val apiKey: MutableMap<String, String> = mutableMapOf()
|
||||||
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
||||||
var username: String? = null
|
var username: String? = null
|
||||||
var password: String? = null
|
var password: String? = null
|
||||||
var accessToken: String? = null
|
var accessToken: String? = null
|
||||||
const val baseUrlKey = "org.openapitools.client.baseUrl"
|
const val baseUrlKey: String = "org.openapitools.client.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultClient: OkHttpClient by lazy {
|
val defaultClient: OkHttpClient by lazy {
|
||||||
|
@ -6,7 +6,7 @@ import java.net.URI
|
|||||||
|
|
||||||
class URIAdapter {
|
class URIAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uri: URI) = uri.toString()
|
fun toJson(uri: URI): String = uri.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): URI = URI.create(s)
|
fun fromJson(s: String): URI = URI.create(s)
|
||||||
|
@ -6,7 +6,7 @@ import java.util.UUID
|
|||||||
|
|
||||||
class UUIDAdapter {
|
class UUIDAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
fun toJson(uuid: UUID): String = uuid.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): UUID = UUID.fromString(s)
|
fun fromJson(s: String): UUID = UUID.fromString(s)
|
||||||
|
@ -2,7 +2,7 @@ package org.openapitools.client.infrastructure
|
|||||||
|
|
||||||
typealias MultiValueMap = MutableMap<String,List<String>>
|
typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -12,7 +12,7 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
|||||||
|
|
||||||
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
|
@ -33,21 +33,21 @@ val EMPTY_REQUEST: RequestBody = ByteArray(0).toRequestBody()
|
|||||||
|
|
||||||
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
||||||
companion object {
|
companion object {
|
||||||
protected const val ContentType = "Content-Type"
|
protected const val ContentType: String = "Content-Type"
|
||||||
protected const val Accept = "Accept"
|
protected const val Accept: String = "Accept"
|
||||||
protected const val Authorization = "Authorization"
|
protected const val Authorization: String = "Authorization"
|
||||||
protected const val JsonMediaType = "application/json"
|
protected const val JsonMediaType: String = "application/json"
|
||||||
protected const val FormDataMediaType = "multipart/form-data"
|
protected const val FormDataMediaType: String = "multipart/form-data"
|
||||||
protected const val FormUrlEncMediaType = "application/x-www-form-urlencoded"
|
protected const val FormUrlEncMediaType: String = "application/x-www-form-urlencoded"
|
||||||
protected const val XmlMediaType = "application/xml"
|
protected const val XmlMediaType: String = "application/xml"
|
||||||
protected const val OctetMediaType = "application/octet-stream"
|
protected const val OctetMediaType: String = "application/octet-stream"
|
||||||
|
|
||||||
val apiKey: MutableMap<String, String> = mutableMapOf()
|
val apiKey: MutableMap<String, String> = mutableMapOf()
|
||||||
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
||||||
var username: String? = null
|
var username: String? = null
|
||||||
var password: String? = null
|
var password: String? = null
|
||||||
var accessToken: String? = null
|
var accessToken: String? = null
|
||||||
const val baseUrlKey = "org.openapitools.client.baseUrl"
|
const val baseUrlKey: String = "org.openapitools.client.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultClient: OkHttpClient by lazy {
|
val defaultClient: OkHttpClient by lazy {
|
||||||
|
@ -6,7 +6,7 @@ import java.net.URI
|
|||||||
|
|
||||||
class URIAdapter {
|
class URIAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uri: URI) = uri.toString()
|
fun toJson(uri: URI): String = uri.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): URI = URI.create(s)
|
fun fromJson(s: String): URI = URI.create(s)
|
||||||
|
@ -6,7 +6,7 @@ import java.util.UUID
|
|||||||
|
|
||||||
class UUIDAdapter {
|
class UUIDAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
fun toJson(uuid: UUID): String = uuid.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): UUID = UUID.fromString(s)
|
fun fromJson(s: String): UUID = UUID.fromString(s)
|
||||||
|
@ -2,7 +2,7 @@ package org.openapitools.client.infrastructure
|
|||||||
|
|
||||||
typealias MultiValueMap = MutableMap<String,List<String>>
|
typealias MultiValueMap = MutableMap<String,List<String>>
|
||||||
|
|
||||||
fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
fun collectionDelimiter(collectionFormat: String): String = when(collectionFormat) {
|
||||||
"csv" -> ","
|
"csv" -> ","
|
||||||
"tsv" -> "\t"
|
"tsv" -> "\t"
|
||||||
"pipe" -> "|"
|
"pipe" -> "|"
|
||||||
@ -12,7 +12,7 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
|
|||||||
|
|
||||||
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
|
fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String>
|
||||||
= toMultiValue(items.asIterable(), collectionFormat, map)
|
= toMultiValue(items.asIterable(), collectionFormat, map)
|
||||||
|
|
||||||
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
|
||||||
|
@ -33,21 +33,21 @@ val EMPTY_REQUEST: RequestBody = ByteArray(0).toRequestBody()
|
|||||||
|
|
||||||
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
open class ApiClient(val baseUrl: String, val client: Call.Factory = defaultClient) {
|
||||||
companion object {
|
companion object {
|
||||||
protected const val ContentType = "Content-Type"
|
protected const val ContentType: String = "Content-Type"
|
||||||
protected const val Accept = "Accept"
|
protected const val Accept: String = "Accept"
|
||||||
protected const val Authorization = "Authorization"
|
protected const val Authorization: String = "Authorization"
|
||||||
protected const val JsonMediaType = "application/json"
|
protected const val JsonMediaType: String = "application/json"
|
||||||
protected const val FormDataMediaType = "multipart/form-data"
|
protected const val FormDataMediaType: String = "multipart/form-data"
|
||||||
protected const val FormUrlEncMediaType = "application/x-www-form-urlencoded"
|
protected const val FormUrlEncMediaType: String = "application/x-www-form-urlencoded"
|
||||||
protected const val XmlMediaType = "application/xml"
|
protected const val XmlMediaType: String = "application/xml"
|
||||||
protected const val OctetMediaType = "application/octet-stream"
|
protected const val OctetMediaType: String = "application/octet-stream"
|
||||||
|
|
||||||
val apiKey: MutableMap<String, String> = mutableMapOf()
|
val apiKey: MutableMap<String, String> = mutableMapOf()
|
||||||
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
val apiKeyPrefix: MutableMap<String, String> = mutableMapOf()
|
||||||
var username: String? = null
|
var username: String? = null
|
||||||
var password: String? = null
|
var password: String? = null
|
||||||
var accessToken: String? = null
|
var accessToken: String? = null
|
||||||
const val baseUrlKey = "org.openapitools.client.baseUrl"
|
const val baseUrlKey: String = "org.openapitools.client.baseUrl"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultClient: OkHttpClient by lazy {
|
val defaultClient: OkHttpClient by lazy {
|
||||||
|
@ -6,7 +6,7 @@ import java.net.URI
|
|||||||
|
|
||||||
class URIAdapter {
|
class URIAdapter {
|
||||||
@ToJson
|
@ToJson
|
||||||
fun toJson(uri: URI) = uri.toString()
|
fun toJson(uri: URI): String = uri.toString()
|
||||||
|
|
||||||
@FromJson
|
@FromJson
|
||||||
fun fromJson(s: String): URI = URI.create(s)
|
fun fromJson(s: String): URI = URI.create(s)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user