From 085d42e19e09e0ec15f14fe1fbb596e8801252ae Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 29 Nov 2023 14:51:57 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- .../network/auth/DefaultOneInchProvider.kt | 13 ++++++++++++ .../tangem/tap/network/auth/di/AuthModule.kt | 10 +++++++++ .../datasource/config/ConfigManagerImpl.kt | 1 + .../tangem/datasource/config/models/Config.kt | 1 + .../datasource/config/models/JsonModels.kt | 1 + .../tangem/datasource/di/OneInchApisModule.kt | 21 +++++++++++++++---- .../tangem/datasource/utils/RequestHeader.kt | 5 +++++ .../com/tangem/lib/auth/AuthBearerProvider.kt | 12 +++++++++++ 9 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/network/auth/DefaultOneInchProvider.kt create mode 100644 libs/auth/src/main/java/com/tangem/lib/auth/AuthBearerProvider.kt diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index 2a612cd92b..2115eb12ca 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit 2a612cd92b1c78b99c917d0fe66342831f801e5e +Subproject commit 2115eb12ca824f8341cf49eb6d2eacadd5ae619e diff --git a/app/src/main/java/com/tangem/tap/network/auth/DefaultOneInchProvider.kt b/app/src/main/java/com/tangem/tap/network/auth/DefaultOneInchProvider.kt new file mode 100644 index 0000000000..ade4f48a0f --- /dev/null +++ b/app/src/main/java/com/tangem/tap/network/auth/DefaultOneInchProvider.kt @@ -0,0 +1,13 @@ +package com.tangem.tap.network.auth + +import com.tangem.datasource.config.ConfigManager +import com.tangem.lib.auth.AuthBearerProvider + +internal class DefaultOneInchProvider( + private val configManager: ConfigManager, +) : AuthBearerProvider { + + override fun getApiKey(): String { + return configManager.config.oneInchApiKey + } +} \ 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 fa9aa920a1..d59b3f4792 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 @@ -2,10 +2,12 @@ package com.tangem.tap.network.auth.di import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.local.userwallet.UserWalletsStore +import com.tangem.lib.auth.AuthBearerProvider import com.tangem.lib.auth.AuthProvider import com.tangem.lib.auth.ExpressAuthProvider import com.tangem.tap.network.auth.DefaultAuthProvider import com.tangem.tap.network.auth.DefaultExpressAuthProvider +import com.tangem.tap.network.auth.DefaultOneInchProvider import com.tangem.tap.proxy.AppStateHolder import dagger.Module import dagger.Provides @@ -34,4 +36,12 @@ class AuthModule { configManager = configManager, ) } + + @Provides + @Singleton + fun provideOneInchAuthProvider(configManager: ConfigManager): AuthBearerProvider { + return DefaultOneInchProvider( + configManager = configManager, + ) + } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt index 2c4b2b364f..3771cc18a6 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt @@ -107,6 +107,7 @@ internal class ConfigManagerImpl @Inject constructor() : ConfigManager { walletConnectProjectId = configValues.walletConnectProjectId, tangemComAuthorization = configValues.tangemComAuthorization, tangemExpressApiKey = configValues.tangemExpressApiKey, + oneInchApiKey = configValues.oneInchApiKey, ) } diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt index d1f3e0848f..5ddc1a7187 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt @@ -20,4 +20,5 @@ data class Config( val walletConnectProjectId: String = "", val tangemComAuthorization: String? = null, val tangemExpressApiKey: String = "", + val oneInchApiKey: String = "", ) \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt index a7b0d44453..d63f6527da 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt @@ -42,6 +42,7 @@ class ConfigValueModel( val chiaFireAcademyApiKey: String?, val chiaTangemApiKey: String?, val tangemExpressApiKey: String, + val oneInchApiKey: String, ) @JsonClass(generateAdapter = true) diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/OneInchApisModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/OneInchApisModule.kt index 341fd1a752..c1ffbe4e87 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/OneInchApisModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/OneInchApisModule.kt @@ -4,7 +4,10 @@ import android.content.Context import com.squareup.moshi.Moshi import com.tangem.datasource.api.oneinch.OneInchApi import com.tangem.datasource.api.oneinch.OneInchApiFactory +import com.tangem.datasource.utils.RequestHeader +import com.tangem.datasource.utils.addHeaders import com.tangem.datasource.utils.addLoggers +import com.tangem.lib.auth.AuthBearerProvider import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -21,7 +24,11 @@ class OneInchApisModule { @Provides @Singleton - fun provideOneInchApiFactory(@NetworkMoshi moshi: Moshi, @ApplicationContext context: Context): OneInchApiFactory { + fun provideOneInchApiFactory( + @NetworkMoshi moshi: Moshi, + @ApplicationContext context: Context, + auth1Inch: AuthBearerProvider, + ): OneInchApiFactory { val networks = mapOf( ETH_NETWORK to ONE_INCH_ETH_PATH, BSC_NETWORK to ONE_INCH_BSC_PATH, @@ -38,14 +45,19 @@ class OneInchApisModule { for ((network, path) in networks) { apiFactory.putApi( networkId = network, - api = createOneInchApiWithUrl("$ONE_INCH_BASE_URL$path", moshi, context), + api = createOneInchApiWithUrl("$ONE_INCH_BASE_URL$path", moshi, context, auth1Inch), ) } return apiFactory } - private fun createOneInchApiWithUrl(url: String, moshi: Moshi, context: Context): OneInchApi { + private fun createOneInchApiWithUrl( + url: String, + moshi: Moshi, + context: Context, + auth1Inch: AuthBearerProvider, + ): OneInchApi { return Retrofit.Builder() .addConverterFactory( MoshiConverterFactory.create(moshi), @@ -53,6 +65,7 @@ class OneInchApisModule { .baseUrl(url) .client( OkHttpClient.Builder() + .addHeaders(RequestHeader.AuthBearerHeader(auth1Inch)) .addLoggers(context) .build(), ) @@ -61,7 +74,7 @@ class OneInchApisModule { } companion object { - private const val ONE_INCH_BASE_URL = "https://api-tangem.1inch.io/v5.2/" + private const val ONE_INCH_BASE_URL = "https://api.1inch.dev/swap/v5.2/" private const val ONE_INCH_ETH_PATH = "1/" private const val ONE_INCH_BSC_PATH = "56/" private const val ONE_INCH_POLYGON_PATH = "137/" 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 6a5fde6a53..d84b00ac2e 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,5 +1,6 @@ package com.tangem.datasource.utils +import com.tangem.lib.auth.AuthBearerProvider import com.tangem.lib.auth.AuthProvider import com.tangem.lib.auth.ExpressAuthProvider @@ -25,4 +26,8 @@ sealed class RequestHeader(vararg pairs: Pair String>) { "user-id" to { expressAuthProvider.getUserId() }, "session-id" to { expressAuthProvider.getSessionId() }, ) + + class AuthBearerHeader(authBearerProvider: AuthBearerProvider) : RequestHeader( + "Authorization" to { "Bearer " + authBearerProvider.getApiKey() }, + ) } \ No newline at end of file diff --git a/libs/auth/src/main/java/com/tangem/lib/auth/AuthBearerProvider.kt b/libs/auth/src/main/java/com/tangem/lib/auth/AuthBearerProvider.kt new file mode 100644 index 0000000000..dbeac3aebe --- /dev/null +++ b/libs/auth/src/main/java/com/tangem/lib/auth/AuthBearerProvider.kt @@ -0,0 +1,12 @@ +package com.tangem.lib.auth + +/** + * Provides auth for tangemTech API + */ +interface AuthBearerProvider { + + /** + * Returns api-key + */ + fun getApiKey(): String +} \ No newline at end of file