2121 * @author GoodforGod
2222 * @since 28.10.2018
2323 */
24- final class AccountAPIProvider extends BasicProvider implements AccountAPI {
24+ public class AccountAPIProvider extends BasicProvider implements AccountAPI {
2525
26- private static final int OFFSET_MAX = 10000 ;
26+ private static final int OFFSET_MAX = 9999 ;
2727
2828 private static final String ACT_BALANCE_ACTION = ACT_PREFIX + "balance" ;
2929 private static final String ACT_TOKEN_BALANCE_PARAM = ACT_PREFIX + "tokenbalance" ;
@@ -47,11 +47,11 @@ final class AccountAPIProvider extends BasicProvider implements AccountAPI {
4747 private static final String OFFSET_PARAM = "&offset=" ;
4848 private static final String PAGE_PARAM = "&page=" ;
4949
50- AccountAPIProvider (RequestQueueManager requestQueueManager ,
51- String baseUrl ,
52- EthHttpClient executor ,
53- Converter converter ,
54- int retryCount ) {
50+ public AccountAPIProvider (RequestQueueManager requestQueueManager ,
51+ String baseUrl ,
52+ EthHttpClient executor ,
53+ Converter converter ,
54+ int retryCount ) {
5555 super (requestQueueManager , "account" , baseUrl , executor , converter , retryCount );
5656 }
5757
@@ -61,7 +61,7 @@ public Balance balance(@NotNull String address) throws EtherScanException {
6161 BasicUtils .validateAddress (address );
6262
6363 final String urlParams = ACT_BALANCE_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM + address ;
64- final StringResponseTO response = getRequest (urlParams , StringResponseTO .class );
64+ final StringResponseTO response = getResponse (urlParams , StringResponseTO .class );
6565 if (response .getStatus () != 1 )
6666 throw new EtherScanResponseException (response );
6767
@@ -75,7 +75,7 @@ public TokenBalance balance(@NotNull String address, @NotNull String contract) t
7575 BasicUtils .validateAddress (contract );
7676
7777 final String urlParams = ACT_TOKEN_BALANCE_PARAM + ADDRESS_PARAM + address + CONTRACT_PARAM + contract ;
78- final StringResponseTO response = getRequest (urlParams , StringResponseTO .class );
78+ final StringResponseTO response = getResponse (urlParams , StringResponseTO .class );
7979 if (response .getStatus () != 1 )
8080 throw new EtherScanResponseException (response );
8181
@@ -98,7 +98,7 @@ public List<Balance> balances(@NotNull List<String> addresses) throws EtherScanE
9898 for (final List <String > batch : addressesAsBatches ) {
9999 final String urlParams = ACT_BALANCE_MULTI_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM
100100 + BasicUtils .toAddressParam (batch );
101- final BalanceResponseTO response = getRequest (urlParams , BalanceResponseTO .class );
101+ final BalanceResponseTO response = getResponse (urlParams , BalanceResponseTO .class );
102102 if (response .getStatus () != 1 ) {
103103 throw new EtherScanResponseException (response );
104104 }
@@ -139,34 +139,6 @@ public List<Tx> txs(@NotNull String address, long startBlock, long endBlock) thr
139139 return getRequestUsingOffset (urlParams , TxResponseTO .class );
140140 }
141141
142- /**
143- * Generic search for txs using offset api param To avoid 10k limit per response
144- *
145- * @param urlParams Url params for #getRequest()
146- * @param tClass responseListTO class
147- * @param <T> responseTO list T type
148- * @param <R> responseListTO type
149- * @return List of T values
150- */
151- private <T , R extends BaseListResponseTO <T >> List <T > getRequestUsingOffset (final String urlParams , Class <R > tClass )
152- throws EtherScanException {
153- final List <T > result = new ArrayList <>();
154- int page = 1 ;
155- while (true ) {
156- final String formattedUrl = String .format (urlParams , page ++);
157- final R response = getRequest (formattedUrl , tClass );
158- BasicUtils .validateTxResponse (response );
159- if (BasicUtils .isEmpty (response .getResult ()))
160- break ;
161-
162- result .addAll (response .getResult ());
163- if (response .getResult ().size () < OFFSET_MAX )
164- break ;
165- }
166-
167- return result ;
168- }
169-
170142 @ NotNull
171143 @ Override
172144 public List <TxInternal > txsInternal (@ NotNull String address ) throws EtherScanException {
@@ -200,7 +172,7 @@ public List<TxInternal> txsInternalByHash(@NotNull String txhash) throws EtherSc
200172 BasicUtils .validateTxHash (txhash );
201173
202174 final String urlParams = ACT_TX_INTERNAL_ACTION + TXHASH_PARAM + txhash ;
203- final TxInternalResponseTO response = getRequest (urlParams , TxInternalResponseTO .class );
175+ final TxInternalResponseTO response = getResponse (urlParams , TxInternalResponseTO .class );
204176 BasicUtils .validateTxResponse (response );
205177
206178 return BasicUtils .isEmpty (response .getResult ())
0 commit comments