@@ -18,8 +18,10 @@ package io.getstream.android.core.api
1818import io.getstream.android.core.annotations.StreamCoreApi
1919import io.getstream.android.core.api.authentication.StreamTokenManager
2020import io.getstream.android.core.api.authentication.StreamTokenProvider
21+ import io.getstream.android.core.api.http.StreamOkHttpInterceptors
2122import io.getstream.android.core.api.log.StreamLoggerProvider
2223import io.getstream.android.core.api.model.config.StreamClientSerializationConfig
24+ import io.getstream.android.core.api.model.config.StreamHttpConfig
2325import io.getstream.android.core.api.model.config.StreamSocketConfig
2426import io.getstream.android.core.api.model.connection.StreamConnectedUser
2527import io.getstream.android.core.api.model.connection.StreamConnectionState
@@ -40,6 +42,9 @@ import io.getstream.android.core.api.socket.monitor.StreamHealthMonitor
4042import io.getstream.android.core.api.subscribe.StreamSubscription
4143import io.getstream.android.core.api.subscribe.StreamSubscriptionManager
4244import io.getstream.android.core.internal.client.StreamClientImpl
45+ import io.getstream.android.core.internal.http.interceptor.StreamApiKeyInterceptor
46+ import io.getstream.android.core.internal.http.interceptor.StreamAuthInterceptor
47+ import io.getstream.android.core.internal.http.interceptor.StreamConnectionIdInterceptor
4348import io.getstream.android.core.internal.serialization.StreamCompositeEventSerializationImpl
4449import io.getstream.android.core.internal.serialization.StreamCompositeMoshiJsonSerialization
4550import io.getstream.android.core.internal.serialization.StreamMoshiJsonSerializationImpl
@@ -50,6 +55,7 @@ import kotlinx.coroutines.Job
5055import kotlinx.coroutines.SupervisorJob
5156import kotlinx.coroutines.flow.MutableStateFlow
5257import kotlinx.coroutines.flow.StateFlow
58+ import okhttp3.OkHttpClient
5359
5460/* *
5561 * Entry point for establishing and managing a connection to Stream services.
@@ -190,6 +196,7 @@ interface StreamClient {
190196 * @param tokenManager The token manager.
191197 * @param singleFlight The single-flight processor.
192198 * @param serialQueue The serial processing queue.
199+ * @param httpConfig The HTTP configuration.
193200 * @param retryProcessor The retry processor.
194201 * @param connectionIdHolder The connection ID holder.
195202 * @param socketFactory The WebSocket factory.
@@ -218,6 +225,8 @@ fun StreamClient(
218225 socketFactory : StreamWebSocketFactory ,
219226 healthMonitor : StreamHealthMonitor ,
220227 batcher : StreamBatcher <String >,
228+ // Http
229+ httpConfig : StreamHttpConfig ? = null,
221230 // Serialization
222231 serializationConfig : StreamClientSerializationConfig ,
223232 // Logging
@@ -248,6 +257,21 @@ fun StreamClient(
248257 StreamMoshiJsonSerializationImpl (StreamCoreMoshiProvider ().builder {}.build()),
249258 serializationConfig.json,
250259 )
260+
261+ httpConfig?.apply {
262+ if (automaticInterceptors) {
263+ httpBuilder.apply {
264+ addInterceptor(StreamOkHttpInterceptors .clientInfo(clientInfoHeader))
265+ addInterceptor(StreamOkHttpInterceptors .apiKey(apiKey))
266+ addInterceptor(StreamOkHttpInterceptors .auth( " jwt" , tokenManager, compositeSerialization))
267+ addInterceptor(StreamOkHttpInterceptors .connectionId(connectionIdHolder))
268+ }
269+ }
270+ configuredInterceptors.forEach {
271+ httpBuilder.addInterceptor(it)
272+ }
273+ }
274+
251275 return StreamClientImpl (
252276 userId = userId,
253277 scope = clientScope,
0 commit comments