From d12b84c0f5eaced916c42d3d21fc00bf7f86a70d Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 14 Nov 2024 12:08:57 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/network/auth/DefaultAuthProvider.kt | 8 ++++---- .../tangem/tap/network/auth/di/AuthModule.kt | 6 +++--- .../api/common/config/TangemTech.kt | 3 +++ .../tangem/datasource/di/ApiConfigsModule.kt | 4 +++- .../tangem/datasource/utils/RequestHeader.kt | 6 ++++++ .../managers/ProdApiConfigsManagerTest.kt | 19 ++++++++++++++++++- 6 files changed, 37 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt b/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt index 16427253e8..c39150c2c2 100644 --- a/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt +++ b/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt @@ -2,15 +2,15 @@ package com.tangem.tap.network.auth import com.tangem.common.extensions.toHexString import com.tangem.datasource.api.common.AuthProvider -import com.tangem.tap.proxy.AppStateHolder +import com.tangem.domain.wallets.legacy.UserWalletsListManager -internal class DefaultAuthProvider(private val appStateHolder: AppStateHolder) : AuthProvider { +internal class DefaultAuthProvider(private val userWalletsListManager: UserWalletsListManager) : AuthProvider { override fun getCardPublicKey(): String { - return appStateHolder.scanResponse?.card?.cardPublicKey?.toHexString() ?: "" + return userWalletsListManager.selectedUserWalletSync?.scanResponse?.card?.cardPublicKey?.toHexString() ?: "" } override fun getCardId(): String { - return appStateHolder.scanResponse?.card?.cardId ?: "" + return userWalletsListManager.selectedUserWalletSync?.scanResponse?.card?.cardId ?: "" } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt b/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt index 12e5639c12..62e564e8f0 100644 --- a/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt +++ b/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt @@ -4,13 +4,13 @@ import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.userwallet.UserWalletsStore +import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.lib.auth.ExpressAuthProvider import com.tangem.lib.auth.StakeKitAuthProvider import com.tangem.tap.network.auth.DefaultAppVersionProvider import com.tangem.tap.network.auth.DefaultAuthProvider import com.tangem.tap.network.auth.DefaultExpressAuthProvider import com.tangem.tap.network.auth.DefaultStakeKitAuthProvider -import com.tangem.tap.proxy.AppStateHolder import com.tangem.utils.version.AppVersionProvider import dagger.Module import dagger.Provides @@ -24,8 +24,8 @@ class AuthModule { @Provides @Singleton - fun provideAuthProvider(appStateHolder: AppStateHolder): AuthProvider { - return DefaultAuthProvider(appStateHolder) + fun provideAuthProvider(userWalletsListManager: UserWalletsListManager): AuthProvider { + return DefaultAuthProvider(userWalletsListManager) } @Provides diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemTech.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemTech.kt index c93ce9af1e..dd567e31f4 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemTech.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemTech.kt @@ -1,11 +1,13 @@ package com.tangem.datasource.api.common.config +import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.utils.RequestHeader import com.tangem.utils.version.AppVersionProvider /** TangemTech [ApiConfig] */ internal class TangemTech( private val appVersionProvider: AppVersionProvider, + private val authProvider: AuthProvider, ) : ApiConfig() { override val defaultEnvironment: ApiEnvironment = ApiEnvironment.PROD @@ -29,5 +31,6 @@ internal class TangemTech( private fun createHeaders() = buildMap { putAll(from = RequestHeader.AppVersionPlatformHeaders(appVersionProvider).values) + putAll(from = RequestHeader.AuthenticationHeader(authProvider).values) } } \ 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 d900af3269..c5f506627e 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 @@ -1,5 +1,6 @@ package com.tangem.datasource.di +import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.api.common.config.ApiConfig import com.tangem.datasource.api.common.config.Express import com.tangem.datasource.api.common.config.StakeKit @@ -36,5 +37,6 @@ internal object ApiConfigsModule { @Provides @IntoSet - fun provideTangemTechConfig(appVersionProvider: AppVersionProvider): ApiConfig = TangemTech(appVersionProvider) + fun provideTangemTechConfig(appVersionProvider: AppVersionProvider, authProvider: AuthProvider): ApiConfig = + TangemTech(appVersionProvider, authProvider) } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/utils/RequestHeader.kt b/core/datasource/src/main/java/com/tangem/datasource/utils/RequestHeader.kt index b6ed8b7645..a0193d4b18 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/utils/RequestHeader.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/utils/RequestHeader.kt @@ -1,8 +1,11 @@ package com.tangem.datasource.utils +import android.os.Build import com.tangem.datasource.api.common.AuthProvider import com.tangem.utils.Provider import com.tangem.utils.version.AppVersionProvider +import java.util.Locale +import java.util.TimeZone /** * Presentation of request header @@ -24,5 +27,8 @@ sealed class RequestHeader(vararg pairs: Pair>) { class AppVersionPlatformHeaders(appVersionProvider: AppVersionProvider) : RequestHeader( "version" to Provider(appVersionProvider::versionName), "platform" to Provider { "android" }, + "language" to Provider { Locale.getDefault().language }, + "timezone" to Provider { TimeZone.getDefault().displayName }, + "device" to Provider { "${Build.MANUFACTURER} ${Build.MODEL}" }, ) } \ No newline at end of file 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 02ade46775..bd2f50fc4d 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 @@ -1,7 +1,9 @@ package com.tangem.datasource.api.common.config.managers +import android.os.Build import com.google.common.truth.Truth import com.tangem.datasource.BuildConfig +import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.api.common.config.* import com.tangem.datasource.api.common.config.ApiConfig.Companion.DEBUG_BUILD_TYPE import com.tangem.datasource.api.common.config.ApiConfig.Companion.EXTERNAL_BUILD_TYPE @@ -18,16 +20,19 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized +import java.util.Locale +import java.util.TimeZone private val configManager = MockEnvironmentConfigStorage() private val appVersionProvider = mockk() private val expressAuthProvider = mockk() private val stakeKitAuthProvider = mockk() +private val appAuthProvider = mockk() // Don't forget to add new config !!! private val API_CONFIGS = setOf( Express(configManager, expressAuthProvider, appVersionProvider), - TangemTech(appVersionProvider), + TangemTech(appVersionProvider, appAuthProvider), StakeKit(stakeKitAuthProvider), ) @@ -46,6 +51,8 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { every { expressAuthProvider.getSessionId() } returns EXPRESS_SESSION_ID every { expressAuthProvider.getRefCode() } returns EXPRESS_REF_CODE every { stakeKitAuthProvider.getApiKey() } returns STAKE_KIT_API_KEY + every { appAuthProvider.getCardId() } returns APP_CARD_ID + every { appAuthProvider.getCardPublicKey() } returns APP_CARD_PUBLIC_KEY } @Test @@ -68,6 +75,8 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { const val EXPRESS_SESSION_ID = "express_session_id" const val EXPRESS_REF_CODE = "express_ref_code" const val STAKE_KIT_API_KEY = "stake_kit_api_key" + const val APP_CARD_ID = "app_card_id" + const val APP_CARD_PUBLIC_KEY = "app_public_key" @JvmStatic @Parameterized.Parameters @@ -118,6 +127,9 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { "refcode" to Provider { EXPRESS_REF_CODE }, "version" to Provider { VERSION_NAME }, "platform" to Provider { "android" }, + "language" to Provider { Locale.getDefault().language }, + "timezone" to Provider { TimeZone.getDefault().displayName }, + "device" to Provider { "${Build.MANUFACTURER} ${Build.MODEL}" }, ), ), ) @@ -130,8 +142,13 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { environment = ApiEnvironment.PROD, baseUrl = "https://api.tangem-tech.com/v1/", headers = mapOf( + "card_id" to Provider { APP_CARD_ID }, + "card_public_key" to Provider { APP_CARD_PUBLIC_KEY }, "version" to Provider { VERSION_NAME }, "platform" to Provider { "android" }, + "language" to Provider { Locale.getDefault().language }, + "timezone" to Provider { TimeZone.getDefault().displayName }, + "device" to Provider { "${Build.MANUFACTURER} ${Build.MODEL}" }, ), ), )