From ba7038debcdf9d02da527aa303ce23b7963c5471 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 19 Dec 2023 20:29:07 +0200 Subject: [PATCH] Updated on 2026-08-14 --- .../datasource/di/StatusCodeInterceptor.kt | 49 +++++++++++++++++++ .../swap/converters/ErrorsDataConverter.kt | 2 +- .../feature/swap/domain/models/DataError.kt | 2 + 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 core/datasource/src/main/java/com/tangem/datasource/di/StatusCodeInterceptor.kt diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/StatusCodeInterceptor.kt b/core/datasource/src/main/java/com/tangem/datasource/di/StatusCodeInterceptor.kt new file mode 100644 index 0000000000..c6f086b1ac --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/di/StatusCodeInterceptor.kt @@ -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" + + " }" + } +} \ No newline at end of file diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt index 2068fc982a..6ca55d7f04 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt @@ -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 diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt index 2c3a3e6af6..829cb5e7e4 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt @@ -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 }