Skip to content

Commit

Permalink
Merge branch 'main' into feat/add-missing-resources
Browse files Browse the repository at this point in the history
  • Loading branch information
verbotenj authored Dec 11, 2024
2 parents ca95278 + 67f8d13 commit 3b744e9
Show file tree
Hide file tree
Showing 874 changed files with 60,879 additions and 22,732 deletions.
36 changes: 17 additions & 19 deletions airbyte-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,24 @@ plugins {
id("io.airbyte.gradle.jvm.lib")
}

airbyte {
spotless {
excludes = listOf(
project(":oss:airbyte-api:workload-api").file("src/main/openapi/workload-openapi.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api.yaml").path,

project(":oss:airbyte-api:server-api").file("src/main/openapi/api_sdk.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_terraform.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_connections.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_sources.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_destinations.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_streams.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_jobs.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_workspaces.yaml").path,
)
}
dependencies {
project.subprojects.forEach { implementation(project(it.path)) }
}

dependencies {
project.subprojects.forEach { subProject ->
implementation(project(subProject.path))
airbyte {
spotless {
excludes =
listOf(
project(":oss:airbyte-api:workload-api").file("src/main/openapi/workload-openapi.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_sdk.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_terraform.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_connections.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_sources.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_destinations.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_streams.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_jobs.yaml").path,
project(":oss:airbyte-api:server-api").file("src/main/openapi/api_documentation_workspaces.yaml").path,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ package io.airbyte.api.client.auth
import io.github.oshai.kotlinlogging.KotlinLogging
import io.micronaut.context.annotation.Requires
import io.micronaut.http.HttpHeaders
import io.micronaut.http.exceptions.HttpException
import io.micronaut.security.oauth2.client.clientcredentials.ClientCredentialsClient
import jakarta.inject.Named
import jakarta.inject.Singleton
import okhttp3.Interceptor
import okhttp3.Request
import okhttp3.Response
import reactor.core.publisher.Mono
import reactor.util.retry.Retry
import java.time.Duration

private val logger = KotlinLogging.logger {}

Expand All @@ -26,25 +29,36 @@ private val logger = KotlinLogging.logger {}
class KeycloakAccessTokenInterceptor(
@Named("keycloak") private val clientCredentialsClient: ClientCredentialsClient,
) : AirbyteApiInterceptor {
override fun intercept(chain: Interceptor.Chain): Response =
private fun fetchAccessToken(): Mono<String?> {
return Mono.defer { Mono.from(clientCredentialsClient.requestToken()) }
.map { it.accessToken }
.retryWhen(
Retry
.backoff(3, Duration.ofSeconds(1))
.filter { it is HttpException },
)
}

override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest: Request = chain.request()
val builder: Request.Builder = originalRequest.newBuilder()

try {
logger.debug { "Intercepting request to add Keycloak access token..." }
val originalRequest: Request = chain.request()
val builder: Request.Builder = originalRequest.newBuilder()
val tokenResponse = Mono.from(clientCredentialsClient.requestToken()).block()
val accessToken = tokenResponse?.accessToken
val accessToken = fetchAccessToken().block()
if (accessToken != null) {
builder.addHeader(HttpHeaders.AUTHORIZATION, "Bearer $accessToken")
logger.debug { "Added access token to header $accessToken" }
chain.proceed(builder.build())
} else {
logger.error { "Failed to obtain access token from Keycloak" }
chain.proceed(originalRequest)
}
} catch (e: Exception) {
logger.error(e) { "Failed to add Keycloak access token to request" }
// do not throw exception, just proceed with the original request and let the request fail
// authorization downstream.
chain.proceed(chain.request())
return chain.proceed(originalRequest)
}

return chain.proceed(builder.build())
}
}
Loading

0 comments on commit 3b744e9

Please sign in to comment.