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

Commit68bbb4c

Browse files
committed
Providers refactored
Contract provider implementationBasic java native HttpExecutor implementationBasic providerDTOs provided
1 parent1f76be1 commit68bbb4c

26 files changed

+544
-221
lines changed

‎pom.xml‎

Lines changed: 17 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
32
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
43
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
54
<modelVersion>4.0.0</modelVersion>
@@ -8,58 +7,36 @@
87
<artifactId>etherscan</artifactId>
98
<version>1.0.0</version>
109

11-
<name>etherscan</name>
12-
<!-- FIXME change it to the project's website-->
13-
<url>http://www.example.com</url>
10+
<name>etherscan-api</name>
1411

1512
<properties>
1613
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17-
<maven.compiler.source>1.7</maven.compiler.source>
18-
<maven.compiler.target>1.7</maven.compiler.target>
14+
<maven.compiler.source>1.8</maven.compiler.source>
15+
<maven.compiler.target>1.8</maven.compiler.target>
1916
</properties>
2017

2118
<dependencies>
2219
<dependency>
2320
<groupId>junit</groupId>
2421
<artifactId>junit</artifactId>
25-
<version>4.11</version>
22+
<version>4.12</version>
2623
<scope>test</scope>
2724
</dependency>
25+
26+
<dependency>
27+
<groupId>org.apache.httpcomponents</groupId>
28+
<artifactId>httpclient</artifactId>
29+
<version>4.5.6</version>
30+
</dependency>
31+
32+
<dependency>
33+
<groupId>com.jsoniter</groupId>
34+
<artifactId>jsoniter</artifactId>
35+
<version>0.9.19</version>
36+
</dependency>
2837
</dependencies>
2938

3039
<build>
31-
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom)-->
32-
<plugins>
33-
<plugin>
34-
<artifactId>maven-clean-plugin</artifactId>
35-
<version>3.0.0</version>
36-
</plugin>
37-
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging-->
38-
<plugin>
39-
<artifactId>maven-resources-plugin</artifactId>
40-
<version>3.0.2</version>
41-
</plugin>
42-
<plugin>
43-
<artifactId>maven-compiler-plugin</artifactId>
44-
<version>3.7.0</version>
45-
</plugin>
46-
<plugin>
47-
<artifactId>maven-surefire-plugin</artifactId>
48-
<version>2.20.1</version>
49-
</plugin>
50-
<plugin>
51-
<artifactId>maven-jar-plugin</artifactId>
52-
<version>3.0.2</version>
53-
</plugin>
54-
<plugin>
55-
<artifactId>maven-install-plugin</artifactId>
56-
<version>2.5.2</version>
57-
</plugin>
58-
<plugin>
59-
<artifactId>maven-deploy-plugin</artifactId>
60-
<version>2.8.2</version>
61-
</plugin>
62-
</plugins>
63-
</pluginManagement>
40+
6441
</build>
6542
</project>

‎src/main/java/io/api/App.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
packageio.api;
22

3+
importio.api.core.EtherScanApi;
4+
35
/**
46
*
57
*/
68
publicclassApp {
79
publicstaticvoidmain(String[]args) {
810
System.out.println("Hello World!");
11+
EtherScanApiapi =newEtherScanApi(args[0]);
12+
Stringabi =api.contract().contractAbi("0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413");
13+
inti =abi.length();
914
}
1015
}

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

Lines changed: 0 additions & 19 deletions
This file was deleted.

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
packageio.api.core;
22

