fun Auth.token(block: TokenAuthConfig.() -> Unit) { val config = TokenAuthConfig().apply(block) providers.add(TokenAuthProvider(config.secret, config.prefix)) } class TokenAuthConfig { /** * Required: The token to provide. */ lateinit var secret: String /** * The prefix to use. Defaults to `Bearer` */ var prefix: String = "Bearer" } /** * Client bearer/auth token authentication provider. */ class TokenAuthProvider( private val secret: String, private val prefix: String, ) : AuthProvider { override val sendWithoutRequest = true override fun isApplicable(auth: HttpAuthHeader) = true override suspend fun addRequestHeaders(request: HttpRequestBuilder) { request.headers[HttpHeaders.Authorization] = "$prefix $secret" } }