Skip to content

Commit b9a8dda

Browse files
committed
[2.0.0-SNAPSHOT]
Models builders added
1 parent 420c68f commit b9a8dda

20 files changed

Lines changed: 1361 additions & 29 deletions

src/main/java/io/goodforgod/api/etherscan/AccountAPIProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public List<Balance> balances(List<String> addresses) throws EtherScanException
9999

100100
if (!BasicUtils.isEmpty(response.getResult()))
101101
balances.addAll(response.getResult().stream()
102-
.map(Balance::of)
102+
.map(r -> new Balance(r.getAccount(), new BigInteger(r.getBalance())))
103103
.collect(Collectors.toList()));
104104
}
105105

src/main/java/io/goodforgod/api/etherscan/BasicProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.goodforgod.api.etherscan;
22

3-
import com.google.gson.*;
3+
import com.google.gson.Gson;
44
import io.goodforgod.api.etherscan.error.EtherScanException;
55
import io.goodforgod.api.etherscan.error.EtherScanParseException;
66
import io.goodforgod.api.etherscan.error.EtherScanRateLimitException;

src/main/java/io/goodforgod/api/etherscan/manager/impl/SemaphoreRequestQueueManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import io.goodforgod.api.etherscan.manager.RequestQueueManager;
44
import java.time.Duration;
5-
import java.util.concurrent.*;
5+
import java.util.concurrent.Executors;
6+
import java.util.concurrent.ScheduledExecutorService;
7+
import java.util.concurrent.Semaphore;
8+
import java.util.concurrent.TimeUnit;
69

