Skip to content

Commit

Permalink
Support library option via additionalProperties (#16242)
Browse files Browse the repository at this point in the history
* set library option obtain from additionalProperties

* test library

* update samples

* remove old files
  • Loading branch information
wing328 committed Aug 5, 2023
1 parent 6f05655 commit d9e32a7
Show file tree
Hide file tree
Showing 127 changed files with 3,587 additions and 609 deletions.
2 changes: 1 addition & 1 deletion bin/configs/java-resteasy.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
generatorName: java
outputDir: samples/client/petstore/java/resteasy
library: resteasy
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/Java
additionalProperties:
artifactId: petstore-resteasy
hideGenerationTimestamp: "true"
library: resteasy
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,11 @@ public ClientOptInput toClientOptInput() {
config.additionalProperties().put(CodegenConstants.TEMPLATE_DIR, workflowSettings.getTemplateDir());
}

// if library is found in additionalProperties, set the library option accordingly
if (config.additionalProperties().containsKey("library")) {
config.setLibrary(String.valueOf(config.additionalProperties().get("library")));
}

ClientOptInput input = new ClientOptInput()
.config(config)
.userDefinedTemplates(userDefinedTemplates);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ gradlew
gradlew.bat
settings.gradle
src/main/AndroidManifest.xml
src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt
src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt
src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt
src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
src/main/kotlin/org/openapitools/client/request/GsonRequest.kt
src/main/kotlin/org/openapitools/client/request/IRequestFactory.kt
src/main/kotlin/org/openapitools/client/request/RequestFactory.kt
src/main/java/org/openapitools/client/apis/DefaultApi.kt
src/main/java/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
src/main/java/org/openapitools/client/infrastructure/CollectionFormats.kt
src/main/java/org/openapitools/client/infrastructure/CollectionFormats.kt
src/main/java/org/openapitools/client/infrastructure/LocalDateAdapter.kt
src/main/java/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
src/main/java/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
src/main/java/org/openapitools/client/request/GsonRequest.kt
src/main/java/org/openapitools/client/request/IRequestFactory.kt
src/main/java/org/openapitools/client/request/RequestFactory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@ gradle/wrapper/gradle-wrapper.properties
gradlew
gradlew.bat
settings.gradle.kts
src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt
src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt
src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
src/commonTest/kotlin/util/Coroutine.kt
src/iosTest/kotlin/util/Coroutine.kt
src/jsTest/kotlin/util/Coroutine.kt
src/jvmTest/kotlin/util/Coroutine.kt
src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt
src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt
src/main/kotlin/org/openapitools/client/auth/Authentication.kt
src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt
src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt
src/main/kotlin/org/openapitools/client/auth/OAuth.kt
src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
src/main/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt
src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt
src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt
src/main/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt
src/main/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/**
*
* Please note:
* This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* Do not edit this file manually.
*
*/

@file:Suppress(
"ArrayInDataClass",
"EnumEntryName",
"RemoveRedundantQualifierName",
"UnusedImport"
)

package org.openapitools.client.apis


import org.openapitools.client.infrastructure.*
import io.ktor.client.HttpClientConfig
import io.ktor.client.request.forms.formData
import io.ktor.client.engine.HttpClientEngine
import kotlinx.serialization.json.Json
import io.ktor.http.ParametersBuilder
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*

open class DefaultApi(
baseUrl: String = ApiClient.BASE_URL,
httpClientEngine: HttpClientEngine? = null,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
jsonSerializer: Json = ApiClient.JSON_DEFAULT
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {

/**
*
*
* @param ids
* @return void
*/
open suspend fun idsGet(ids: kotlin.collections.List<kotlin.String>): HttpResponse<Unit> {

val localVariableAuthNames = listOf<String>()

val localVariableBody =
io.ktor.client.utils.EmptyContent

val localVariableQuery = mutableMapOf<String, List<String>>()
val localVariableHeaders = mutableMapOf<String, String>()

val localVariableConfig = RequestConfig<kotlin.Any?>(
RequestMethod.GET,
"/{ids}".replace("{" + "ids" + "}", ids.joinToString(",")),
query = localVariableQuery,
headers = localVariableHeaders,
requiresAuthentication = false,
)

return request(
localVariableConfig,
localVariableBody,
localVariableAuthNames
).wrap()
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@ gradle/wrapper/gradle-wrapper.properties
gradlew
gradlew.bat
settings.gradle.kts
src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt
src/commonMain/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/Authentication.kt
src/commonMain/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt
src/commonMain/kotlin/org/openapitools/client/auth/OAuth.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
src/commonMain/kotlin/org/openapitools/client/models/Apa.kt
src/commonTest/kotlin/util/Coroutine.kt
src/iosTest/kotlin/util/Coroutine.kt
src/jsTest/kotlin/util/Coroutine.kt
src/jvmTest/kotlin/util/Coroutine.kt
src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt
src/main/kotlin/org/openapitools/client/auth/ApiKeyAuth.kt
src/main/kotlin/org/openapitools/client/auth/Authentication.kt
src/main/kotlin/org/openapitools/client/auth/HttpBasicAuth.kt
src/main/kotlin/org/openapitools/client/auth/HttpBearerAuth.kt
src/main/kotlin/org/openapitools/client/auth/OAuth.kt
src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
src/main/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt
src/main/kotlin/org/openapitools/client/infrastructure/Bytes.kt
src/main/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt
src/main/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt
src/main/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
src/main/kotlin/org/openapitools/client/models/Apa.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/**
*
* Please note:
* This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* Do not edit this file manually.
*
*/

@file:Suppress(
"ArrayInDataClass",
"EnumEntryName",
"RemoveRedundantQualifierName",
"UnusedImport"
)

package org.openapitools.client.apis

import org.openapitools.client.models.Apa

import org.openapitools.client.infrastructure.*
import io.ktor.client.HttpClientConfig
import io.ktor.client.request.forms.formData
import io.ktor.client.engine.HttpClientEngine
import kotlinx.serialization.json.Json
import io.ktor.http.ParametersBuilder
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*

open class DefaultApi(
baseUrl: String = ApiClient.BASE_URL,
httpClientEngine: HttpClientEngine? = null,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
jsonSerializer: Json = ApiClient.JSON_DEFAULT
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {

/**
*
*
* @param apa
* @return void
*/
open suspend fun testPost(apa: Apa): HttpResponse<Unit> {

val localVariableAuthNames = listOf<String>()

val localVariableBody = apa

val localVariableQuery = mutableMapOf<String, List<String>>()
val localVariableHeaders = mutableMapOf<String, String>()

val localVariableConfig = RequestConfig<kotlin.Any?>(
RequestMethod.POST,
"/test",
query = localVariableQuery,
headers = localVariableHeaders,
requiresAuthentication = false,
)

return jsonRequest(
localVariableConfig,
localVariableBody,
localVariableAuthNames
).wrap()
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.openapitools.client.auth

class ApiKeyAuth(private val location: String, val paramName: String) : Authentication {
var apiKey: String? = null
var apiKeyPrefix: String? = null

override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
val key: String = apiKey ?: return
val prefix: String? = apiKeyPrefix
val value: String = if (prefix != null) "$prefix $key" else key
when (location) {
"query" -> query[paramName] = listOf(value)
"header" -> headers[paramName] = value
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.openapitools.client.auth

interface Authentication {

/**
* Apply authentication settings to header and query params.
*
* @param query Query parameters.
* @param headers Header parameters.
*/
fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>)

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.openapitools.client.auth

import io.ktor.util.InternalAPI
import io.ktor.util.encodeBase64

class HttpBasicAuth : Authentication {
var username: String? = null
var password: String? = null

@OptIn(InternalAPI::class)
override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
if (username == null && password == null) return
val str = (username ?: "") + ":" + (password ?: "")
val auth = str.encodeBase64()
headers["Authorization"] = "Basic $auth"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.openapitools.client.auth

class HttpBearerAuth(private val scheme: String?) : Authentication {
var bearerToken: String? = null

override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
val token: String = bearerToken ?: return
headers["Authorization"] = (if (scheme != null) upperCaseBearer(scheme)!! + " " else "") + token
}

private fun upperCaseBearer(scheme: String): String? {
return if ("bearer".equals(scheme, ignoreCase = true)) "Bearer" else scheme
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.openapitools.client.auth

class OAuth : Authentication {
var accessToken: String? = null

override fun apply(query: MutableMap<String, List<String>>, headers: MutableMap<String, String>) {
val token: String = accessToken ?: return
headers["Authorization"] = "Bearer $token"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.openapitools.client.infrastructure

typealias MultiValueMap = MutableMap<String,List<String>>

fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
"csv" -> ","
"tsv" -> "\t"
"pipe" -> "|"
"space" -> " "
else -> ""
}

val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }

fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
= toMultiValue(items.asIterable(), collectionFormat, map)

fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
return when(collectionFormat) {
"multi" -> items.map(map)
else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
}
}
Loading

0 comments on commit d9e32a7

Please sign in to comment.