Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitef3a682

Browse files
committed
Most of providers implemented
Model improvements & refactoring
1 parent2604d93 commitef3a682

29 files changed

+256
-101
lines changed

‎src/main/java/io/api/core/IAccountProvider.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public interface IAccountProvider {
1919
@NotNullBalancebalance(Stringaddress)throwsApiException;
2020

2121
/** ERC20 token balance for address */
22-
@NotNullBalancebalance(Stringaddress,Stringcontract)throwsApiException;
22+
@NotNullTokenBalancebalance(Stringaddress,Stringcontract)throwsApiException;
2323

2424
/**
2525
* Maximum 20 address for single batch request

‎src/main/java/io/api/core/IBlockProvider.java‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
importio.api.model.UncleBlock;
55
importorg.jetbrains.annotations.NotNull;
66

7-
importjava.util.Optional;
8-
97
/**
108
* EtherScan - API Descriptions
119
* https://etherscan.io/apis#blocks
@@ -16,5 +14,5 @@
1614
publicinterfaceIBlockProvider {
1715

1816
/** Return uncle blocks */
19-
@NotNullOptional<UncleBlock>uncles(longblockNumber)throwsApiException;
17+
@NotNullUncleBlockuncles(longblockNumber)throwsApiException;
2018
}

‎src/main/java/io/api/core/IContractProvider.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
packageio.api.core;
22

33
importio.api.error.ApiException;
4+
importio.api.model.Abi;
45
importorg.jetbrains.annotations.NotNull;
56

67
/**
@@ -13,5 +14,5 @@
1314
publicinterfaceIContractProvider {
1415

1516
/** Get Verified Contract Sources */
16-
@NotNullStringcontractAbi(Stringaddress)throwsApiException;
17+
@NotNullAbicontractAbi(Stringaddress)throwsApiException;
1718
}

‎src/main/java/io/api/core/ILogsProvider.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
packageio.api.core;
22

33
importio.api.model.Log;
4-
importio.api.model.builder.LogQuery;
4+
importio.api.model.query.impl.LogQuery;
55
importorg.jetbrains.annotations.NotNull;
66

77
importjava.util.List;

‎src/main/java/io/api/core/IStatisticProvider.java‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
importorg.jetbrains.annotations.NotNull;
66

77
importjava.math.BigInteger;
8-
importjava.util.Optional;
98

