Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 15d5775

Browse files
committed
Proxy Provider implemented mostly
ProxyTO models
1 parent ef3a682 commit 15d5775

17 files changed

+674
-101
lines changed

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

-12
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.api.core;
2+
3+
import io.api.model.proxy.BlockProxy;
4+
import io.api.model.proxy.TxProxy;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
import java.math.BigInteger;
8+
import java.util.Optional;
9+
10+
/**
11+
* EtherScan - API Descriptions
12+
* https://etherscan.io/apis#proxy
13+
*
14+
* @author GoodforGod
15+
* @since 30.10.2018
16+
*/
17+
public interface IProxyProvider {
18+
19+
long blockNoLast();
20+
21+
@NotNull Optional<BlockProxy> block(long blockNo);
22+
@NotNull Optional<BlockProxy> blockUncle(long blockNo, long index);
23+
24+
@NotNull Optional<TxProxy> tx(String txhash);
25+
@NotNull Optional<TxProxy> tx(long blockNo, long index);
26+
27+
int txCount(long blockNo);
28+
int txSendCount(String address);
29+
boolean txSendRaw(String hexEncodedTx);
30+
31+
@NotNull String call(String address, String data);
32+
33+
@NotNull String code(String address);
34+
35+
@NotNull String storageAt(String address, long position);
36+
37+
@NotNull BigInteger gasPrice();
38+
@NotNull BigInteger gasEstimated();
39+
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public class AccountProvider extends BasicProvider implements IAccountProvider {
3434
private static final String ACT_TX_TOKEN_ACTION = ACT_PREFIX + "tokentx";
3535
private static final String ACT_MINED_ACTION = ACT_PREFIX + "getminedblocks";
3636

37-
private static final String CONTRACT_PARAM = "&contractaddress=";
3837
private static final String BLOCK_TYPE_PARAM = "&blocktype=blocks";
39-
private static final String TAG_LATEST_PARAM = "&tag=latest";
38+
private static final String CONTRACT_PARAM = "&contractaddress=";
4039
private static final String START_BLOCK_PARAM = "&startblock=";
40+
private static final String TAG_LATEST_PARAM = "&tag=latest";
4141
private static final String END_BLOCK_PARAM = "&endblock=";
4242
private static final String SORT_DESC_PARAM = "&sort=desc";
4343
private static final String SORT_ASC_PARAM = "&sort=asc";

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class EtherScanApi {
2323
private final IBlockProvider block;
2424
private final IContractProvider contract;
2525
private final ILogsProvider logs;
26-
//private final IParityProvider parityProvider;
26+
//private final IProxyProvider parityProvider;
2727
private final IStatisticProvider stats;
2828
private final ITransactionProvider txs;
2929

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

-34
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
package io.api.core.impl;
2+
3+
import io.api.core.IProxyProvider;
4+
import io.api.executor.IHttpExecutor;
5+
import io.api.manager.IQueueManager;
6+
import io.api.model.proxy.BlockProxy;
7+
import io.api.model.proxy.TxProxy;
8+
import io.api.model.proxy.utility.BlockProxyTO;
9+
import io.api.model.proxy.utility.StringProxyTO;
10+
import io.api.model.proxy.utility.TxProxyTO;
11+
import io.api.util.BasicUtils;
12+
import org.jetbrains.annotations.NotNull;
13+
14+
import java.math.BigInteger;
15+
import java.util.Optional;
16+
17+
/**
18+
* ! NO DESCRIPTION !
19+
*
20+
* @author GoodforGod
21+
* @since 28.10.2018
22+
*/
23+
public class ProxyProvider extends BasicProvider implements IProxyProvider {
24+
25+
private static final String ACT_BLOCKNO_PARAM = ACT_PREFIX + "eth_blockNumber";
26+
private static final String ACT_BY_BLOCKNO_PARAM = ACT_PREFIX + "eth_getBlockByNumber";
27+
private static final String ACT_UNCLE_BY_BLOCKNOINDEX_PARAM = ACT_PREFIX + "eth_getUncleByBlockNumberAndIndex";
28+
private static final String ACT_BLOCKTX_COUNT_PARAM = ACT_PREFIX + "eth_getBlockTransactionCountByNumber";
29+
private static final String ACT_TX_BY_HASH_PARAM = ACT_PREFIX + "eth_getTransactionByHash";
30+
private static final String ACT_TX_BY_BLOCKNOINDEX_PARAM = ACT_PREFIX + "eth_getTransactionByBlockNumberAndIndex";
31+
private static final String ACT_TX_COUNT_PARAM = ACT_PREFIX + "eth_getTransactionCount";
32+
private static final String ACT_SEND_RAW_TX_PARAM = ACT_PREFIX + "eth_sendRawTransaction";
33+
private static final String ACT_TX_RECEIPT_PARAM = ACT_PREFIX + "eth_getTransactionReceipt";
34+
private static final String ACT_CALL_PARAM = ACT_PREFIX + "eth_call";
35+
private static final String ACT_CODE_PARAM = ACT_PREFIX + "eth_getCode";
36+
private static final String ACT_STORAGEAT_PARAM = ACT_PREFIX + "eth_getStorageAt";
37+
private static final String ACT_GASPRICE_PARAM = ACT_PREFIX + "eth_gasPrice";
38+
private static final String ACT_ESTIMATEGAS_PARAM = ACT_PREFIX + "eth_estimateGas";
39+
40+
private static final String BOOLEAN_PARAM = "&boolean=true";
41+
private static final String TAG_LAST_PARAM = "&tag=lastest";
42+
private static final String GASPRICE_PARAM = "&gasPrice=";
43+
private static final String POSITION_PARAM = "&position=";
44+
private static final String ADDRESS_PARAM = "&address=";
45+
private static final String TXHASH_PARAM = "&txhash=";
46+
private static final String INDEX_PARAM = "&index=";
47+
private static final String VALUE_PARAM = "&value=";
48+
private static final String DATA_PARAM = "&data=";
49+
private static final String GAS_PARAM = "&gas=";
50+
private static final String TAG_PARAM = "&tag=";
51+
private static final String HEX_PARAM = "&hex=";
52+
private static final String TO_PARAM = "&to=";
53+
54+
ProxyProvider(final IQueueManager queue,
55+
final String baseUrl,
56+
final IHttpExecutor executor) {
57+
super(queue, "proxy", baseUrl,executor);
58+
}
59+
60+
@Override
61+
public long blockNoLast() {
62+
return 0;
63+
}
64+
65+
@NotNull
66+
@Override
67+
public Optional<BlockProxy> block(final long blockNo) {
68+
final long compBlockNo = BasicUtils.compensateMinBlock(blockNo);
69+
70+
final String urlParams = ACT_BY_BLOCKNO_PARAM + TAG_PARAM + compBlockNo;
71+
final BlockProxyTO response = getRequest(urlParams, BlockProxyTO.class);
72+
return Optional.ofNullable(response.getResult());
73+
}
74+
75+
@NotNull
76+
@Override
77+
public Optional<BlockProxy> blockUncle(final long blockNo, final long index) {
78+
final long compBlockNo = BasicUtils.compensateMinBlock(blockNo);
79+
final long compIndex = BasicUtils.compensateMinBlock(index);
80+
81+
final String urlParams = ACT_UNCLE_BY_BLOCKNOINDEX_PARAM + TAG_PARAM + compBlockNo + INDEX_PARAM + compIndex;
82+
final BlockProxyTO response = getRequest(urlParams, BlockProxyTO.class);
83+
return Optional.ofNullable(response.getResult());
84+
}
85+
86+
@NotNull
87+
@Override
88+
public Optional<TxProxy> tx(final String txhash) {
89+
BasicUtils.validateTxHash(txhash);
90+
91+
final String urlParams = ACT_TX_BY_HASH_PARAM + TXHASH_PARAM + txhash;
92+
final TxProxyTO response = getRequest(urlParams, TxProxyTO.class);
93+
return Optional.ofNullable(response.getResult());
94+
}
95+
96+
@NotNull
97+
@Override
98+
public Optional<TxProxy> tx(final long blockNo, final long index) {
99+
final long compBlockNo = BasicUtils.compensateMinBlock(blockNo);
100+
final long compIndex = BasicUtils.compensateMinBlock(index);
101+
102+
final String urlParams = ACT_TX_BY_BLOCKNOINDEX_PARAM + TAG_PARAM + compBlockNo + INDEX_PARAM + compIndex;
103+
final TxProxyTO response = getRequest(urlParams, TxProxyTO.class);
104+
return Optional.ofNullable(response.getResult());
105+
}
106+
107+
@Override
108+
public int txCount(final long blockNo) {
109+
final long compensatedBlockNo = BasicUtils.compensateMinBlock(blockNo);
110+
final String urlParams = ACT_TX_COUNT_PARAM + TAG_PARAM + compensatedBlockNo;
111+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
112+
return Integer.valueOf(response.getResult());
113+
}
114+
115+
@Override
116+
public int txSendCount(final String address) {
117+
BasicUtils.validateAddress(address);
118+
119+
final String urlParams = ACT_TX_BY_HASH_PARAM + ADDRESS_PARAM + address + TAG_LAST_PARAM;
120+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
121+
return (int) BasicUtils.parseHex(response.getResult());
122+
}
123+
124+
//TODO need postRequest executor implementation
125+
@Override
126+
public boolean txSendRaw(final String hexEncodedTx) {
127+
return false;
128+
}
129+
130+
@NotNull
131+
@Override
132+
public String call(final String address, final String data) {
133+
BasicUtils.validateAddress(address);
134+
135+
final String urlParams = ACT_CALL_PARAM + TO_PARAM + address + DATA_PARAM + data + TAG_LAST_PARAM;
136+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
137+
return (BasicUtils.isEmpty(response.getResult()))
138+
? ""
139+
: response.getResult();
140+
}
141+
142+
@NotNull
143+
@Override
144+
public String code(final String address) {
145+
BasicUtils.validateAddress(address);
146+
147+
final String urlParams = ACT_CODE_PARAM + ADDRESS_PARAM + address + TAG_LAST_PARAM;
148+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
149+
return (BasicUtils.isEmpty(response.getResult()))
150+
? ""
151+
: response.getResult();
152+
}
153+
154+
@NotNull
155+
@Override
156+
public String storageAt(final String address, final long position) {
157+
BasicUtils.validateAddress(address);
158+
final long compPosition = BasicUtils.compensateMinBlock(position);
159+
160+
final String urlParams = ACT_STORAGEAT_PARAM + ADDRESS_PARAM + address + POSITION_PARAM + compPosition + TAG_LAST_PARAM;
161+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
162+
return (BasicUtils.isEmpty(response.getResult()))
163+
? ""
164+
: response.getResult();
165+
}
166+
167+
@NotNull
168+
@Override
169+
public BigInteger gasPrice() {
170+
final StringProxyTO response = getRequest(ACT_GASPRICE_PARAM, StringProxyTO.class);
171+
return (BasicUtils.isEmpty(response.getResult()))
172+
? BigInteger.valueOf(-1)
173+
: BigInteger.valueOf(BasicUtils.parseHex(response.getResult()));
174+
}
175+
176+
@NotNull
177+
@Override
178+
public BigInteger gasEstimated() {
179+
final String urlParams = ACT_STORAGEAT_PARAM + VALUE_PARAM + "0xff22"
180+
+ GAS_PARAM + "0xffffff" + GASPRICE_PARAM + "0x151da038cc";
181+
final StringProxyTO response = getRequest(urlParams, StringProxyTO.class);
182+
return (BasicUtils.isEmpty(response.getResult()))
183+
? BigInteger.valueOf(-1)
184+
: BigInteger.valueOf(BasicUtils.parseHex(response.getResult()));
185+
}
186+
}

‎src/main/java/io/api/model/Block.java

+7-14
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.api.util.BasicUtils;
44

5+
import java.math.BigInteger;
56
import java.time.LocalDateTime;
67
import java.time.ZoneOffset;
78

@@ -13,21 +14,13 @@
1314
*/
1415
public class Block {
1516

16-
private String blockNumber;
17+
private long blockNumber;
18+
private BigInteger blockReward;
1719
private String timeStamp;
1820
private LocalDateTime _timeStamp;
19-
private String blockReward;
20-
21-
public Block() {}
22-
23-
public Block(String blockNumber, String timeStamp, String blockReward) {
24-
this.blockNumber = blockNumber;
25-
this.timeStamp = timeStamp;
26-
this.blockReward = blockReward;
27-
}
2821

2922
//<editor-fold desc="Getter">
30-
public String getBlockNumber() {
23+
public long getBlockNumber() {
3124
return blockNumber;
3225
}
3326

@@ -37,7 +30,7 @@ public LocalDateTime getTimeStamp() {
3730
return _timeStamp;
3831
}
3932

40-
public String getBlockReward() {
33+
public BigInteger getBlockReward() {
4134
return blockReward;
4235
}
4336
//</editor-fold>
@@ -49,11 +42,11 @@ public boolean equals(Object o) {
4942

5043
Block block = (Block) o;
5144

52-
return blockNumber != null ? blockNumber.equals(block.blockNumber) : block.blockNumber == null;
45+
return blockNumber == block.blockNumber;
5346
}
5447

5548
@Override
5649
public int hashCode() {
57-
return blockNumber != null ? blockNumber.hashCode() : 0;
50+
return (int) (blockNumber ^ (blockNumber >>> 32));
5851
}
5952
}

0 commit comments

Comments
 (0)