openapi-nexus 0.1.1

OpenAPI 3.x multi-language code generator
Documentation
package runtime

import okhttp3.Request

interface Authenticator {
    fun authenticate(builder: Request.Builder)
}

class BearerAuth(private val token: String) : Authenticator {
    override fun authenticate(builder: Request.Builder) {
        builder.header("Authorization", "Bearer $token")
    }
}

class ApiKeyAuth(
    private val key: String,
    private val name: String,
    private val location: ApiKeyLocation,
) : Authenticator {
    override fun authenticate(builder: Request.Builder) {
        when (location) {
            ApiKeyLocation.HEADER -> builder.header(name, key)
            ApiKeyLocation.QUERY -> {
                val url = builder.build().url.newBuilder()
                    .addQueryParameter(name, key)
                    .build()
                builder.url(url)
            }
        }
    }
}

enum class ApiKeyLocation {
    HEADER,
    QUERY,
}