109
/**
1110
* EtherScan - API Descriptions
@@ -16,10 +15,10 @@
1615
*/
1716
publicinterfaceIStatisticProvider {
1817

19-
/** ERC20Total Supply */
20-
@NotNullOptional<BigInteger>supply(Stringcontract);
18+
/** ERC20token total Supply */
19+
@NotNullBigIntegersupply(Stringcontract);
2120

22-
/** EthTotal Supply */
21+
/** Ethtotal supply */
2322
@NotNullSupplysupply();
2423

2524
/** Eth last USD and BTC price */

‎src/main/java/io/api/core/impl/AccountProvider.java‎

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ public class AccountProvider extends BasicProvider implements IAccountProvider {
2626

2727
privatestaticfinalintOFFSET_MAX =10000;
2828

29-
privatestaticfinalStringACT_BALANCE_ACTION =ACT_PARAM +"balance";
30-
privatestaticfinalStringACT_TOKEN_BALANCE_PARAM =ACT_PARAM +"tokenbalance";
31-
privatestaticfinalStringACT_BALANCE_MULTI_ACTION =ACT_PARAM +"balancemulti";
32-
privatestaticfinalStringACT_TX_ACTION =ACT_PARAM +"txlist";
33-
privatestaticfinalStringACT_TX_INTERNAL_ACTION =ACT_PARAM +"txlistinternal";
34-
privatestaticfinalStringACT_TX_TOKEN_ACTION =ACT_PARAM +"tokentx";
35-
privatestaticfinalStringACT_MINED_ACTION =ACT_PARAM +"getminedblocks";
36-
29+
privatestaticfinalStringACT_BALANCE_ACTION =ACT_PREFIX +"balance";
30+
privatestaticfinalStringACT_TOKEN_BALANCE_PARAM =ACT_PREFIX +"tokenbalance";
31+
privatestaticfinalStringACT_BALANCE_MULTI_ACTION =ACT_PREFIX +"balancemulti";
32+
privatestaticfinalStringACT_TX_ACTION =ACT_PREFIX +"txlist";
33+
privatestaticfinalStringACT_TX_INTERNAL_ACTION =ACT_PREFIX +"txlistinternal";
34+
privatestaticfinalStringACT_TX_TOKEN_ACTION =ACT_PREFIX +"tokentx";
35+
privatestaticfinalStringACT_MINED_ACTION =ACT_PREFIX +"getminedblocks";
36+
37+
privatestaticfinalStringCONTRACT_PARAM ="&contractaddress=";
3738
privatestaticfinalStringBLOCK_TYPE_PARAM ="&blocktype=blocks";
3839
privatestaticfinalStringTAG_LATEST_PARAM ="&tag=latest";
3940
privatestaticfinalStringSTART_BLOCK_PARAM ="&startblock=";
@@ -53,7 +54,7 @@ public class AccountProvider extends BasicProvider implements IAccountProvider {
5354

5455
@NotNull
5556
@Override
56-
publicBalancebalance(finalStringaddress) {
57+
publicBalancebalance(finalStringaddress)throwsApiException{
5758
BasicUtils.validateAddress(address);
5859

5960
finalStringurlParams =ACT_BALANCE_ACTION +TAG_LATEST_PARAM +ADDRESS_PARAM +address;
@@ -66,13 +67,21 @@ public Balance balance(final String address) {
6667

6768
@NotNull
6869
@Override
69-
publicBalancebalance(finalStringaddress,finalStringcontract)throwsApiException {
70-
returnnull;
70+
publicTokenBalancebalance(finalStringaddress,finalStringcontract)throwsApiException {
71+
BasicUtils.validateAddress(address);
72+
BasicUtils.validateAddress(contract);
73+
74+
finalStringurlParams =ACT_TOKEN_BALANCE_PARAM +ADDRESS_PARAM +address +CONTRACT_PARAM +contract;
75+
finalStringResponseTOresponse =getRequest(urlParams,StringResponseTO.class);
76+
if (response.getStatus() !=1)
77+
thrownewEtherScanException(response.getMessage() +", with status " +response.getStatus());
78+
79+
returnnewTokenBalance(address,newBigInteger(response.getResult()),contract);
7180
}
7281

7382
@NotNull
7483
@Override
75-
publicList<Balance>balances(finalList<String>addresses) {
84+
publicList<Balance>balances(finalList<String>addresses)throwsApiException{
7685
if (BasicUtils.isEmpty(addresses))
7786
returnCollections.emptyList();
7887

@@ -103,19 +112,19 @@ private String toAddressParam(final List<String> addresses) {
103112

104113
@NotNull
105114
@Override
106-
publicList<Tx>txs(finalStringaddress) {
115+
publicList<Tx>txs(finalStringaddress)throwsApiException{
107116
returntxs(address,MIN_START_BLOCK);
108117
}
109118

110119
@NotNull
111120
@Override
112-
publicList<Tx>txs(finalStringaddress,finallongstartBlock) {
121+
publicList<Tx>txs(finalStringaddress,finallongstartBlock)throwsApiException{
113122
returntxs(address,startBlock,MAX_END_BLOCK);
114123
}
115124

116125
@NotNull
117126
@Override
118-
publicList<Tx>txs(finalStringaddress,finallongstartBlock,finallongendBlock) {
127+
publicList<Tx>txs(finalStringaddress,finallongstartBlock,finallongendBlock)throwsApiException{
119128
BasicUtils.validateAddress(address);
120129

121130
finalStringoffsetParam =PAGE_PARAM +"%s" +OFFSET_PARAM +OFFSET_MAX;
@@ -135,7 +144,8 @@ public List<Tx> txs(final String address, final long startBlock, final long endB
135144
* @param <R> responseListTO type
136145
* @return List of T values
137146
*/
138-
private <T,RextendsBaseListResponseTO>List<T>getRequestUsingOffset(finalStringurlParams,Class<R>tClass) {
147+
private <T,RextendsBaseListResponseTO>List<T>getRequestUsingOffset(finalStringurlParams,Class<R>tClass)
148+
throwsApiException {
139149
finalList<T>result =newArrayList<>();
140150
intpage =1;
141151
while (true) {
@@ -155,19 +165,19 @@ private <T, R extends BaseListResponseTO> List<T> getRequestUsingOffset(final St
155165

156166
@NotNull
157167
@Override
158-
publicList<TxInternal>txsInternal(finalStringaddress) {
168+
publicList<TxInternal>txsInternal(finalStringaddress)throwsApiException{
159169
returntxsInternal(address,MIN_START_BLOCK);
160170
}
161171

162172
@NotNull
163173
@Override
164-
publicList<TxInternal>txsInternal(finalStringaddress,finallongstartBlock) {
174+
publicList<TxInternal>txsInternal(finalStringaddress,finallongstartBlock)throwsApiException{
165175
returntxsInternal(address,startBlock,MAX_END_BLOCK);
166176
}
167177

168178
@NotNull
169179
@Override
170-
publicList<TxInternal>txsInternal(finalStringaddress,finallongstartBlock,finallongendBlock) {
180+
publicList<TxInternal>txsInternal(finalStringaddress,finallongstartBlock,finallongendBlock)throwsApiException{
171181
BasicUtils.validateAddress(address);
172182

173183
finalStringoffsetParam =PAGE_PARAM +"%s" +OFFSET_PARAM +OFFSET_MAX;
@@ -177,10 +187,9 @@ public List<TxInternal> txsInternal(final String address, final long startBlock,
177187
returngetRequestUsingOffset(urlParams,TxInternalResponseTO.class);
178188
}
179189

180-
181190
@NotNull
182191
@Override
183-
publicList<TxInternal>txsInternalByHash(finalStringtxhash) {
192+
publicList<TxInternal>txsInternalByHash(finalStringtxhash)throwsApiException{
184193
BasicUtils.validateTxHash(txhash);
185194

186195
finalStringurlParams =ACT_TX_INTERNAL_ACTION +TXHASH_PARAM +txhash;
@@ -194,19 +203,19 @@ public List<TxInternal> txsInternalByHash(final String txhash) {
194203

195204
@NotNull
196205
@Override
197-
publicList<TxToken>txsToken(finalStringaddress) {
206+
publicList<TxToken>txsToken(finalStringaddress)throwsApiException{
198207
returntxsToken(address,MIN_START_BLOCK);
199208
}
200209

201210
@NotNull
202211
@Override
203-
publicList<TxToken>txsToken(finalStringaddress,finallongstartBlock) {
212+
publicList<TxToken>txsToken(finalStringaddress,finallongstartBlock)throwsApiException{
204213
returntxsToken(address,startBlock,MAX_END_BLOCK);
205214
}
206215

207216
@NotNull
208217
@Override
209-
publicList<TxToken>txsToken(finalStringaddress,finallongstartBlock,finallongendBlock) {
218+
publicList<TxToken>txsToken(finalStringaddress,finallongstartBlock,finallongendBlock)throwsApiException{
210219
BasicUtils.validateAddress(address);
211220

212221
finalStringoffsetParam =PAGE_PARAM +"%s" +OFFSET_PARAM +OFFSET_MAX;
@@ -218,7 +227,7 @@ public List<TxToken> txsToken(final String address, final long startBlock, final
218227

219228
@NotNull
220229
@Override
221-
publicList<Block>minedBlocks(finalStringaddress) {
230+
publicList<Block>minedBlocks(finalStringaddress)throwsApiException{
222231
BasicUtils.validateAddress(address);
223232

224233
finalStringoffsetParam =PAGE_PARAM +"%s" +OFFSET_PARAM +OFFSET_MAX;

‎src/main/java/io/api/core/impl/BasicProvider.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ abstract class BasicProvider {
1616
staticfinalintMAX_END_BLOCK =999999999;
1717
staticfinalintMIN_START_BLOCK =0;
1818

19-
staticfinalStringACT_PARAM ="&action=";
19+
staticfinalStringACT_PREFIX ="&action=";
2020

2121
privatefinalStringmodule;
2222
privatefinalStringbaseUrl;

‎src/main/java/io/api/core/impl/BlockProvider.java‎

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
importio.api.util.BasicUtils;
99
importorg.jetbrains.annotations.NotNull;
1010

11-
importjava.util.Optional;
12-
1311
/**
1412
* ! NO DESCRIPTION !
1513
*
@@ -18,7 +16,7 @@
1816
*/
1917
publicclassBlockProviderextendsBasicProviderimplementsIBlockProvider {
2018

21-
privatestaticfinalStringACT_BLOCK_PARAM =ACT_PARAM +"getblockreward";
19+
privatestaticfinalStringACT_BLOCK_PARAM =ACT_PREFIX +"getblockreward";
2220

2321
privatestaticfinalStringBLOCKNO_PARAM ="&blockno=";
2422

@@ -30,13 +28,13 @@ public class BlockProvider extends BasicProvider implements IBlockProvider {
3028

3129
@NotNull
3230
@Override
33-
publicOptional<UncleBlock>uncles(longblockNumber) {
31+
publicUncleBlockuncles(longblockNumber) {
3432
finalStringurlParam =ACT_BLOCK_PARAM +BLOCKNO_PARAM +blockNumber;
3533
finalUncleBlockResponseTOresponse =getRequest(urlParam,UncleBlockResponseTO.class);
3634
BasicUtils.validateTxResponse(response);
3735

38-
return (response.getResult() ==null ||response.getResult().isEmpty())
39-
?Optional.empty()
40-
:Optional.of(response.getResult());
36+
return (response.getResult() ==null)
37+
?UncleBlock.EMPTY
38+
:response.getResult();
4139
}
4240
}

‎src/main/java/io/api/core/impl/ContractProvider.java‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
importio.api.error.EtherScanException;
55
importio.api.executor.IHttpExecutor;
66
importio.api.manager.IQueueManager;
7+
importio.api.model.Abi;
78
importio.api.model.utility.StringResponseTO;
89
importio.api.util.BasicUtils;
910
importorg.jetbrains.annotations.NotNull;
@@ -16,7 +17,7 @@
1617
*/
1718
publicclassContractProviderextendsBasicProviderimplementsIContractProvider {
1819

19-
privatestaticfinalStringACT_ABI_PARAM =ACT_PARAM +"getabi";
20+
privatestaticfinalStringACT_ABI_PARAM =ACT_PREFIX +"getabi";
2021

2122
privatestaticfinalStringADDRESS_PARAM ="&address=";
2223

@@ -28,16 +29,16 @@ public class ContractProvider extends BasicProvider implements IContractProvider
2829

2930
@NotNull
3031
@Override
31-
publicStringcontractAbi(finalStringaddress) {
32+
publicAbicontractAbi(finalStringaddress) {
3233
BasicUtils.validateAddress(address);
3334

3435
finalStringurlParam =ACT_ABI_PARAM +ADDRESS_PARAM +address;
3536
finalStringResponseTOresponse =getRequest(urlParam,StringResponseTO.class);
36-
if (response.getStatus() !=1)
37+
if (response.getStatus() !=1 && !"NOTOK".equals(response.getMessage()))
3738
thrownewEtherScanException(response.getMessage() +", with status " +response.getStatus());
3839

3940
returnBasicUtils.isEmpty(response.getResult())
40-
?""
41-
:response.getResult();
41+
?Abi.nonVerified()
42+
:Abi.verified(response.getResult());
4243
}
4344
}

‎src/main/java/io/api/core/impl/EtherScanApi.java‎

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
packageio.api.core.impl;
22

3-
importio.api.core.IAccountProvider;
4-
importio.api.core.IBlockProvider;
5-
importio.api.core.IContractProvider;
3+
importio.api.core.*;
64
importio.api.executor.IHttpExecutor;
75
importio.api.executor.impl.HttpExecutor;
86
importio.api.manager.IQueueManager;
@@ -21,9 +19,13 @@ public class EtherScanApi {
2119

2220
privatestaticfinalSupplier<IHttpExecutor>DEFAULT_SUPPLIER =HttpExecutor::new;
2321

24-
privatefinalIContractProvidercontract;
2522
privatefinalIAccountProvideraccount;
2623
privatefinalIBlockProviderblock;
24+
privatefinalIContractProvidercontract;
25+
privatefinalILogsProviderlogs;
26+
//private final IParityProvider parityProvider;
27+
privatefinalIStatisticProviderstats;
28+
privatefinalITransactionProvidertxs;
2729

2830
publicEtherScanApi(finalStringapiKey) {
2931
this(apiKey,EthereumNetwork.MAINNET);
@@ -44,9 +46,12 @@ public EtherScanApi(final String apiKey,
4446
finalEthereumNetworkusedNetwork = (network ==null) ?EthereumNetwork.MAINNET :network;
4547
finalStringbaseUrl ="https://" +usedNetwork.getDomain() +".etherscan.io/api" +"?apikey=" +apiKey;
4648

47-
this.contract =newContractProvider(masterQueue,baseUrl,executor);
4849
this.account =newAccountProvider(masterQueue,baseUrl,executor);
49-
this.block =newBlockProvider(masterQueue,baseUrl,executor);
50+
this.block =newBlockProvider(masterQueue,baseUrl,executor);
51+
this.contract =newContractProvider(masterQueue,baseUrl,executor);
52+
this.logs =newLogsProvider(masterQueue,baseUrl,executor);
53+
this.stats =newStatisticProvider(masterQueue,baseUrl,executor);
54+
this.txs =newTransactionProvider(masterQueue,baseUrl,executor);
5055
}
5156

5257
publicIContractProvidercontract() {
@@ -60,4 +65,16 @@ public IAccountProvider account() {
6065
publicIBlockProviderblock() {
6166
returnblock;
6267
}
68+
69+
publicILogsProviderlogs() {
70+
returnlogs;
71+
}
72+
73+
publicIStatisticProviderstats() {
74+
returnstats;
75+
}
76+
77+
publicITransactionProvidertxs() {
78+
returntxs;
79+
}
6380
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp