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,
}