Skip to content

Commit bb87f90

Browse files
committed
[3.0.0-SNAPSHOT]
Added JdkEthHttpClient All contracts open or protected Updated dependencies Updated Gradle
1 parent 3de7b24 commit bb87f90

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+536
-237
lines changed

README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ Library supports EtherScan *API* for all available *Ethereum Networks* for *ethe
1515

1616
**Gradle**
1717
```groovy
18-
implementation "com.github.goodforgod:java-etherscan-api:2.1.0"
18+
implementation "com.github.goodforgod:java-etherscan-api:3.0.0"
1919
```
2020

2121
**Maven**
2222
```xml
2323
<dependency>
2424
<groupId>com.github.goodforgod</groupId>
2525
<artifactId>java-etherscan-api</artifactId>
26-
<version>2.1.0</version>
26+
<version>3.0.0</version>
2727
</dependency>
2828
```
2929

@@ -76,6 +76,14 @@ EtherScanAPI api = EtherScanAPI.builder()
7676
.build();
7777
```
7878

79+
Also you can use Java 11+ HttpClient:
80+
```java
81+
Supplier<EthHttpClient> ethHttpClientSupplier = () -> new JdkEthHttpClient();
82+
EtherScanAPI api = EtherScanAPI.builder()
83+
.withHttpClient(supplier)
84+
.build();
85+
```
86+
7987
## API Examples
8088

8189
You can read about all API methods on [Etherscan](https://docs.etherscan.io/api-endpoints/accounts)
@@ -149,7 +157,7 @@ List<Log> logs = api.logs().logs(query);
149157
**Get tx details with proxy endpoint**
150158
```java
151159
EtherScanAPI api = EtherScanAPI.builder().build();
152-
Optional<TxProxy> tx = api.proxy().tx("0x1e2910a262b1008d0616a0beb24c1a491d78771baa54a33e66065e03b1f46bc1");
160+
Optional<TxProxy> tx = api.proxy().tx("0x1e2910a263.0.08d0616a0beb24c1a491d78771baa54a33e66065e03b1f46bc1");
153161
```
154162

155163
**Get block info with proxy endpoint**

build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ plugins {
33
id "java-library"
44
id "maven-publish"
55

6-
id "org.sonarqube" version "4.3.0.3225"
6+
id "org.sonarqube" version "6.3.1.5724"
77
id "com.diffplug.spotless" version "6.19.0"
8-
id "io.github.gradle-nexus.publish-plugin" version "1.3.0"
8+
id "io.github.gradle-nexus.publish-plugin" version "2.0.0"
99
}
1010

1111
repositories {
@@ -17,16 +17,16 @@ group = groupId
1717
var ver = System.getenv().getOrDefault("RELEASE_VERSION", artifactVersion)
1818
version = ver.startsWith("v") ? ver.substring(1) : ver
1919

20-
sourceCompatibility = JavaVersion.VERSION_1_8
21-
targetCompatibility = JavaVersion.VERSION_1_8
20+
sourceCompatibility = JavaVersion.VERSION_11
21+
targetCompatibility = JavaVersion.VERSION_11
2222

2323
dependencies {
24-
compileOnly "org.jetbrains:annotations:23.0.0"
24+
compileOnly "org.jetbrains:annotations:24.0.1"
2525
implementation "io.goodforgod:gson-configuration:2.0.0"
2626

27-
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.9.3"
28-
testImplementation "org.junit.jupiter:junit-jupiter-api:5.9.3"
29-
testImplementation "org.junit.jupiter:junit-jupiter-params:5.9.3"
27+
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.11.4"
28+
testImplementation "org.junit.jupiter:junit-jupiter-api:5.11.4"
29+
testImplementation "org.junit.jupiter:junit-jupiter-params:5.11.4"
3030
}
3131

3232
test {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
groupId=com.github.goodforgod
22
artifactId=java-etherscan-api
3-
artifactVersion=2.1.0-SNAPSHOT
3+
artifactVersion=3.0.0-SNAPSHOT
44

55

66
##### GRADLE #####

gradle/wrapper/gradle-wrapper.jar

-17.4 KB
Binary file not shown.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
44
networkTimeout=10000
5+
validateDistributionUrl=true
56
zipStoreBase=GRADLE_USER_HOME
67
zipStorePath=wrapper/dists

gradlew

Lines changed: 22 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 14 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
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

Comments
 (0)