710
/**
811
* Queue Semaphore implementation with size and reset time as params

src/main/java/io/goodforgod/api/etherscan/model/Abi.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
*/
99
public class Abi {
1010

11-
private String contractAbi;
12-
private boolean isVerified;
11+
private final String contractAbi;
12+
private final boolean isVerified;
1313

1414
private Abi(String contractAbi, boolean isVerified) {
1515
this.contractAbi = contractAbi;
@@ -70,4 +70,30 @@ public String toString() {
7070
", isVerified=" + isVerified +
7171
'}';
7272
}
73+
74+
public static AbiBuilder builder() {
75+
return new AbiBuilder();
76+
}
77+
78+
public static final class AbiBuilder {
79+
80+
private String contractAbi;
81+
private boolean isVerified;
82+
83+
private AbiBuilder() {}
84+
85+
public AbiBuilder withContractAbi(String contractAbi) {
86+
this.contractAbi = contractAbi;
87+
return this;
88+
}
89+
90+
public AbiBuilder withIsVerified(boolean isVerified) {
91+
this.isVerified = isVerified;
92+
return this;
93+
}
94+
95+
public Abi build() {
96+
return new Abi(contractAbi, isVerified);
97+
}
98+
}
7399
}

src/main/java/io/goodforgod/api/etherscan/model/Balance.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.goodforgod.api.etherscan.model;
22

3-
import io.goodforgod.api.etherscan.model.response.BalanceTO;
43
import java.math.BigInteger;
54
import java.util.Objects;
65

@@ -14,16 +13,11 @@ public class Balance {
1413
private final Wei balance;
1514
private final String address;
1615

17-
public Balance(final String address,
18-
final BigInteger balance) {
16+
public Balance(String address, BigInteger balance) {
1917
this.address = address;
2018
this.balance = new Wei(balance);
2119
}
2220

23-
public static Balance of(BalanceTO balance) {
24-
return new Balance(balance.getAccount(), new BigInteger(balance.getBalance()));
25-
}
26-
2721
// <editor-fold desc="Getters">
2822
public String getAddress() {
2923
return address;

src/main/java/io/goodforgod/api/etherscan/model/BaseTx.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@
1313
*/
1414
abstract class BaseTx {
1515

16-
private long blockNumber;
17-
private String timeStamp;
16+
long blockNumber;
17+
String timeStamp;
1818
@Expose(deserialize = false, serialize = false)
19-
private LocalDateTime _timeStamp;
20-
private String hash;
21-
private String from;
22-
private String to;
23-
private BigInteger value;
24-
private String contractAddress;
25-
private String input;
26-
private BigInteger gas;
27-
private BigInteger gasUsed;
19+
LocalDateTime _timeStamp;
20+
String hash;
21+
String from;
22+
String to;
23+
BigInteger value;
24+
String contractAddress;
25+
String input;
26+
BigInteger gas;
27+
BigInteger gasUsed;
2828

2929
// <editor-fold desc="Getter">
3030
public long getBlockNumber() {

src/main/java/io/goodforgod/api/etherscan/model/Block.java

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
*/
1313
public class Block {
1414

15-
private long blockNumber;
16-
private BigInteger blockReward;
17-
private String timeStamp;
15+
long blockNumber;
16+
BigInteger blockReward;
17+
String timeStamp;
1818
@Expose(deserialize = false, serialize = false)
19-
private LocalDateTime _timeStamp;
19+
LocalDateTime _timeStamp;
2020

2121
// <editor-fold desc="Getter">
2222
public long getBlockNumber() {
@@ -60,4 +60,45 @@ public String toString() {
6060
", _timeStamp=" + _timeStamp +
6161
'}';
6262
}
63+
64+
public static BlockBuilder builder() {
65+
return new BlockBuilder();
66+
}
67+
68+
public static class BlockBuilder {
69+
70+
private long blockNumber;
71+
private BigInteger blockReward;
72+
private LocalDateTime timeStamp;
73+
74+
BlockBuilder() {}
75+
76+
public static BlockBuilder aBlock() {
77+
return new BlockBuilder();
78+
}
79+
80+
public BlockBuilder withBlockNumber(long blockNumber) {
81+
this.blockNumber = blockNumber;
82+
return this;
83+
}
84+
85+
public BlockBuilder withBlockReward(BigInteger blockReward) {
86+
this.blockReward = blockReward;
87+
return this;
88+
}
89+
90+
public BlockBuilder withTimeStamp(LocalDateTime timeStamp) {
91+
this.timeStamp = timeStamp;
92+
return this;
93+
}
94+
95+
public Block build() {
96+
Block block = new Block();
97+
block.blockNumber = this.blockNumber;
98+
block.blockReward = this.blockReward;
99+
block._timeStamp = this.timeStamp;
100+
block.timeStamp = String.valueOf(this.timeStamp.toEpochSecond(ZoneOffset.UTC));
101+
return block;
102+
}
103+
}
63104
}

src/main/java/io/goodforgod/api/etherscan/model/BlockUncle.java

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.goodforgod.api.etherscan.util.BasicUtils;
44
import java.math.BigInteger;
5+
import java.time.LocalDateTime;
6+
import java.time.ZoneOffset;
57
import java.util.List;
68

79
/**
@@ -69,6 +71,42 @@ public String toString() {
6971
", unclePosition=" + unclePosition +
7072
'}';
7173
}
74+
75+
public static UncleBuilder builder() {
76+
return new UncleBuilder();
77+
}
78+
79+
public static final class UncleBuilder {
80+
81+
private String miner;
82+
private BigInteger blockreward;
83+
private int unclePosition;
84+
85+
private UncleBuilder() {}
86+
87+
public UncleBuilder withMiner(String miner) {
88+
this.miner = miner;
89+
return this;
90+
}
91+
92+
public UncleBuilder withBlockreward(BigInteger blockreward) {
93+
this.blockreward = blockreward;
94+
return this;
95+
}
96+
97+
public UncleBuilder withUnclePosition(int unclePosition) {
98+
this.unclePosition = unclePosition;
99+
return this;
100+
}
101+
102+
public Uncle build() {
103+
Uncle uncle = new Uncle();
104+
uncle.miner = this.miner;
105+
uncle.blockreward = this.blockreward;
106+
uncle.unclePosition = this.unclePosition;
107+
return uncle;
108+
}
109+
}
72110
}
73111

74112
private String blockMiner;
@@ -124,4 +162,64 @@ public String toString() {
124162
", uncleInclusionReward='" + uncleInclusionReward + '\'' +
125163
'}';
126164
}
165+
166+
public static BlockUncleBuilder builder() {
167+
return new BlockUncleBuilder();
168+
}
169+
170+
public static final class BlockUncleBuilder extends Block.BlockBuilder {
171+
172+
private long blockNumber;
173+
private BigInteger blockReward;
174+
private LocalDateTime timeStamp;
175+
private String blockMiner;
176+
private List<Uncle> uncles;
177+
private String uncleInclusionReward;
178+
179+
private BlockUncleBuilder() {
180+
super();
181+
}
182+
183+
public BlockUncleBuilder withBlockNumber(long blockNumber) {
184+
this.blockNumber = blockNumber;
185+
return this;
186+
}
187+
188+
public BlockUncleBuilder withBlockReward(BigInteger blockReward) {
189+
this.blockReward = blockReward;
190+
return this;
191+
}
192+
193+
public BlockUncleBuilder withTimeStamp(LocalDateTime timeStamp) {
194+
this.timeStamp = timeStamp;
195+
return this;
196+
}
197+
198+
public BlockUncleBuilder withBlockMiner(String blockMiner) {
199+
this.blockMiner = blockMiner;
200+
return this;
201+
}
202+
203+
public BlockUncleBuilder withUncles(List<Uncle> uncles) {
204+
this.uncles = uncles;
205+
return this;
206+
}
207+
208+
public BlockUncleBuilder withUncleInclusionReward(String uncleInclusionReward) {
209+
this.uncleInclusionReward = uncleInclusionReward;
210+
return this;
211+
}
212+
213+
public BlockUncle build() {
214+
BlockUncle blockUncle = new BlockUncle();
215+
blockUncle.uncles = this.uncles;
216+
blockUncle.uncleInclusionReward = this.uncleInclusionReward;
217+
blockUncle.blockNumber = this.blockNumber;
218+
blockUncle.blockReward = this.blockReward;
219+
blockUncle.blockMiner = this.blockMiner;
220+
blockUncle._timeStamp = this.timeStamp;
221+
blockUncle.timeStamp = String.valueOf(this.timeStamp.toEpochSecond(ZoneOffset.UTC));
222+
return blockUncle;
223+
}
224+
}
127225
}

src/main/java/io/goodforgod/api/etherscan/model/GasOracle.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,61 @@ public String toString() {
6868
", gasUsedRatio='" + gasUsedRatio + '\'' +
6969
'}';
7070
}
71+
72+
public static GasOracleBuilder builder() {
73+
return new GasOracleBuilder();
74+
}
75+
76+
public static final class GasOracleBuilder {
77+
78+
private Long LastBlock;
79+
private Integer SafeGasPrice;
80+
private Integer ProposeGasPrice;
81+
private Integer FastGasPrice;
82+
private Double suggestBaseFee;
83+
private String gasUsedRatio;
84+
85+
private GasOracleBuilder() {}
86+
87+
public GasOracleBuilder withLastBlock(Long LastBlock) {
88+
this.LastBlock = LastBlock;
89+
return this;
90+
}
91+
92+
public GasOracleBuilder withSafeGasPrice(Integer SafeGasPrice) {
93+
this.SafeGasPrice = SafeGasPrice;
94+
return this;
95+
}
96+
97+
public GasOracleBuilder withProposeGasPrice(Integer ProposeGasPrice) {
98+
this.ProposeGasPrice = ProposeGasPrice;
99+
return this;
100+
}
101+
102+
public GasOracleBuilder withFastGasPrice(Integer FastGasPrice) {
103+
this.FastGasPrice = FastGasPrice;
104+
return this;
105+
}
106+
107+
public GasOracleBuilder withSuggestBaseFee(Double suggestBaseFee) {
108+
this.suggestBaseFee = suggestBaseFee;
109+
return this;
110+
}
111+
112+
public GasOracleBuilder withGasUsedRatio(String gasUsedRatio) {
113+
this.gasUsedRatio = gasUsedRatio;
114+
return this;
115+
}
116+
117+
public GasOracle build() {
118+
GasOracle gasOracle = new GasOracle();
119+
gasOracle.ProposeGasPrice = this.ProposeGasPrice;
120+
gasOracle.LastBlock = this.LastBlock;
121+
gasOracle.suggestBaseFee = this.suggestBaseFee;
122+
gasOracle.SafeGasPrice = this.SafeGasPrice;
123+
gasOracle.FastGasPrice = this.FastGasPrice;
124+
gasOracle.gasUsedRatio = this.gasUsedRatio;
125+
return gasOracle;
126+
}
127+
}
71128
}

0 commit comments

Comments
 (0)