Reuse OkHttp instance

This commit is contained in:
Kirill Kamakin
2021-11-20 22:23:51 +03:00
parent a6e948ca6b
commit dd9c302729
7 changed files with 63 additions and 33 deletions

View File

@@ -1,18 +1,29 @@
package gq.kirmanak.mealient.data.auth.impl
import gq.kirmanak.mealient.data.auth.AuthStorage
import kotlinx.coroutines.runBlocking
import okhttp3.Interceptor
import okhttp3.Response
import timber.log.Timber
import javax.inject.Inject
const val AUTHORIZATION_HEADER = "Authorization"
class AuthOkHttpInterceptor(token: String) : Interceptor {
private val headerValue = "Bearer $token"
class AuthOkHttpInterceptor @Inject constructor(
private val authStorage: AuthStorage
) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val newRequest = chain.request()
.newBuilder()
.addHeader(AUTHORIZATION_HEADER, headerValue)
.build()
return chain.proceed(newRequest)
Timber.v("intercept() called with: chain = $chain")
val token = runBlocking { authStorage.getToken() }
Timber.d("intercept: token = $token")
val request = if (token.isNullOrBlank()) {
chain.request()
} else {
chain.request()
.newBuilder()
.addHeader(AUTHORIZATION_HEADER, "Bearer $token")
.build()
}
return chain.proceed(request)
}
}