Updated on 2026-08-14

This commit is contained in:
Tangem 2025-01-27 12:23:42 +03:00
parent 11c0834815
commit d27c57cd84
20 changed files with 279 additions and 93 deletions

View file

@ -1,8 +1,10 @@
package com.tangem.datasource.api.visa
import com.tangem.datasource.api.utils.ReadTimeout
import com.tangem.datasource.api.visa.models.response.CardActivationRemoteStateResponse
import retrofit2.http.GET
import retrofit2.http.Header
import java.util.concurrent.TimeUnit
interface TangemVisaApi {
@ -10,4 +12,10 @@ interface TangemVisaApi {
suspend fun getRemoteActivationStatus(
@Header("Authorization") authHeader: String,
): CardActivationRemoteStateResponse
@ReadTimeout(duration = 20, TimeUnit.MINUTES)
@GET("activation-status")
suspend fun getRemoteActivationStatusLongPoll(
@Header("Authorization") authHeader: String,
): CardActivationRemoteStateResponse
}

View file

@ -187,7 +187,7 @@ internal object NetworkModule {
clientBuilder = {
addInterceptor(
NetworkLogsSaveInterceptor(appLogsStore),
)
).applyTimeoutAnnotations()
},
)
}
@ -208,7 +208,7 @@ internal object NetworkModule {
clientBuilder = {
addInterceptor(
NetworkLogsSaveInterceptor(appLogsStore),
)
).applyTimeoutAnnotations()
},
)
}

View file

@ -7,4 +7,6 @@ interface VisaAuthTokenStorage {
suspend fun store(cardId: String, tokens: VisaAuthTokens)
suspend fun get(cardId: String): VisaAuthTokens?
fun remove(cardId: String)
}

View file

@ -44,17 +44,13 @@ internal fun OkHttpClient.Builder.applyTimeoutAnnotations(): OkHttpClient.Builde
val readTimeout = tag?.method()?.getAnnotation(ReadTimeout::class.java)
val writeTimeout = tag?.method()?.getAnnotation(WriteTimeout::class.java)
chain
.apply {
connectionTimeout?.let { withConnectTimeout(timeout = it.duration, unit = it.unit) }
}
.apply {
readTimeout?.let { withReadTimeout(timeout = it.duration, unit = it.unit) }
}
.apply {
writeTimeout?.let { withWriteTimeout(timeout = it.duration, unit = it.unit) }
}
.proceed(request)
chain.run {
connectionTimeout?.let { withConnectTimeout(timeout = it.duration, unit = it.unit) } ?: this
}.run {
readTimeout?.let { withReadTimeout(timeout = it.duration, unit = it.unit) } ?: this
}.run {
writeTimeout?.let { withWriteTimeout(timeout = it.duration, unit = it.unit) } ?: this
}.proceed(request)
},
)
}