Updated on 2026-08-14
This commit is contained in:
parent
7a0b84a44e
commit
085d42e19e
9 changed files with 61 additions and 5 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2a612cd92b1c78b99c917d0fe66342831f801e5e
|
Subproject commit 2115eb12ca824f8341cf49eb6d2eacadd5ae619e
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,10 +2,12 @@ package com.tangem.tap.network.auth.di
|
||||||
|
|
||||||
import com.tangem.datasource.config.ConfigManager
|
import com.tangem.datasource.config.ConfigManager
|
||||||
import com.tangem.datasource.local.userwallet.UserWalletsStore
|
import com.tangem.datasource.local.userwallet.UserWalletsStore
|
||||||
|
import com.tangem.lib.auth.AuthBearerProvider
|
||||||
import com.tangem.lib.auth.AuthProvider
|
import com.tangem.lib.auth.AuthProvider
|
||||||
import com.tangem.lib.auth.ExpressAuthProvider
|
import com.tangem.lib.auth.ExpressAuthProvider
|
||||||
import com.tangem.tap.network.auth.DefaultAuthProvider
|
import com.tangem.tap.network.auth.DefaultAuthProvider
|
||||||
import com.tangem.tap.network.auth.DefaultExpressAuthProvider
|
import com.tangem.tap.network.auth.DefaultExpressAuthProvider
|
||||||
|
import com.tangem.tap.network.auth.DefaultOneInchProvider
|
||||||
import com.tangem.tap.proxy.AppStateHolder
|
import com.tangem.tap.proxy.AppStateHolder
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
|
|
@ -34,4 +36,12 @@ class AuthModule {
|
||||||
configManager = configManager,
|
configManager = configManager,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideOneInchAuthProvider(configManager: ConfigManager): AuthBearerProvider {
|
||||||
|
return DefaultOneInchProvider(
|
||||||
|
configManager = configManager,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -107,6 +107,7 @@ internal class ConfigManagerImpl @Inject constructor() : ConfigManager {
|
||||||
walletConnectProjectId = configValues.walletConnectProjectId,
|
walletConnectProjectId = configValues.walletConnectProjectId,
|
||||||
tangemComAuthorization = configValues.tangemComAuthorization,
|
tangemComAuthorization = configValues.tangemComAuthorization,
|
||||||
tangemExpressApiKey = configValues.tangemExpressApiKey,
|
tangemExpressApiKey = configValues.tangemExpressApiKey,
|
||||||
|
oneInchApiKey = configValues.oneInchApiKey,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,4 +20,5 @@ data class Config(
|
||||||
val walletConnectProjectId: String = "",
|
val walletConnectProjectId: String = "",
|
||||||
val tangemComAuthorization: String? = null,
|
val tangemComAuthorization: String? = null,
|
||||||
val tangemExpressApiKey: String = "",
|
val tangemExpressApiKey: String = "",
|
||||||
|
val oneInchApiKey: String = "",
|
||||||
)
|
)
|
||||||
|
|
@ -42,6 +42,7 @@ class ConfigValueModel(
|
||||||
val chiaFireAcademyApiKey: String?,
|
val chiaFireAcademyApiKey: String?,
|
||||||
val chiaTangemApiKey: String?,
|
val chiaTangemApiKey: String?,
|
||||||
val tangemExpressApiKey: String,
|
val tangemExpressApiKey: String,
|
||||||
|
val oneInchApiKey: String,
|
||||||
)
|
)
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,10 @@ import android.content.Context
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.tangem.datasource.api.oneinch.OneInchApi
|
import com.tangem.datasource.api.oneinch.OneInchApi
|
||||||
import com.tangem.datasource.api.oneinch.OneInchApiFactory
|
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.datasource.utils.addLoggers
|
||||||
|
import com.tangem.lib.auth.AuthBearerProvider
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
|
|
@ -21,7 +24,11 @@ class OneInchApisModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideOneInchApiFactory(@NetworkMoshi moshi: Moshi, @ApplicationContext context: Context): OneInchApiFactory {
|
fun provideOneInchApiFactory(
|
||||||
|
@NetworkMoshi moshi: Moshi,
|
||||||
|
@ApplicationContext context: Context,
|
||||||
|
auth1Inch: AuthBearerProvider,
|
||||||
|
): OneInchApiFactory {
|
||||||
val networks = mapOf(
|
val networks = mapOf(
|
||||||
ETH_NETWORK to ONE_INCH_ETH_PATH,
|
ETH_NETWORK to ONE_INCH_ETH_PATH,
|
||||||
BSC_NETWORK to ONE_INCH_BSC_PATH,
|
BSC_NETWORK to ONE_INCH_BSC_PATH,
|
||||||
|
|
@ -38,14 +45,19 @@ class OneInchApisModule {
|
||||||
for ((network, path) in networks) {
|
for ((network, path) in networks) {
|
||||||
apiFactory.putApi(
|
apiFactory.putApi(
|
||||||
networkId = network,
|
networkId = network,
|
||||||
api = createOneInchApiWithUrl("$ONE_INCH_BASE_URL$path", moshi, context),
|
api = createOneInchApiWithUrl("$ONE_INCH_BASE_URL$path", moshi, context, auth1Inch),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return apiFactory
|
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()
|
return Retrofit.Builder()
|
||||||
.addConverterFactory(
|
.addConverterFactory(
|
||||||
MoshiConverterFactory.create(moshi),
|
MoshiConverterFactory.create(moshi),
|
||||||
|
|
@ -53,6 +65,7 @@ class OneInchApisModule {
|
||||||
.baseUrl(url)
|
.baseUrl(url)
|
||||||
.client(
|
.client(
|
||||||
OkHttpClient.Builder()
|
OkHttpClient.Builder()
|
||||||
|
.addHeaders(RequestHeader.AuthBearerHeader(auth1Inch))
|
||||||
.addLoggers(context)
|
.addLoggers(context)
|
||||||
.build(),
|
.build(),
|
||||||
)
|
)
|
||||||
|
|
@ -61,7 +74,7 @@ class OneInchApisModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
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_ETH_PATH = "1/"
|
||||||
private const val ONE_INCH_BSC_PATH = "56/"
|
private const val ONE_INCH_BSC_PATH = "56/"
|
||||||
private const val ONE_INCH_POLYGON_PATH = "137/"
|
private const val ONE_INCH_POLYGON_PATH = "137/"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.tangem.datasource.utils
|
package com.tangem.datasource.utils
|
||||||
|
|
||||||
|
import com.tangem.lib.auth.AuthBearerProvider
|
||||||
import com.tangem.lib.auth.AuthProvider
|
import com.tangem.lib.auth.AuthProvider
|
||||||
import com.tangem.lib.auth.ExpressAuthProvider
|
import com.tangem.lib.auth.ExpressAuthProvider
|
||||||
|
|
||||||
|
|
@ -25,4 +26,8 @@ sealed class RequestHeader(vararg pairs: Pair<String, () -> String>) {
|
||||||
"user-id" to { expressAuthProvider.getUserId() },
|
"user-id" to { expressAuthProvider.getUserId() },
|
||||||
"session-id" to { expressAuthProvider.getSessionId() },
|
"session-id" to { expressAuthProvider.getSessionId() },
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class AuthBearerHeader(authBearerProvider: AuthBearerProvider) : RequestHeader(
|
||||||
|
"Authorization" to { "Bearer " + authBearerProvider.getApiKey() },
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.tangem.lib.auth
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides auth for tangemTech API
|
||||||
|
*/
|
||||||
|
interface AuthBearerProvider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns api-key
|
||||||
|
*/
|
||||||
|
fun getApiKey(): String
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue