From 8985eb9c757610aa94353573d73296ab8471a5e2 Mon Sep 17 00:00:00 2001 From: Jeff Hwang Date: Tue, 19 Aug 2025 13:59:04 -0400 Subject: [PATCH] add service name --- .../client/EnvoyCallbackConnectorProvider.kt | 7 ++++--- .../client/GrpcCallbackConnectorProvider.kt | 2 ++ .../client/HttpCallbackConnectorProvider.kt | 1 + .../client/ServiceNameHeaderInterceptor.kt | 21 +++++++++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 service/src/main/kotlin/app/cash/backfila/client/ServiceNameHeaderInterceptor.kt diff --git a/service/src/main/kotlin/app/cash/backfila/client/EnvoyCallbackConnectorProvider.kt b/service/src/main/kotlin/app/cash/backfila/client/EnvoyCallbackConnectorProvider.kt index 892f38a72..59d6967a5 100644 --- a/service/src/main/kotlin/app/cash/backfila/client/EnvoyCallbackConnectorProvider.kt +++ b/service/src/main/kotlin/app/cash/backfila/client/EnvoyCallbackConnectorProvider.kt @@ -58,11 +58,12 @@ class EnvoyCallbackConnectorProvider @Inject constructor( val httpClientEndpointConfig = httpClientsConfig[baseUrl] var okHttpClient = httpClientFactory.create(httpClientEndpointConfig) + val okHttpClientBuilder = okHttpClient.newBuilder() + okHttpClientBuilder.addInterceptor(ServiceNameHeaderInterceptor(serviceName)) if (!headers.isNullOrEmpty()) { - okHttpClient = okHttpClient.newBuilder() - .addInterceptor(OkHttpClientSpecifiedHeadersInterceptor(headers)) - .build() + okHttpClientBuilder.addInterceptor(OkHttpClientSpecifiedHeadersInterceptor(headers)) } + okHttpClient = okHttpClientBuilder.build() val retrofit = Retrofit.Builder() .baseUrl(baseUrl) diff --git a/service/src/main/kotlin/app/cash/backfila/client/GrpcCallbackConnectorProvider.kt b/service/src/main/kotlin/app/cash/backfila/client/GrpcCallbackConnectorProvider.kt index fa84d3cf1..c7aed4a74 100644 --- a/service/src/main/kotlin/app/cash/backfila/client/GrpcCallbackConnectorProvider.kt +++ b/service/src/main/kotlin/app/cash/backfila/client/GrpcCallbackConnectorProvider.kt @@ -53,6 +53,8 @@ class GrpcCallbackConnectorProvider @Inject constructor( val baseUrl = httpClientConfigUrlProvider.getUrl(httpClientEndpointConfig) val okHttpClientBuilder = httpClientFactory.create(httpClientEndpointConfig).newBuilder() + + okHttpClientBuilder.addInterceptor(ServiceNameHeaderInterceptor(serviceName)) if (!headers.isNullOrEmpty()) { okHttpClientBuilder.addInterceptor(OkHttpClientSpecifiedHeadersInterceptor(headers)) } diff --git a/service/src/main/kotlin/app/cash/backfila/client/HttpCallbackConnectorProvider.kt b/service/src/main/kotlin/app/cash/backfila/client/HttpCallbackConnectorProvider.kt index 5b861db41..d2be6bf7e 100644 --- a/service/src/main/kotlin/app/cash/backfila/client/HttpCallbackConnectorProvider.kt +++ b/service/src/main/kotlin/app/cash/backfila/client/HttpCallbackConnectorProvider.kt @@ -57,6 +57,7 @@ class HttpCallbackConnectorProvider @Inject constructor( addNetworkInterceptor(it) } } + okHttpClientBuilder.addInterceptor(ServiceNameHeaderInterceptor(serviceName)) if (!headers.isNullOrEmpty()) { okHttpClientBuilder.addInterceptor(OkHttpClientSpecifiedHeadersInterceptor(headers)) } diff --git a/service/src/main/kotlin/app/cash/backfila/client/ServiceNameHeaderInterceptor.kt b/service/src/main/kotlin/app/cash/backfila/client/ServiceNameHeaderInterceptor.kt new file mode 100644 index 000000000..566306b6b --- /dev/null +++ b/service/src/main/kotlin/app/cash/backfila/client/ServiceNameHeaderInterceptor.kt @@ -0,0 +1,21 @@ +package app.cash.backfila.client + +import okhttp3.Interceptor +import okhttp3.Response + +/** + * Adds service name header to HTTP requests for service identification. + * This allows downstream systems to identify which service made the request. + */ +class ServiceNameHeaderInterceptor( + private val serviceName: String, +) : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + .newBuilder() + .header("X-Forwarded-Service", serviceName) + .build() + + return chain.proceed(request) + } +}