From 0dd5b23b643a9d127cd03230964486521e9576a0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 24 Apr 2025 17:40:50 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../datasource/api/common/config/ApiConfig.kt | 2 -- .../api/common/config/TangemVisa.kt | 9 +++++- .../api/common/config/TangemVisaAuth.kt | 26 --------------- .../datasource/api/visa/TangemVisaApi.kt | 32 +++++++++++++++++++ .../datasource/api/visa/TangemVisaAuthApi.kt | 29 ----------------- .../tangem/datasource/di/ApiConfigsModule.kt | 5 --- .../com/tangem/datasource/di/NetworkModule.kt | 24 -------------- .../managers/ProdApiConfigsManagerTest.kt | 18 +---------- .../data/visa/DefaultVisaAuthRepository.kt | 4 +-- .../data/visa/utils/VisaApiRequestMaker.kt | 4 +-- 10 files changed, 45 insertions(+), 108 deletions(-) delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisaAuth.kt delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaAuthApi.kt diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt index 78db8380c3..b6bc222e76 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt @@ -24,7 +24,6 @@ sealed class ApiConfig { Express, TangemTech, StakeKit, - TangemVisaAuth, TangemVisa, TangemCardSdk, BlockAid, @@ -35,7 +34,6 @@ sealed class ApiConfig { is Express -> ID.Express is TangemTech -> ID.TangemTech is StakeKit -> ID.StakeKit - is TangemVisaAuth -> ID.TangemVisaAuth is TangemVisa -> ID.TangemVisa is TangemCardSdk -> ID.TangemCardSdk is BlockAid -> ID.BlockAid diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisa.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisa.kt index 5310f5b308..b46a599b2d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisa.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisa.kt @@ -7,14 +7,21 @@ internal class TangemVisa( private val appVersionProvider: AppVersionProvider, ) : ApiConfig() { - override val defaultEnvironment: ApiEnvironment = ApiEnvironment.PROD + override val defaultEnvironment: ApiEnvironment = ApiEnvironment.DEV override val environmentConfigs = listOf( createProdEnvironment(), + createDevEnvironment(), ) private fun createProdEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig( environment = ApiEnvironment.PROD, + baseUrl = "https://api.paera.com/bff/", + headers = createHeaders(), + ) + + private fun createDevEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig( + environment = ApiEnvironment.DEV, baseUrl = "[REDACTED_ENV_URL]", headers = createHeaders(), ) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisaAuth.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisaAuth.kt deleted file mode 100644 index 833cde2111..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemVisaAuth.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tangem.datasource.api.common.config - -import com.tangem.utils.ProviderSuspend -import com.tangem.utils.version.AppVersionProvider - -internal class TangemVisaAuth( - private val appVersionProvider: AppVersionProvider, -) : ApiConfig() { - - override val defaultEnvironment: ApiEnvironment = ApiEnvironment.STAGE - - override val environmentConfigs = listOf( - createStageEnvironment(), - ) - - private fun createStageEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig( - environment = ApiEnvironment.STAGE, - baseUrl = "[REDACTED_ENV_URL]", - headers = createHeaders(), - ) - - private fun createHeaders() = mapOf( - "version" to ProviderSuspend { appVersionProvider.versionName }, - "platform" to ProviderSuspend { "Android" }, - ) -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaApi.kt index 16e643329b..346e7a74fe 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaApi.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaApi.kt @@ -4,8 +4,14 @@ import com.tangem.datasource.api.common.response.ApiResponse import com.tangem.datasource.api.visa.models.request.ActivationByCardWalletRequest import com.tangem.datasource.api.visa.models.request.ActivationByCustomerWalletRequest import com.tangem.datasource.api.visa.models.request.ActivationStatusRequest +import com.tangem.datasource.api.visa.models.request.GenerateNoneByCardIdRequest +import com.tangem.datasource.api.visa.models.request.GenerateNoneByCardWalletRequest +import com.tangem.datasource.api.visa.models.request.GetAccessTokenByCardIdRequest +import com.tangem.datasource.api.visa.models.request.GetAccessTokenByCardWalletRequest import com.tangem.datasource.api.visa.models.request.GetCardWalletAcceptanceRequest import com.tangem.datasource.api.visa.models.request.GetCustomerWalletAcceptanceRequest +import com.tangem.datasource.api.visa.models.request.RefreshTokenByCardIdRequest +import com.tangem.datasource.api.visa.models.request.RefreshTokenByCardWalletRequest import com.tangem.datasource.api.visa.models.request.SetPinCodeRequest import com.tangem.datasource.api.visa.models.response.* import retrofit2.http.Body @@ -16,6 +22,30 @@ import retrofit2.http.Query interface TangemVisaApi { + // region: auth + + @POST("v1/auth/challenge") + suspend fun generateNonceByCardId(@Body request: GenerateNoneByCardIdRequest): GenerateNonceResponse + + @POST("v1/auth/challenge") + suspend fun generateNonceByCardWallet(@Body request: GenerateNoneByCardWalletRequest): GenerateNonceResponse + + @POST("v1/auth/token") + suspend fun getAccessTokenByCardId(@Body request: GetAccessTokenByCardIdRequest): JWTResponse + + @POST("v1/auth/token") + suspend fun getAccessTokenByCardWallet(@Body request: GetAccessTokenByCardWalletRequest): JWTResponse + + @POST("v1/auth/token/refresh") + suspend fun refreshCardIdAccessToken(@Body request: RefreshTokenByCardIdRequest): ApiResponse + + @POST("v1/auth/token/refresh") + suspend fun refreshCardWalletAccessToken(@Body request: RefreshTokenByCardWalletRequest): ApiResponse + + // endregion + + // region: activation + @POST("v1/activation/status") suspend fun getRemoteActivationStatus( @Header("Authorization") authHeader: String, @@ -52,6 +82,8 @@ interface TangemVisaApi { @Body body: SetPinCodeRequest, ): ApiResponse + // endregion + @GET("customer/info") suspend fun getCustomerInfo( @Header("Authorization") authHeader: String, diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaAuthApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaAuthApi.kt deleted file mode 100644 index 57b91ca1c3..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/api/visa/TangemVisaAuthApi.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.tangem.datasource.api.visa - -import com.tangem.datasource.api.common.response.ApiResponse -import com.tangem.datasource.api.visa.models.request.* -import com.tangem.datasource.api.visa.models.response.GenerateNonceResponse -import com.tangem.datasource.api.visa.models.response.JWTResponse -import retrofit2.http.Body -import retrofit2.http.POST - -interface TangemVisaAuthApi { - - @POST("v1/auth/challenge") - suspend fun generateNonceByCardId(@Body request: GenerateNoneByCardIdRequest): GenerateNonceResponse - - @POST("v1/auth/challenge") - suspend fun generateNonceByCardWallet(@Body request: GenerateNoneByCardWalletRequest): GenerateNonceResponse - - @POST("v1/auth/token") - suspend fun getAccessTokenByCardId(@Body request: GetAccessTokenByCardIdRequest): JWTResponse - - @POST("v1/auth/token") - suspend fun getAccessTokenByCardWallet(@Body request: GetAccessTokenByCardWalletRequest): JWTResponse - - @POST("v1/auth/token/refresh") - suspend fun refreshCardIdAccessToken(@Body request: RefreshTokenByCardIdRequest): ApiResponse - - @POST("v1/auth/token/refresh") - suspend fun refreshCardWalletAccessToken(@Body request: RefreshTokenByCardWalletRequest): ApiResponse -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt index 1a90974c75..62107738e3 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt @@ -37,11 +37,6 @@ internal object ApiConfigsModule { fun provideTangemTechConfig(appVersionProvider: AppVersionProvider, authProvider: AuthProvider): ApiConfig = TangemTech(appVersionProvider, authProvider) - @Provides - @IntoSet - fun provideTangemAuthVisaConfig(appVersionProvider: AppVersionProvider): ApiConfig = - TangemVisaAuth(appVersionProvider) - @Provides @IntoSet fun provideTangemVisaConfig(appVersionProvider: AppVersionProvider): ApiConfig = TangemVisa(appVersionProvider) diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt index e05ca4cf1a..a4b0eb363a 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt @@ -18,7 +18,6 @@ import com.tangem.datasource.api.stakekit.StakeKitApi import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.TangemTechApiV2 import com.tangem.datasource.api.visa.TangemVisaApi -import com.tangem.datasource.api.visa.TangemVisaAuthApi import com.tangem.datasource.local.logs.AppLogsStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.utils.* @@ -192,29 +191,6 @@ internal object NetworkModule { ) } - @Provides - @Singleton - fun provideTangemVisaAuthApi( - @NetworkMoshi moshi: Moshi, - @ApplicationContext context: Context, - analyticsErrorHandler: AnalyticsErrorHandler, - apiConfigsManager: ApiConfigsManager, - appLogsStore: AppLogsStore, - ): TangemVisaAuthApi { - return createApi( - id = ApiConfig.ID.TangemVisaAuth, - moshi = moshi, - context = context, - apiConfigsManager = apiConfigsManager, - analyticsErrorHandler = analyticsErrorHandler, - clientBuilder = { - addInterceptor( - NetworkLogsSaveInterceptor(appLogsStore), - ).applyTimeoutAnnotations() - }, - ) - } - @Provides @Singleton fun provideTangemVisaApi( diff --git a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt index 2624ca1707..116ddea237 100644 --- a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt +++ b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt @@ -35,7 +35,6 @@ private val API_CONFIGS = setOf( Express(configManager, expressAuthProvider, appVersionProvider), TangemTech(appVersionProvider, appAuthProvider), StakeKit(stakeKitAuthProvider), - TangemVisaAuth(appVersionProvider), TangemVisa(appVersionProvider), ) @@ -86,7 +85,6 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { is Express -> createExpressModel() is TangemTech -> createTangemTechModel() is StakeKit -> createStakeKitModel() - is TangemVisaAuth -> createVisaAuthModel() is TangemVisa -> createVisaModel() is TangemCardSdk -> createTangemCardSdkModel() is BlockAid -> createBlockAidSdkModel() @@ -177,25 +175,11 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { ) } - private fun createVisaAuthModel(): Model { - return Model( - id = ApiConfig.ID.TangemVisaAuth, - expected = ApiEnvironmentConfig( - environment = ApiEnvironment.STAGE, - baseUrl = "[REDACTED_ENV_URL]", - headers = mapOf( - "version" to ProviderSuspend { VERSION_NAME }, - "platform" to ProviderSuspend { "Android" }, - ), - ), - ) - } - private fun createVisaModel(): Model { return Model( id = ApiConfig.ID.TangemVisa, expected = ApiEnvironmentConfig( - environment = ApiEnvironment.PROD, + environment = ApiEnvironment.DEV, baseUrl = "[REDACTED_ENV_URL]", headers = mapOf( "version" to ProviderSuspend { VERSION_NAME }, diff --git a/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaAuthRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaAuthRepository.kt index 9e3be2327c..daa8bd755d 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaAuthRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaAuthRepository.kt @@ -1,7 +1,7 @@ package com.tangem.data.visa import com.tangem.datasource.api.common.response.getOrThrow -import com.tangem.datasource.api.visa.TangemVisaAuthApi +import com.tangem.datasource.api.visa.TangemVisaApi import com.tangem.datasource.api.visa.models.request.* import com.tangem.domain.visa.model.VisaAuthChallenge import com.tangem.domain.visa.model.VisaAuthSession @@ -14,7 +14,7 @@ import javax.inject.Inject @Suppress("UnusedPrivateMember") internal class DefaultVisaAuthRepository @Inject constructor( - private val visaAuthApi: TangemVisaAuthApi, + private val visaAuthApi: TangemVisaApi, private val dispatchers: CoroutineDispatcherProvider, ) : VisaAuthRepository { diff --git a/data/visa/src/main/kotlin/com/tangem/data/visa/utils/VisaApiRequestMaker.kt b/data/visa/src/main/kotlin/com/tangem/data/visa/utils/VisaApiRequestMaker.kt index 2c7cae2eb4..73b1f217b9 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/visa/utils/VisaApiRequestMaker.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/visa/utils/VisaApiRequestMaker.kt @@ -5,7 +5,7 @@ import com.tangem.data.visa.model.AccessCodeData import com.tangem.datasource.api.common.response.ApiResponse import com.tangem.datasource.api.common.response.ApiResponseError import com.tangem.datasource.api.common.response.getOrThrow -import com.tangem.datasource.api.visa.TangemVisaAuthApi +import com.tangem.datasource.api.visa.TangemVisaApi import com.tangem.datasource.api.visa.models.request.RefreshTokenByCardWalletRequest import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.domain.common.util.cardTypesResolver @@ -24,7 +24,7 @@ typealias VisaAuthorizationHeader = String internal class VisaApiRequestMaker @Inject constructor( private val userWalletsStore: UserWalletsStore, - private val visaAuthApi: TangemVisaAuthApi, + private val visaAuthApi: TangemVisaApi, private val accessCodeDataConverter: AccessCodeDataConverter, private val dispatcherProvider: CoroutineDispatcherProvider, ) {