Updated on 2026-08-14
This commit is contained in:
parent
0551a8f2fe
commit
9cc51216bc
5 changed files with 57 additions and 12 deletions
|
|
@ -0,0 +1,35 @@
|
|||
package com.tangem.datasource.utils
|
||||
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.Response
|
||||
|
||||
/**
|
||||
* Interceptors for adding headers
|
||||
*
|
||||
* @property requestHeaders request headers
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class AddHeadersInterceptor(
|
||||
private val requestHeaders: Set<RequestHeader>,
|
||||
) : Interceptor {
|
||||
|
||||
constructor(requestHeader: RequestHeader) : this(requestHeaders = setOf(requestHeader))
|
||||
|
||||
override fun intercept(chain: Interceptor.Chain): Response {
|
||||
val requestBuilder = chain.request().newBuilder()
|
||||
|
||||
requestHeaders
|
||||
.flatMap { it.values.toList() }
|
||||
.forEach { (name, valueProvider) ->
|
||||
val value = runBlocking { valueProvider() }
|
||||
|
||||
requestBuilder.addHeader(name = name, value = value)
|
||||
}
|
||||
|
||||
val request = requestBuilder.build()
|
||||
|
||||
return chain.proceed(request)
|
||||
}
|
||||
}
|
||||
|
|
@ -19,15 +19,7 @@ import retrofit2.Invocation
|
|||
/** Extension for adding headers [requestHeaders] to every [OkHttpClient] request */
|
||||
internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeader): OkHttpClient.Builder {
|
||||
return addInterceptor(
|
||||
Interceptor { chain ->
|
||||
val request = chain.request().newBuilder().apply {
|
||||
requestHeaders
|
||||
.flatMap { it.values.toList() }
|
||||
.forEach { addHeader(it.first, runBlocking { it.second.invoke() }) }
|
||||
}.build()
|
||||
|
||||
chain.proceed(request)
|
||||
},
|
||||
interceptor = AddHeadersInterceptor(requestHeaders = requestHeaders.toSet()),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue