mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-07-23 01:25:54 +00:00
feat: send TronGrid API key on every request to raise the anonymous rate limit
Complements the retryOn429 fix - having a key means requests are far less likely to hit the rate limit at all, rather than just retrying transparently after they do. Wired the same way as INFURA_API_KEY/DWELLIR_API_KEY: buildConfigField read from local.properties or CI secret, added TRONGRID_API_KEY to android_build.yml's secret passthrough (every caller already uses secrets: inherit, so no per-workflow changes needed beyond this).
This commit is contained in:
@@ -62,6 +62,9 @@ on:
|
|||||||
# RPC provider - use own nodes or Dwellir
|
# RPC provider - use own nodes or Dwellir
|
||||||
DWELLIR_API_KEY:
|
DWELLIR_API_KEY:
|
||||||
required: false
|
required: false
|
||||||
|
# Tron - raises TronGrid's aggressive anonymous rate limit
|
||||||
|
TRONGRID_API_KEY:
|
||||||
|
required: false
|
||||||
# WalletConnect - REQUIRED for dApp connections
|
# WalletConnect - REQUIRED for dApp connections
|
||||||
WALLET_CONNECT_PROJECT_ID:
|
WALLET_CONNECT_PROJECT_ID:
|
||||||
required: true
|
required: true
|
||||||
@@ -111,6 +114,7 @@ env:
|
|||||||
EHTERSCAN_API_KEY_ETHEREUM: ${{ secrets.EHTERSCAN_API_KEY_ETHEREUM }}
|
EHTERSCAN_API_KEY_ETHEREUM: ${{ secrets.EHTERSCAN_API_KEY_ETHEREUM }}
|
||||||
INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }}
|
INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }}
|
||||||
DWELLIR_API_KEY: ${{ secrets.DWELLIR_API_KEY }}
|
DWELLIR_API_KEY: ${{ secrets.DWELLIR_API_KEY }}
|
||||||
|
TRONGRID_API_KEY: ${{ secrets.TRONGRID_API_KEY }}
|
||||||
WALLET_CONNECT_PROJECT_ID: ${{ secrets.WALLET_CONNECT_PROJECT_ID }}
|
WALLET_CONNECT_PROJECT_ID: ${{ secrets.WALLET_CONNECT_PROJECT_ID }}
|
||||||
DEBUG_GOOGLE_OAUTH_ID: ${{ secrets.DEBUG_GOOGLE_OAUTH_ID }}
|
DEBUG_GOOGLE_OAUTH_ID: ${{ secrets.DEBUG_GOOGLE_OAUTH_ID }}
|
||||||
RELEASE_GOOGLE_OAUTH_ID: ${{ secrets.RELEASE_GOOGLE_OAUTH_ID }}
|
RELEASE_GOOGLE_OAUTH_ID: ${{ secrets.RELEASE_GOOGLE_OAUTH_ID }}
|
||||||
|
|||||||
+14
-7
@@ -11,39 +11,46 @@ import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronCr
|
|||||||
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronTriggerContractRequest
|
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronTriggerContractRequest
|
||||||
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronTriggerContractResponse
|
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronTriggerContractResponse
|
||||||
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronUnsignedTransactionResponse
|
import io.novafoundation.nova.feature_wallet_impl.data.network.tron.model.TronUnsignedTransactionResponse
|
||||||
|
import io.novafoundation.nova.runtime.BuildConfig
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
import retrofit2.http.Headers
|
import retrofit2.http.Headers
|
||||||
import retrofit2.http.POST
|
import retrofit2.http.POST
|
||||||
import retrofit2.http.Url
|
import retrofit2.http.Url
|
||||||
|
|
||||||
|
// TronGrid's anonymous rate limit is aggressive enough to surface under normal, human-paced app usage (see
|
||||||
|
// RealTronGridApi.retryOn429's doc comment) - a free API key from trongrid.io raises it substantially. Sent on
|
||||||
|
// every request rather than only when a 429 is hit, since the point is to avoid needing the retry in the first
|
||||||
|
// place, not just to have a fallback.
|
||||||
|
private const val TRON_API_KEY_HEADER = "TRON-PRO-API-KEY: " + BuildConfig.TRONGRID_API_KEY
|
||||||
|
|
||||||
interface RetrofitTronGridApi {
|
interface RetrofitTronGridApi {
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun getAccount(@Url url: String): TronAccountResponse
|
suspend fun getAccount(@Url url: String): TronAccountResponse
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun createTransaction(@Url url: String, @Body body: TronCreateTransactionRequest): TronUnsignedTransactionResponse
|
suspend fun createTransaction(@Url url: String, @Body body: TronCreateTransactionRequest): TronUnsignedTransactionResponse
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun triggerConstantContract(@Url url: String, @Body body: TronTriggerContractRequest): TronTriggerContractResponse
|
suspend fun triggerConstantContract(@Url url: String, @Body body: TronTriggerContractRequest): TronTriggerContractResponse
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun triggerSmartContract(@Url url: String, @Body body: TronTriggerContractRequest): TronTriggerContractResponse
|
suspend fun triggerSmartContract(@Url url: String, @Body body: TronTriggerContractRequest): TronTriggerContractResponse
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun broadcastTransaction(@Url url: String, @Body body: TronBroadcastRequest): TronBroadcastResponse
|
suspend fun broadcastTransaction(@Url url: String, @Body body: TronBroadcastRequest): TronBroadcastResponse
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun getChainParameters(@Url url: String): TronChainParametersResponse
|
suspend fun getChainParameters(@Url url: String): TronChainParametersResponse
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Headers(UserAgent.NOVA)
|
@Headers(UserAgent.NOVA, TRON_API_KEY_HEADER)
|
||||||
suspend fun getAccountResource(@Url url: String, @Body body: TronAddressRequest): TronAccountResourceResponse
|
suspend fun getAccountResource(@Url url: String, @Body body: TronAddressRequest): TronAccountResourceResponse
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ android {
|
|||||||
|
|
||||||
buildConfigField "String", "INFURA_API_KEY", readStringSecret("INFURA_API_KEY")
|
buildConfigField "String", "INFURA_API_KEY", readStringSecret("INFURA_API_KEY")
|
||||||
buildConfigField "String", "DWELLIR_API_KEY", readStringSecret("DWELLIR_API_KEY")
|
buildConfigField "String", "DWELLIR_API_KEY", readStringSecret("DWELLIR_API_KEY")
|
||||||
|
buildConfigField "String", "TRONGRID_API_KEY", readStringSecret("TRONGRID_API_KEY")
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
Reference in New Issue
Block a user