1
1
package io .api .core .impl ;
2
2
3
3
import io .api .core .IAccountProvider ;
4
+ import io .api .error .ApiException ;
4
5
import io .api .error .EtherScanException ;
6
+ import io .api .executor .IHttpExecutor ;
5
7
import io .api .manager .IQueueManager ;
6
8
import io .api .model .*;
7
- import io .api .model .temporary .*;
9
+ import io .api .model .utility .*;
8
10
import io .api .util .BasicUtils ;
9
11
import org .jetbrains .annotations .NotNull ;
10
12
11
13
import java .math .BigInteger ;
12
14
import java .util .ArrayList ;
13
15
import java .util .Collections ;
14
16
import java .util .List ;
15
- import java .util .Map ;
16
17
import java .util .stream .Collectors ;
17
18
18
19
/**
23
24
*/
24
25
public class AccountProvider extends BasicProvider implements IAccountProvider {
25
26
26
- private static final int MAX_END_BLOCK = 999999999 ;
27
- private static final int MIN_START_BLOCK = 0 ;
28
-
29
27
private static final int OFFSET_MAX = 10000 ;
30
28
31
- private static final String BALANCE_ACTION = ACTION_PARAM + "balance" ;
32
- private static final String BALANCE_MULTI_ACTION = ACTION_PARAM + "balancemulti" ;
33
- private static final String TX_ACTION = ACTION_PARAM + "txlist" ;
34
- private static final String TX_INTERNAL_ACTION = ACTION_PARAM + "txlistinternal" ;
35
- private static final String TX_TOKEN_ACTION = ACTION_PARAM + "tokentx" ;
36
- private static final String MINED_ACTION = ACTION_PARAM + "getminedblocks" ;
29
+ private static final String ACT_BALANCE_ACTION = ACT_PARAM + "balance" ;
30
+ private static final String ACT_TOKEN_BALANCE_PARAM = ACT_PARAM + "tokenbalance" ;
31
+ private static final String ACT_BALANCE_MULTI_ACTION = ACT_PARAM + "balancemulti" ;
32
+ private static final String ACT_TX_ACTION = ACT_PARAM + "txlist" ;
33
+ private static final String ACT_TX_INTERNAL_ACTION = ACT_PARAM + "txlistinternal" ;
34
+ private static final String ACT_TX_TOKEN_ACTION = ACT_PARAM + "tokentx" ;
35
+ private static final String ACT_MINED_ACTION = ACT_PARAM + "getminedblocks" ;
37
36
38
37
private static final String BLOCK_TYPE_PARAM = "&blocktype=blocks" ;
39
38
private static final String TAG_LATEST_PARAM = "&tag=latest" ;
@@ -46,25 +45,31 @@ public class AccountProvider extends BasicProvider implements IAccountProvider {
46
45
private static final String OFFSET_PARAM = "&offset=" ;
47
46
private static final String PAGE_PARAM = "&page=" ;
48
47
49
- public AccountProvider (final IQueueManager queueManager ,
50
- final String baseUrl ,
51
- final Map < String , String > header ) {
52
- super (queueManager , "account" , baseUrl , header );
48
+ AccountProvider (final IQueueManager queueManager ,
49
+ final String baseUrl ,
50
+ final IHttpExecutor executor ) {
51
+ super (queueManager , "account" , baseUrl , executor );
53
52
}
54
53
55
54
@ NotNull
56
55
@ Override
57
56
public Balance balance (final String address ) {
58
57
BasicUtils .validateAddress (address );
59
58
60
- final String urlParams = BALANCE_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM + address ;
59
+ final String urlParams = ACT_BALANCE_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM + address ;
61
60
final StringResponseTO response = getRequest (urlParams , StringResponseTO .class );
62
61
if (response .getStatus () != 1 )
63
62
throw new EtherScanException (response .getMessage () + ", with status " + response .getStatus ());
64
63
65
64
return new Balance (address , new BigInteger (response .getResult ()));
66
65
}
67
66
67
+ @ NotNull
68
+ @ Override
69
+ public Balance balance (final String address , final String contract ) throws ApiException {
70
+ return null ;
71
+ }
72
+
68
73
@ NotNull
69
74
@ Override
70
75
public List <Balance > balances (final List <String > addresses ) {
@@ -78,7 +83,7 @@ public List<Balance> balances(final List<String> addresses) {
78
83
final List <List <String >> addressesAsBatches = BasicUtils .partition (addresses , 20 );
79
84
80
85
for (final List <String > batch : addressesAsBatches ) {
81
- final String urlParams = BALANCE_MULTI_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM + toAddressParam (batch );
86
+ final String urlParams = ACT_BALANCE_MULTI_ACTION + TAG_LATEST_PARAM + ADDRESS_PARAM + toAddressParam (batch );
82
87
final BalanceResponseTO response = getRequest (urlParams , BalanceResponseTO .class );
83
88
if (response .getStatus () != 1 )
84
89
throw new EtherScanException (response .getMessage () + ", with status " + response .getStatus ());
@@ -115,7 +120,7 @@ public List<Tx> txs(final String address, final long startBlock, final long endB
115
120
116
121
final String offsetParam = PAGE_PARAM + "%s" + OFFSET_PARAM + OFFSET_MAX ;
117
122
final String blockParam = START_BLOCK_PARAM + startBlock + END_BLOCK_PARAM + endBlock ;
118
- final String urlParams = TX_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
123
+ final String urlParams = ACT_TX_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
119
124
120
125
return getRequestUsingOffset (urlParams , TxResponseTO .class );
121
126
}
@@ -125,9 +130,9 @@ public List<Tx> txs(final String address, final long startBlock, final long endB
125
130
* To avoid 10k limit per response
126
131
*
127
132
* @param urlParams Url params for #getRequest()
128
- * @param tClass responseListTO class
129
- * @param <T> responseTO list T type
130
- * @param <R> responseListTO type
133
+ * @param tClass responseListTO class
134
+ * @param <T> responseTO list T type
135
+ * @param <R> responseListTO type
131
136
* @return List of T values
132
137
*/
133
138
private <T , R extends BaseListResponseTO > List <T > getRequestUsingOffset (final String urlParams , Class <R > tClass ) {
@@ -137,11 +142,11 @@ private <T, R extends BaseListResponseTO> List<T> getRequestUsingOffset(final St
137
142
final String formattedUrl = String .format (urlParams , page ++);
138
143
final R response = getRequest (formattedUrl , tClass );
139
144
BasicUtils .validateTxResponse (response );
140
- if (BasicUtils .isEmpty (response .getResult ()))
145
+ if (BasicUtils .isEmpty (response .getResult ()))
141
146
break ;
142
147
143
148
result .addAll (response .getResult ());
144
- if (response .getResult ().size () < OFFSET_MAX )
149
+ if (response .getResult ().size () < OFFSET_MAX )
145
150
break ;
146
151
}
147
152
@@ -167,7 +172,7 @@ public List<TxInternal> txsInternal(final String address, final long startBlock,
167
172
168
173
final String offsetParam = PAGE_PARAM + "%s" + OFFSET_PARAM + OFFSET_MAX ;
169
174
final String blockParam = START_BLOCK_PARAM + startBlock + END_BLOCK_PARAM + endBlock ;
170
- final String urlParams = TX_INTERNAL_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
175
+ final String urlParams = ACT_TX_INTERNAL_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
171
176
172
177
return getRequestUsingOffset (urlParams , TxInternalResponseTO .class );
173
178
}
@@ -178,7 +183,7 @@ public List<TxInternal> txsInternal(final String address, final long startBlock,
178
183
public List <TxInternal > txsInternalByHash (final String txhash ) {
179
184
BasicUtils .validateTxHash (txhash );
180
185
181
- final String urlParams = TX_INTERNAL_ACTION + TXHASH_PARAM + txhash ;
186
+ final String urlParams = ACT_TX_INTERNAL_ACTION + TXHASH_PARAM + txhash ;
182
187
final TxInternalResponseTO response = getRequest (urlParams , TxInternalResponseTO .class );
183
188
BasicUtils .validateTxResponse (response );
184
189
@@ -206,7 +211,7 @@ public List<TxToken> txsToken(final String address, final long startBlock, final
206
211
207
212
final String offsetParam = PAGE_PARAM + "%s" + OFFSET_PARAM + OFFSET_MAX ;
208
213
final String blockParam = START_BLOCK_PARAM + startBlock + END_BLOCK_PARAM + endBlock ;
209
- final String urlParams = TX_TOKEN_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
214
+ final String urlParams = ACT_TX_TOKEN_ACTION + offsetParam + ADDRESS_PARAM + address + blockParam + SORT_ASC_PARAM ;
210
215
211
216
return getRequestUsingOffset (urlParams , TxTokenResponseTO .class );
212
217
}
@@ -217,7 +222,7 @@ public List<Block> minedBlocks(final String address) {
217
222
BasicUtils .validateAddress (address );
218
223
219
224
final String offsetParam = PAGE_PARAM + "%s" + OFFSET_PARAM + OFFSET_MAX ;
220
- final String urlParams = MINED_ACTION + offsetParam + BLOCK_TYPE_PARAM + ADDRESS_PARAM + address ;
225
+ final String urlParams = ACT_MINED_ACTION + offsetParam + BLOCK_TYPE_PARAM + ADDRESS_PARAM + address ;
221
226
222
227
return getRequestUsingOffset (urlParams , BlockResponseTO .class );
223
228
}
0 commit comments