3+
importio.api.core.impl.AccountProvider;
4+
importio.api.core.impl.ContractProvider;
5+
importio.api.model.EthereumNetwork;
6+
7+
importjava.util.HashMap;
8+
importjava.util.Map;
9+
310
/**
411
* ! NO DESCRIPTION !
512
*
@@ -8,4 +15,38 @@
815
*/
916
publicclassEtherScanApi {
1017

18+
privatestaticfinalMap<String,String>HEADERS =newHashMap<>();
19+
20+
static {
21+
HEADERS.put("accept-language","en,ru;q=0.9");
22+
HEADERS.put("accept-encoding","gzip, deflate, br");
23+
HEADERS.put("user-agent","Mozilla/5.0 (Windows NT 10.0; WOW64) Chrome/68.0.3440.106");
24+
HEADERS.put("cache-control","max-age=0");
25+
}
26+
27+
privatefinalContractProvidercontract;
28+
privatefinalAccountProvideraccount;
29+
30+
publicEtherScanApi(finalStringapiKey) {
31+
this(apiKey,EthereumNetwork.MAINNET);
32+
}
33+
34+
publicEtherScanApi(finalStringapiKey,
35+
finalEthereumNetworknetwork) {
36+
finalEthereumNetworkusedNetwork = (network ==null)
37+
?EthereumNetwork.MAINNET
38+
:network;
39+
40+
finalStringurl ="https://" +usedNetwork.getDomain() +".etherscan.io/api" +"?apikey=" +apiKey;
41+
this.contract =newContractProvider(url,HEADERS);
42+
this.account =newAccountProvider(url,HEADERS);
43+
}
44+
45+
publicContractProvidercontract() {
46+
returncontract;
47+
}
48+
49+
publicAccountProvideraccount() {
50+
returnaccount;
51+
}
1152
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
packageio.api.core;
2+
3+
importio.api.model.Balance;
4+
importio.api.model.Block;
5+
importio.api.model.Transaction;
6+
7+
importjava.util.List;
8+
importjava.util.Optional;
9+
10+
/**
11+
* EtherScan - API Descriptions
12+
* https://etherscan.io/apis#accounts
13+
*
14+
* @author GoodforGod
15+
* @since 28.10.2018
16+
*/
17+
publicinterfaceIAccountProvider {
18+
19+
/** Address ETH balance */
20+
Optional<Balance>balance(Stringaddress);
21+
22+
/**
23+
* Maximum 20 address for batch request
24+
* If address > 20, then there will be more than 1 request
25+
*/
26+
List<Balance>balances(List<String>addresses);
27+
28+
/** All txs */
29+
List<Transaction>txs(Stringaddress);
30+
/** Only last 10000 txs */
31+
List<Transaction>txs(Stringaddress,intstartBlock);
32+
/** Only last 10000 txs */
33+
List<Transaction>txs(Stringaddress,intstartBlock,intendBlock);
34+
35+
/** All internal txs */
36+
List<Transaction>txsInternal(Stringaddress);
37+
/** Only last 10000 internal txs */
38+
List<Transaction>txsInternal(Stringaddress,intstartBlock);
39+
/** Only last 10000 internal txs */
40+
List<Transaction>txsInternal(Stringaddress,intstartBlock,intendBlock);
41+
42+
/** All token txs */
43+
List<Transaction>txsToken(Stringaddress);
44+
/** Only last 10000 token txs */
45+
List<Transaction>txsToken(Stringaddress,intstartBlock);
46+
/** Only last 10000 token txs */
47+
List<Transaction>txsToken(Stringaddress,intstartBlock,intendBlock);
48+
49+
/** All blocks mined by address */
50+
List<Block>minedBlocks(Stringaddress);
51+
}

‎src/main/java/io/api/core/contract/IContractProvider.java‎renamed to ‎src/main/java/io/api/core/IContractProvider.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
packageio.api.core.contract;
1+
packageio.api.core;
22

33
/**
44
* ! NO DESCRIPTION !
@@ -8,4 +8,6 @@
88
*/
99
publicinterfaceIContractProvider {
1010

11+
/** Get Verified Contract Sources */
12+
StringcontractAbi(Stringaddress);
1113
}

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

Lines changed: 0 additions & 39 deletions
This file was deleted.

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

Lines changed: 0 additions & 16 deletions
This file was deleted.

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

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
packageio.api.core.executor;
2+
3+
importjava.io.BufferedReader;
4+
importjava.io.IOException;
5+
importjava.io.InputStreamReader;
6+
importjava.net.HttpURLConnection;
7+
importjava.net.URL;
8+
importjava.util.Map;
9+
10+
importstaticjava.net.HttpURLConnection.HTTP_MOVED_PERM;
11+
importstaticjava.net.HttpURLConnection.HTTP_MOVED_TEMP;
12+
13+
/**
14+
* ! NO DESCRIPTION !
15+
*
16+
* @author GoodforGod
17+
* @since 28.10.2018
18+
*/
19+
publicclassHttpExecutor {
20+
21+
publicStringget(finalStringurlAsString,
22+
finalMap<String,String>headers)throwsIOException {
23+
24+
finalURLurl =newURL(urlAsString);
25+
finalHttpURLConnectionconnection = (HttpURLConnection)url.openConnection();
26+
connection.setRequestMethod("GET");
27+
headers.forEach(connection::setRequestProperty);
28+
connection.setConnectTimeout(30000);
29+
30+
finalintstatus =connection.getResponseCode();
31+
if (status ==HTTP_MOVED_TEMP ||status ==HTTP_MOVED_PERM) {
32+
finalStringlocation =connection.getHeaderField("Location");
33+
returnget(location,headers);
34+
}
35+
36+
finalBufferedReaderin =newBufferedReader(newInputStreamReader(connection.getInputStream()));
37+
StringinputLine;
38+
finalStringBuildercontent =newStringBuilder();
39+
while ((inputLine =in.readLine()) !=null)
40+
content.append(inputLine);
41+
42+
in.close();
43+
connection.disconnect();
44+
45+
returncontent.toString();
46+
}
47+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp