Updated on 2026-08-14
This commit is contained in:
parent
8a840fe5f0
commit
ba7038debc
3 changed files with 52 additions and 1 deletions
|
|
@ -0,0 +1,49 @@
|
|||
package com.tangem.datasource.di
|
||||
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.Response
|
||||
import okhttp3.ResponseBody.Companion.toResponseBody
|
||||
import timber.log.Timber
|
||||
|
||||
class StatusCodeInterceptor : Interceptor {
|
||||
|
||||
override fun intercept(chain: Interceptor.Chain): Response {
|
||||
val originalResponse = chain.proceed(chain.request())
|
||||
|
||||
|
||||
if (shouldInterceptResponse(originalResponse)) {
|
||||
Timber.e("StatusCodeInterceptor INTERCEPTED%s", originalResponse.request.url.toString())
|
||||
|
||||
val body = getBody().toResponseBody("application/json".toMediaTypeOrNull())
|
||||
val code = getCode()
|
||||
|
||||
return originalResponse.newBuilder()
|
||||
.code(code)
|
||||
.body(body)
|
||||
.build()
|
||||
}
|
||||
|
||||
return originalResponse
|
||||
}
|
||||
|
||||
private fun shouldInterceptResponse(response: Response): Boolean {
|
||||
return response.request.url.toString().contains("exchange-quote")
|
||||
// && response.request.url.toString().contains("changenow")
|
||||
}
|
||||
|
||||
|
||||
private fun getCode() : Int {
|
||||
return 400
|
||||
}
|
||||
|
||||
private fun getBody() : String {
|
||||
return "\"error\": {\n" +
|
||||
" \"code\": 2290,\n" +
|
||||
" \"description\": \"Core: receivedDecimals is not equal to expressDecimals\",\n" +
|
||||
" \"message\": \"Not valid\",\n" +
|
||||
" \"receivedToDecimals\": 5,\n" +
|
||||
" \"expressToDecimals\": 5\n" +
|
||||
" }"
|
||||
}
|
||||
}
|
||||
|
|
@ -39,7 +39,7 @@ internal class ErrorsDataConverter(
|
|||
receivedFromDecimals = requireNotNull(error.value?.receivedFromDecimals),
|
||||
expressFromDecimals = requireNotNull(error.value?.expressFromDecimals),
|
||||
)
|
||||
else -> DataError.UnknownError
|
||||
else -> DataError.UnknownErrorWithCode(error.code)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
return DataError.UnknownError
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ sealed class DataError {
|
|||
val expressFromDecimals: Int,
|
||||
) : DataError()
|
||||
|
||||
data class UnknownErrorWithCode(override val code: Int) : DataError()
|
||||
|
||||
object UnknownError : DataError() {
|
||||
override val code: Int = -1
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue