diff --git a/README.md b/README.md
index 9eac690..c0f5a0e 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
##Introduction
-The JOTA library is a simple Java8 wrapper around [[IOTA]](http://www.iotatoken.com/) Node's JSON-REST HTTP interface.
+The JOTA library is a simple Java wrapper around [[IOTA]](http://www.iotatoken.com/) Node's JSON-REST HTTP interface.
It allows to connect easily using java directly to a local or a remote [[IOTA node]](https://iota.readme.io/docs/syncing-to-the-network).
-* **Latest release:** 0.0.1 Snapshot
+* **Latest release:** 1.0.0 Release
* **Compatibility:** in development to be fully compatible with IOTA IRI v1.1.0
-* **API coverage:** 11 of 14 commands fully implemented
+* **API coverage:** 14 of 14 commands fully implemented
* **License:** Apache License 2.0
-* **Readme updated:** 2016-10-07 14:23:43 (UTC)
+* **Readme updated:** 2016-11-12 21:05:02 (UTC)
A list of all *IOTA* JSON-REST API commands currently supported by jota wrapper can be found in the `Commands` enum (see [here](https://github.com/davassi/JOTA/blob/master/src/main/java/jota/IotaAPICommands.java) for more details).
@@ -17,7 +17,7 @@ All the boilerplate code for connecting to the node rest interface has been elim
##Technologies & dependencies
-The JOTA library has been designed to be used exclusively with Java 8+.
+The JOTA library has been designed to be used with Java6+, in order to promote compatibility with Android.
Core dependencies:
* Retrofit Client 2.1.0 [[link]](https://square.github.io/retrofit/)
@@ -28,10 +28,9 @@ Other dependencies:
* Simple Logging Facade for Java 1.7.21 [[link]](http://www.slf4j.org/)
* Apache Commons Lang 3.3.2 [[link]](http://commons.apache.org/proper/commons-lang/)
-
##Getting started
-Connect to your local node with the default settings is quite straitforward: it requires only 2 lines of code. For example, in order to fetch the Node Info:
+Connect to your local node with the default settings is quite straightforward: it requires only 2 lines of code. For example, in order to fetch the Node Info:
IotaApiProxy api = new IotaApiProxy.Builder.build();
GetNodeInfoResponse response = api.getNodeInfo();
@@ -50,7 +49,6 @@ Jota is still *not* in the central maven repository. It will be available when i
In order to communicate with *IOTA node*, JOTA needs to be aware of your node's exact configuration. The easiest way of providing this information is via a `node_config.properties` file, for example:
-
iota.node.protocol=http
iota.node.host=127.0.0.1
iota.node.port=14265
@@ -68,3 +66,4 @@ If JOTA has been useful to you and you feel like contributing, consider posting
* Bitcoin: `3FGCHqhG1SUpgn2eS1Agq2KnxJemWnQFbB`
+
diff --git a/pom.xml b/pom.xml
index 8c7660e..cf6c74d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,12 +4,12 @@
4.0.0
com.iota
jota
- 0.0.1-SNAPSHOT
+ 1.0.0-RELEASE
JOTA
- JOTA library is a simple Java8 wrapper around IOTA Node's JSON-REST HTTP interface.
+ JOTA library is a simple Java wrapper around IOTA Node's JSON-REST HTTP interface.
- 1.8
+ 1.7
UTF-8
diff --git a/src/main/java/jota/IotaAPICommands.java b/src/main/java/jota/IotaAPICommands.java
index 90dbfb1..96e0b5d 100644
--- a/src/main/java/jota/IotaAPICommands.java
+++ b/src/main/java/jota/IotaAPICommands.java
@@ -2,15 +2,17 @@ package jota;
/**
* IOTA's node command list
+ *
+ * 'params' is not currently used.
*/
public enum IotaAPICommands {
GET_NODE_INFO("getNodeInfo", 0),
GET_NEIGHBORS("getNeighbors", 0),
- ADD_NEIGHBORS("addNeighbors", 0),
- REMOVE_NEIGHBORS("removeNeighbors",0),
+ ADD_NEIGHBORS("addNeighbors", 1),
+ REMOVE_NEIGHBORS("removeNeighbors",1),
GET_TIPS("getTips",0),
- FIND_TRANSACTIONS("findTransactions", 0),
+ FIND_TRANSACTIONS("findTransactions", 1),
GET_TRYTES("getTrytes", 0),
GET_INCLUSIONS_STATES("getInclusionStates", 0),
GET_BALANCES("getBalances", 0),
@@ -20,7 +22,7 @@ public enum IotaAPICommands {
BROADCAST_TRANSACTIONS("broadcastTransactions",0),
STORE_TRANSACTIONS("storeTransactions", 0);
- private IotaAPICommands(String command, int params) {
+ IotaAPICommands(String command, int params) {
this.command = command;
this.params = params;
}
diff --git a/src/main/java/jota/IotaAPIProxy.java b/src/main/java/jota/IotaAPIProxy.java
index b9f84b1..3b4e49e 100644
--- a/src/main/java/jota/IotaAPIProxy.java
+++ b/src/main/java/jota/IotaAPIProxy.java
@@ -78,6 +78,16 @@ public class IotaAPIProxy {
return wrapCheckedException(res).body();
}
+ public AddNeighborsResponse addNeighbors(String ... uris) {
+ final Call res = service.addNeighbors(IotaNeighborsRequest.createAddNeighborsRequest(uris));
+ return wrapCheckedException(res).body();
+ }
+
+ public RemoveNeighborsResponse removeNeighbors(String ... uris) {
+ final Call res = service.removeNeighbors(IotaNeighborsRequest.createRemoveNeighborsRequest(uris));
+ return wrapCheckedException(res).body();
+ }
+
public GetTipsResponse getTips() {
final Call res = service.getTips(IotaCommandRequest.createGetTipsRequest());
return wrapCheckedException(res).body();
@@ -129,11 +139,35 @@ public class IotaAPIProxy {
return wrapCheckedException(res).body();
}
- public GetTransactionsToApproveResponse getTransactionsToApprove(String milestone) {
- final Call res = service.getTransactionsToApprove(IotaGetTransactionsToApproveRequest.createIotaGetTransactionsToApproveRequest(milestone));
+ public GetTransactionsToApproveResponse getTransactionsToApprove(Integer depth) {
+ final Call res = service.getTransactionsToApprove(IotaGetTransactionsToApproveRequest.createIotaGetTransactionsToApproveRequest(depth));
return wrapCheckedException(res).body();
}
+ public GetBalancesResponse getBalances(Integer threshold, String [] addresses) {
+ final Call res = service.getBalances(IotaGetBalancesRequest.createIotaGetBalancesRequest(threshold, addresses));
+ return wrapCheckedException(res).body();
+ }
+
+ public InterruptAttachingToTangleResponse interruptAttachingToTangle() {
+ final Call res = service.interruptAttachingToTangle(IotaCommandRequest.createInterruptAttachToTangleRequest());
+ return wrapCheckedException(res).body();
+ }
+
+ public GetAttachToTangleResponse attachToTangle(String trunkTransaction, String branchTransaction, Integer minWeightMagnitude, String ... trytes) {
+ final Call res = service.attachToTangle(IotaAttachToTangleRequest.createAttachToTangleRequest(trunkTransaction, branchTransaction, minWeightMagnitude, trytes));
+ return wrapCheckedException(res).body();
+ }
+
+ public StoreTransactionsResponse storeTransactions(String ... trytes) {
+ final Call res = service.storeTransactions(IotaStoreTransactionsRequest.createStoreTransactionsRequest(trytes));
+ return wrapCheckedException(res).body();
+ }
+
+ public BroadcastTransactionsResponse broadcastTransactions(String ... trytes) {
+ final Call res = service.broadcastTransactions(IotaBroadcastTransactionRequest.createBroadcastTransactionsRequest(trytes));
+ return wrapCheckedException(res).body();
+ }
protected static Response wrapCheckedException(final Call call) {
try {
@@ -159,11 +193,13 @@ public class IotaAPIProxy {
}
private static final String env(String env, String def) {
- return Optional.ofNullable(System.getenv(env)).orElseGet(() -> {
- log.warn("Enviroment variable '{}' is not defined, and actual value has not been specified. "
+ final String value = System.getenv(env);
+ if (value == null) {
+ log.warn("Environment variable '{}' is not defined, and actual value has not been specified. "
+ "Rolling back to default value: '{}'", env, def);
return def;
- });
+ }
+ return value;
}
public static class Builder {
@@ -192,17 +228,17 @@ public class IotaAPIProxy {
final Properties nodeConfig = new Properties();
nodeConfig.load(reader);
- Optional.ofNullable(nodeConfig.getProperty("iota.node.protocol"))
- .filter(v -> protocol == null)
- .ifPresent(v -> protocol = v);
+ if (nodeConfig.getProperty("iota.node.protocol") != null) {
+ protocol = nodeConfig.getProperty("iota.node.protocol");
+ }
- Optional.ofNullable(nodeConfig.getProperty("iota.node.host"))
- .filter(v -> host == null)
- .ifPresent(v -> host = v);
+ if (nodeConfig.getProperty("iota.node.host") != null) {
+ host = nodeConfig.getProperty("iota.node.host");
+ }
- Optional.ofNullable(nodeConfig.getProperty("iota.node.port"))
- .filter(v -> port == null)
- .ifPresent(v -> port = v);
+ if (nodeConfig.getProperty("iota.node.port") != null) {
+ port = nodeConfig.getProperty("iota.node.port");
+ }
} catch (IOException e1) {
log.debug("node_config.properties not found. Rolling back for another solution...");
@@ -211,18 +247,9 @@ public class IotaAPIProxy {
}
private void checkEnviromentVariables() {
-
- Optional.of(env("IOTA_NODE_PROTOCOL", "http"))
- .filter(v -> protocol == null)
- .ifPresent(v -> protocol = v);
-
- Optional.ofNullable(env("IOTA_NODE_HOST", "localhost"))
- .filter(v -> host == null)
- .ifPresent(v -> host = v);
-
- Optional.ofNullable(env("IOTA_NODE_PORT", "14265"))
- .filter(v -> port == null)
- .ifPresent(v -> port = v);
+ protocol = env("IOTA_NODE_PROTOCOL", "http");
+ host = env("IOTA_NODE_HOST", "localhost");
+ port = env("IOTA_NODE_PORT", "14265");
}
public Builder host(String host) {
@@ -241,5 +268,4 @@ public class IotaAPIProxy {
}
}
-
}
diff --git a/src/main/java/jota/IotaAPIService.java b/src/main/java/jota/IotaAPIService.java
index a268ad1..d390a47 100644
--- a/src/main/java/jota/IotaAPIService.java
+++ b/src/main/java/jota/IotaAPIService.java
@@ -39,6 +39,26 @@ public interface IotaAPIService {
@POST("./")
Call getNeighbors(@Body IotaCommandRequest request);
+ /**
+ * Add a list of neighbors to your node.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "addNeighbors", "uris": ["udp://8.8.8.8:14265", "udp://8.8.8.5:14265"]}'
+ */
+ @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
+ @POST("./")
+ Call addNeighbors(@Body IotaNeighborsRequest request);
+
+ /**
+ * Removes a list of neighbors to your node.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "removeNeighbors", "uris": ["udp://8.8.8.8:14265", "udp://8.8.8.5:14265"]}'
+ */
+ @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
+ @POST("./")
+ Call removeNeighbors(@Body IotaNeighborsRequest request);
+
/**
* Get the list of latest tips (unconfirmed transactions).
*
@@ -85,68 +105,59 @@ public interface IotaAPIService {
* Tip selection which returns trunkTransaction and branchTransaction. The input value is the latest coordinator milestone, as provided through the getNodeInfo API call.
*
* curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
- * -d '{"command": "getTransactionsToApprove", "milestone": "SMYMAKKPSUKCKDRUEYCGZJTYCZ9HHDMDUWBAPXARGURPQRHTAJDASRWMIDTPTBNDKDEFBUTBGGAFX9999"}'
+ * -d '{"command": "getTransactionsToApprove", "depth": 27}'
*/
@Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
@POST("./")
Call getTransactionsToApprove(@Body IotaGetTransactionsToApproveRequest request);
- /*
+ /**
+ * It returns the confirmed balance which a list of addresses have at the latest confirmed milestone.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "getBalances", "addresses": ["HBBYKAKTILIPVUKFOTSLHGENPTXYBNKXZFQFR9VQFWNBMTQNRVOUKPVPRNBSZVVILMAFBKOTBLGLWLOHQ"], "threshold": 100}'
+ */
+ @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
+ @POST("./")
+ Call getBalances(@Body IotaGetBalancesRequest request);
+
+ /**
+ * Attaches the specified transactions (trytes) to the Tangle by doing Proof of Work.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "attachToTangle", "trunkTransaction": "JVMTDGDPDFYHMZPMWEKKANBQSLSDTIIHAYQUMZOKHXXXGJHJDQPOMDOMNRDKYCZRUFZROZDADTHZC9999", "branchTransaction": "P9KFSJVGSPLXAEBJSHWFZLGP9GGJTIO9YITDEHATDTGAFLPLBZ9FOFWWTKMAZXZHFGQHUOXLXUALY9999", "minWeightMagnitude": 18, "trytes": ["TRYTVALUEHERE"]}'
+ */
@Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
@POST("./")
Call attachToTangle(@Body IotaAttachToTangleRequest request);
+ /**
+ * Interrupts and completely aborts the attachToTangle process.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "interruptAttachingToTangle" }
+ */
@Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
@POST("./")
- Call interruptAttachingToTangle(@Body IotaInterruptAttachingToTangleRequest request);
+ Call interruptAttachingToTangle(@Body IotaCommandRequest request);
+ /**
+ * Broadcast a list of transactions to all neighbors. The input trytes for this call are provided by attachToTangle.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "broadcastTransactions", "trytes": ["BYSWEAUTWXHXZ9YBZISEK9LUHWGMHXCGEVNZHRLUWQFCUSDXZHOFHWHL9MQPVJXXZLIXPXPXF9KYEREFSKCPKYIIKPZVLHUTDFQKKVVBBN9ATTLPCNPJDWDEVIYYLGPZGCWXOBDXMLJC9VO9QXTTBLAXTTBFUAROYEGQIVB9MJWJKXJMCUPTWAUGFZBTZCSJVRBGMYXTVBDDS9MYUJCPZ9YDWWQNIPUAIJXXSNLKUBSCOIJPCLEFPOXFJREXQCUVUMKSDOVQGGHRNILCO9GNCLWFM9APMNMWYASHXQAYBEXF9QRIHIBHYEJOYHRQJAOKAQ9AJJFQ9WEIWIJOTZATIBOXQLBMIJU9PCGBLVDDVFP9CFFSXTDUXMEGOOFXWRTLFGV9XXMYWEMGQEEEDBTIJ9OJOXFAPFQXCDAXOUDMLVYRMRLUDBETOLRJQAEDDLNVIRQJUBZBO9CCFDHIX9MSQCWYAXJVWHCUPTRSXJDESISQPRKZAFKFRULCGVRSBLVFOPEYLEE99JD9SEBALQINPDAZHFAB9RNBH9AZWIJOTLBZVIEJIAYGMC9AZGNFWGRSWAXTYSXVROVNKCOQQIWGPNQZKHUNODGYADPYLZZZUQRTJRTODOUKAOITNOMWNGHJBBA99QUMBHRENGBHTH9KHUAOXBVIVDVYYZMSEYSJWIOGGXZVRGN999EEGQMCOYVJQRIRROMPCQBLDYIGQO9AMORPYFSSUGACOJXGAQSPDY9YWRRPESNXXBDQ9OZOXVIOMLGTSWAMKMTDRSPGJKGBXQIVNRJRFRYEZ9VJDLHIKPSKMYC9YEGHFDS9SGVDHRIXBEMLFIINOHVPXIFAZCJKBHVMQZEVWCOSNWQRDYWVAIBLSCBGESJUIBWZECPUCAYAWMTQKRMCHONIPKJYYTEGZCJYCT9ABRWTJLRQXKMWY9GWZMHYZNWPXULNZAPVQLPMYQZCYNEPOCGOHBJUZLZDPIXVHLDMQYJUUBEDXXPXFLNRGIPWBRNQQZJSGSJTTYHIGGFAWJVXWL9THTPWOOHTNQWCNYOYZXALHAZXVMIZE9WMQUDCHDJMIBWKTYH9AC9AFOT9DPCADCV9ZWUTE9QNOMSZPTZDJLJZCJGHXUNBJFUBJWQUEZDMHXGBPTNSPZBR9TGSKVOHMOQSWPGFLSWNESFKSAZY9HHERAXALZCABFYPOVLAHMIHVDBGKUMDXC9WHHTIRYHZVWNXSVQUWCR9M9RAGMFEZZKZ9XEOQGOSLFQCHHOKLDSA9QCMDGCGMRYJZLBVIFOLBIJPROKMHOYTBTJIWUZWJMCTKCJKKTR9LCVYPVJI9AHGI9JOWMIWZAGMLDFJA9WU9QAMEFGABIBEZNNAL9OXSBFLOEHKDGHWFQSHMPLYFCNXAAZYJLMQDEYRGL9QKCEUEJ9LLVUOINVSZZQHCIKPAGMT9CAYIIMTTBCPKWTYHOJIIY9GYNPAJNUJ9BKYYXSV9JSPEXYMCFAIKTGNRSQGUNIYZCRT9FOWENSZQPD9ALUPYYAVICHVYELYFPUYDTWUSWNIYFXPX9MICCCOOZIWRNJIDALWGWRATGLJXNAYTNIZWQ9YTVDBOFZRKO9CFWRPAQQRXTPACOWCPRLYRYSJARRKSQPR9TCFXDVIXLP9XVL99ERRDSOHBFJDJQQGGGCZNDQ9NYCTQJWVZIAELCRBJJFDMCNZU9FIZRPGNURTXOCDSQGXTQHKHUECGWFUUYS9J9NYQ9U9P9UUP9YMZHWWWCIASCFLCMSKTELZWUGCDE9YOKVOVKTAYPHDF9ZCCQAYPJIJNGSHUIHHCOSSOOBUDOKE9CJZGYSSGNCQJVBEFTZFJ9SQUHOASKRRGBSHWKBCBWBTJHOGQ9WOMQFHWJVEG9NYX9KWBTCAIXNXHEBDIOFO9ALYMFGRICLCKKLG9FOBOX9PDWNQRGHBKHGKKRLWTBEQMCWQRLHAVYYZDIIPKVQTHYTWQMTOACXZOQCDTJTBAAUWXSGJF9PNQIJ9AJRUMUVCPWYVYVARKR9RKGOUHHNKNVGGPDDLGKPQNOYHNKAVVKCXWXOQPZNSLATUJT9AUWRMPPSWHSTTYDFAQDXOCYTZHOYYGAIM9CELMZ9AZPWB9MJXGHOKDNNSZVUDAGXTJJSSZCPZVPZBYNNTUQABSXQWZCHDQSLGK9UOHCFKBIBNETK999999999999999999999999999999999999999999999999999999999999999999999999999999999NOXDXXKUDWLOFJLIPQIBRBMGDYCPGDNLQOLQS99EQYKBIU9VHCJVIPFUYCQDNY9APGEVYLCENJIOBLWNB999999999XKBRHUD99C99999999NKZKEKWLDKMJCI9N9XQOLWEPAYWSH9999999999999999999999999KDDTGZLIPBNZKMLTOLOXQVNGLASESDQVPTXALEKRMIOHQLUHD9ELQDBQETS9QFGTYOYWLNTSKKMVJAUXSIROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999"]}
+ */
@Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
@POST("./")
- Call pushTransactions(@Body IotaPushTransactionsRequest request);
+ Call broadcastTransactions(@Body IotaBroadcastTransactionRequest request);
+ /**
+ * Store transactions into the local storage. The trytes to be used for this call are returned by attachToTangle.
+ *
+ * curl http://localhost:14265 -X POST -H 'Content-Type: application/json'
+ * -d '{"command": "storeTransactions", "trytes": ["BYSWEAUTWXHXZ9YBZISEK9LUHWGMHXCGEVNZHRLUWQFCUSDXZHOFHWHL9MQPVJXXZLIXPXPXF9KYEREFSKCPKYIIKPZVLHUTDFQKKVVBBN9ATTLPCNPJDWDEVIYYLGPZGCWXOBDXMLJC9VO9QXTTBLAXTTBFUAROYEGQIVB9MJWJKXJMCUPTWAUGFZBTZCSJVRBGMYXTVBDDS9MYUJCPZ9YDWWQNIPUAIJXXSNLKUBSCOIJPCLEFPOXFJREXQCUVUMKSDOVQGGHRNILCO9GNCLWFM9APMNMWYASHXQAYBEXF9QRIHIBHYEJOYHRQJAOKAQ9AJJFQ9WEIWIJOTZATIBOXQLBMIJU9PCGBLVDDVFP9CFFSXTDUXMEGOOFXWRTLFGV9XXMYWEMGQEEEDBTIJ9OJOXFAPFQXCDAXOUDMLVYRMRLUDBETOLRJQAEDDLNVIRQJUBZBO9CCFDHIX9MSQCWYAXJVWHCUPTRSXJDESISQPRKZAFKFRULCGVRSBLVFOPEYLEE99JD9SEBALQINPDAZHFAB9RNBH9AZWIJOTLBZVIEJIAYGMC9AZGNFWGRSWAXTYSXVROVNKCOQQIWGPNQZKHUNODGYADPYLZZZUQRTJRTODOUKAOITNOMWNGHJBBA99QUMBHRENGBHTH9KHUAOXBVIVDVYYZMSEYSJWIOGGXZVRGN999EEGQMCOYVJQRIRROMPCQBLDYIGQO9AMORPYFSSUGACOJXGAQSPDY9YWRRPESNXXBDQ9OZOXVIOMLGTSWAMKMTDRSPGJKGBXQIVNRJRFRYEZ9VJDLHIKPSKMYC9YEGHFDS9SGVDHRIXBEMLFIINOHVPXIFAZCJKBHVMQZEVWCOSNWQRDYWVAIBLSCBGESJUIBWZECPUCAYAWMTQKRMCHONIPKJYYTEGZCJYCT9ABRWTJLRQXKMWY9GWZMHYZNWPXULNZAPVQLPMYQZCYNEPOCGOHBJUZLZDPIXVHLDMQYJUUBEDXXPXFLNRGIPWBRNQQZJSGSJTTYHIGGFAWJVXWL9THTPWOOHTNQWCNYOYZXALHAZXVMIZE9WMQUDCHDJMIBWKTYH9AC9AFOT9DPCADCV9ZWUTE9QNOMSZPTZDJLJZCJGHXUNBJFUBJWQUEZDMHXGBPTNSPZBR9TGSKVOHMOQSWPGFLSWNESFKSAZY9HHERAXALZCABFYPOVLAHMIHVDBGKUMDXC9WHHTIRYHZVWNXSVQUWCR9M9RAGMFEZZKZ9XEOQGOSLFQCHHOKLDSA9QCMDGCGMRYJZLBVIFOLBIJPROKMHOYTBTJIWUZWJMCTKCJKKTR9LCVYPVJI9AHGI9JOWMIWZAGMLDFJA9WU9QAMEFGABIBEZNNAL9OXSBFLOEHKDGHWFQSHMPLYFCNXAAZYJLMQDEYRGL9QKCEUEJ9LLVUOINVSZZQHCIKPAGMT9CAYIIMTTBCPKWTYHOJIIY9GYNPAJNUJ9BKYYXSV9JSPEXYMCFAIKTGNRSQGUNIYZCRT9FOWENSZQPD9ALUPYYAVICHVYELYFPUYDTWUSWNIYFXPX9MICCCOOZIWRNJIDALWGWRATGLJXNAYTNIZWQ9YTVDBOFZRKO9CFWRPAQQRXTPACOWCPRLYRYSJARRKSQPR9TCFXDVIXLP9XVL99ERRDSOHBFJDJQQGGGCZNDQ9NYCTQJWVZIAELCRBJJFDMCNZU9FIZRPGNURTXOCDSQGXTQHKHUECGWFUUYS9J9NYQ9U9P9UUP9YMZHWWWCIASCFLCMSKTELZWUGCDE9YOKVOVKTAYPHDF9ZCCQAYPJIJNGSHUIHHCOSSOOBUDOKE9CJZGYSSGNCQJVBEFTZFJ9SQUHOASKRRGBSHWKBCBWBTJHOGQ9WOMQFHWJVEG9NYX9KWBTCAIXNXHEBDIOFO9ALYMFGRICLCKKLG9FOBOX9PDWNQRGHBKHGKKRLWTBEQMCWQRLHAVYYZDIIPKVQTHYTWQMTOACXZOQCDTJTBAAUWXSGJF9PNQIJ9AJRUMUVCPWYVYVARKR9RKGOUHHNKNVGGPDDLGKPQNOYHNKAVVKCXWXOQPZNSLATUJT9AUWRMPPSWHSTTYDFAQDXOCYTZHOYYGAIM9CELMZ9AZPWB9MJXGHOKDNNSZVUDAGXTJJSSZCPZVPZBYNNTUQABSXQWZCHDQSLGK9UOHCFKBIBNETK999999999999999999999999999999999999999999999999999999999999999999999999999999999NOXDXXKUDWLOFJLIPQIBRBMGDYCPGDNLQOLQS99EQYKBIU9VHCJVIPFUYCQDNY9APGEVYLCENJIOBLWNB999999999XKBRHUD99C99999999NKZKEKWLDKMJCI9N9XQOLWEPAYWSH9999999999999999999999999KDDTGZLIPBNZKMLTOLOXQVNGLASESDQVPTXALEKRMIOHQLUHD9ELQDBQETS9QFGTYOYWLNTSKKMVJAUXSIROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999"]}'
+ */
@Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
@POST("./")
Call storeTransactions(@Body IotaStoreTransactionsRequest request);
-
- @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
- @POST("./")
- Call transfer(@Body IotaTransferRequest request);
-
- @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
- @POST("./")
- Call replayTransfer(@Body IotaReplayTransferRequest request);
-
- @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER })
- @POST("./")
- Call pullTransactions(@Body IotaPullTransactionsRequest request);
-
- * Get the list of transactions which were bundled with the specified tail transaction.
- * This call returns the full value of all individual transactions, not just the hashes.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
}
diff --git a/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java b/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java
new file mode 100644
index 0000000..765aa81
--- /dev/null
+++ b/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java
@@ -0,0 +1,23 @@
+package jota.dto.request;
+
+import jota.IotaAPICommands;
+
+public class IotaAttachToTangleRequest extends IotaCommandRequest {
+
+ private String trunkTransaction;
+ private String branchTransaction;
+ private Integer minWeightMagnitude;
+ private String [] trytes;
+
+ private IotaAttachToTangleRequest(final String trunkTransaction, final String branchTransaction, final Integer minWeightMagnitude, final String ... trytes) {
+ super(IotaAPICommands.ATTACH_TO_TANGLE);
+ this.trunkTransaction = trunkTransaction;
+ this.branchTransaction = branchTransaction;
+ this.minWeightMagnitude = minWeightMagnitude;
+ this.trytes = trytes;
+ }
+
+ public static IotaAttachToTangleRequest createAttachToTangleRequest(final String trunkTransaction, final String branchTransaction, final Integer minWeightMagnitude, final String ... trytes) {
+ return new IotaAttachToTangleRequest(trunkTransaction, branchTransaction, minWeightMagnitude, trytes);
+ }
+}
diff --git a/src/main/java/jota/dto/request/IotaBroadcastTransactionRequest.java b/src/main/java/jota/dto/request/IotaBroadcastTransactionRequest.java
new file mode 100644
index 0000000..18836f3
--- /dev/null
+++ b/src/main/java/jota/dto/request/IotaBroadcastTransactionRequest.java
@@ -0,0 +1,17 @@
+package jota.dto.request;
+
+import jota.IotaAPICommands;
+
+public class IotaBroadcastTransactionRequest extends IotaCommandRequest {
+
+ private String [] trytes;
+
+ private IotaBroadcastTransactionRequest(final String ... trytes) {
+ super(IotaAPICommands.BROADCAST_TRANSACTIONS);
+ this.trytes = trytes;
+ }
+
+ public static IotaBroadcastTransactionRequest createBroadcastTransactionsRequest(final String ... trytes) {
+ return new IotaBroadcastTransactionRequest(trytes);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/jota/dto/request/IotaCommandRequest.java b/src/main/java/jota/dto/request/IotaCommandRequest.java
index f21db1f..a123aca 100644
--- a/src/main/java/jota/dto/request/IotaCommandRequest.java
+++ b/src/main/java/jota/dto/request/IotaCommandRequest.java
@@ -21,4 +21,8 @@ public class IotaCommandRequest {
public static IotaCommandRequest createGetNeighborsRequest() {
return new IotaCommandRequest(IotaAPICommands.GET_NEIGHBORS);
}
+
+ public static IotaCommandRequest createInterruptAttachToTangleRequest() {
+ return new IotaCommandRequest(IotaAPICommands.INTERRUPT_ATTACHING_TO_TANGLE);
+ }
}
diff --git a/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java b/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java
index 4bd838b..cf783d9 100644
--- a/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java
+++ b/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java
@@ -36,7 +36,4 @@ public class IotaFindTransactionsRequest extends IotaCommandRequest {
this.approvees = approvees;
return this;
}
-
-
-
}
diff --git a/src/main/java/jota/dto/request/IotaGetBalancesRequest.java b/src/main/java/jota/dto/request/IotaGetBalancesRequest.java
new file mode 100644
index 0000000..aa33397
--- /dev/null
+++ b/src/main/java/jota/dto/request/IotaGetBalancesRequest.java
@@ -0,0 +1,21 @@
+package jota.dto.request;
+
+import jota.IotaAPICommands;
+
+public class IotaGetBalancesRequest extends IotaCommandRequest {
+
+ private String [] addresses;
+ private Integer threshold;
+
+ private IotaGetBalancesRequest(final Integer threshold, final String ... addresses) {
+ super(IotaAPICommands.GET_BALANCES);
+ this.addresses = addresses;
+ this.threshold = threshold;
+ }
+
+ public static IotaGetBalancesRequest createIotaGetBalancesRequest(final Integer threshold, final String ... addresses) {
+ return new IotaGetBalancesRequest(threshold, addresses);
+ }
+
+}
+
diff --git a/src/main/java/jota/dto/request/IotaGetTransactionsToApproveRequest.java b/src/main/java/jota/dto/request/IotaGetTransactionsToApproveRequest.java
index c44c074..f597448 100644
--- a/src/main/java/jota/dto/request/IotaGetTransactionsToApproveRequest.java
+++ b/src/main/java/jota/dto/request/IotaGetTransactionsToApproveRequest.java
@@ -4,14 +4,14 @@ import jota.IotaAPICommands;
public class IotaGetTransactionsToApproveRequest extends IotaCommandRequest {
- private String milestone;
+ private Integer depth;
- private IotaGetTransactionsToApproveRequest(final String milestone) {
+ private IotaGetTransactionsToApproveRequest(final Integer depth) {
super(IotaAPICommands.GET_TRANSACTIONS_TO_APPROVE);
- this.milestone = milestone;
+ this.depth = depth;
}
- public static IotaGetTransactionsToApproveRequest createIotaGetTransactionsToApproveRequest(String milestone) {
- return new IotaGetTransactionsToApproveRequest(milestone);
+ public static IotaGetTransactionsToApproveRequest createIotaGetTransactionsToApproveRequest(Integer depth) {
+ return new IotaGetTransactionsToApproveRequest(depth);
}
}
diff --git a/src/main/java/jota/dto/request/IotaNeighborsRequest.java b/src/main/java/jota/dto/request/IotaNeighborsRequest.java
new file mode 100644
index 0000000..74a5cc5
--- /dev/null
+++ b/src/main/java/jota/dto/request/IotaNeighborsRequest.java
@@ -0,0 +1,22 @@
+package jota.dto.request;
+
+import jota.IotaAPICommands;
+
+public class IotaNeighborsRequest extends IotaCommandRequest {
+
+ private String [] uris;
+
+ private IotaNeighborsRequest(IotaAPICommands type, final String ... uris) {
+ super(type);
+ this.uris = uris;
+ }
+
+ public static IotaNeighborsRequest createAddNeighborsRequest(String ... uris) {
+ return new IotaNeighborsRequest(IotaAPICommands.ADD_NEIGHBORS, uris);
+ }
+
+ public static IotaNeighborsRequest createRemoveNeighborsRequest(String ... uris) {
+ return new IotaNeighborsRequest(IotaAPICommands.REMOVE_NEIGHBORS, uris);
+ }
+}
+
diff --git a/src/main/java/jota/dto/request/IotaStoreTransactionsRequest.java b/src/main/java/jota/dto/request/IotaStoreTransactionsRequest.java
new file mode 100644
index 0000000..a306f18
--- /dev/null
+++ b/src/main/java/jota/dto/request/IotaStoreTransactionsRequest.java
@@ -0,0 +1,17 @@
+package jota.dto.request;
+
+import jota.IotaAPICommands;
+
+public class IotaStoreTransactionsRequest extends IotaCommandRequest {
+
+ private String [] trytes;
+
+ private IotaStoreTransactionsRequest(final String ... trytes) {
+ super(IotaAPICommands.STORE_TRANSACTIONS);
+ this.trytes = trytes;
+ }
+
+ public static IotaStoreTransactionsRequest createStoreTransactionsRequest(final String ... trytes) {
+ return new IotaStoreTransactionsRequest(trytes);
+ }
+}
diff --git a/src/main/java/jota/dto/response/AddNeighborsResponse.java b/src/main/java/jota/dto/response/AddNeighborsResponse.java
new file mode 100644
index 0000000..586f5a2
--- /dev/null
+++ b/src/main/java/jota/dto/response/AddNeighborsResponse.java
@@ -0,0 +1,10 @@
+package jota.dto.response;
+
+public class AddNeighborsResponse extends AbstractResponse {
+
+ private int addedNeighbors;
+
+ public int getAddedNeighbors() {
+ return addedNeighbors;
+ }
+}
diff --git a/src/main/java/jota/dto/response/BroadcastTransactionsResponse.java b/src/main/java/jota/dto/response/BroadcastTransactionsResponse.java
new file mode 100644
index 0000000..fe4d7cd
--- /dev/null
+++ b/src/main/java/jota/dto/response/BroadcastTransactionsResponse.java
@@ -0,0 +1,5 @@
+package jota.dto.response;
+
+public class BroadcastTransactionsResponse extends AbstractResponse {
+ // empty response
+}
diff --git a/src/main/java/jota/dto/response/GetAttachToTangleResponse.java b/src/main/java/jota/dto/response/GetAttachToTangleResponse.java
new file mode 100644
index 0000000..9a4627c
--- /dev/null
+++ b/src/main/java/jota/dto/response/GetAttachToTangleResponse.java
@@ -0,0 +1,10 @@
+package jota.dto.response;
+
+public class GetAttachToTangleResponse extends AbstractResponse {
+
+ private String [] trytes;
+
+ public String[] getTrytes() {
+ return trytes;
+ }
+}
diff --git a/src/main/java/jota/dto/response/GetBalancesResponse.java b/src/main/java/jota/dto/response/GetBalancesResponse.java
new file mode 100644
index 0000000..8976349
--- /dev/null
+++ b/src/main/java/jota/dto/response/GetBalancesResponse.java
@@ -0,0 +1,20 @@
+package jota.dto.response;
+
+public class GetBalancesResponse extends AbstractResponse {
+
+ private String [] balances;
+ private String milestone;
+ private Integer milestoneIndex;
+
+ public Integer getMilestoneIndex() {
+ return milestoneIndex;
+ }
+
+ public String getMilestone() {
+ return milestone;
+ }
+
+ public String[] getBalances() {
+ return balances;
+ }
+}
diff --git a/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java b/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java
index 5b674c1..cfd30d1 100644
--- a/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java
+++ b/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java
@@ -3,10 +3,10 @@ package jota.dto.response;
public class GetTransactionsToApproveResponse extends AbstractResponse {
private String trunkTransaction;
- private String branchTransaction;
+ private String branchTransactionToApprove;
- public String getBranchTransaction() {
- return branchTransaction;
+ public String getBranchTransactionToApprove() {
+ return branchTransactionToApprove;
}
public String getTrunkTransaction() {
return trunkTransaction;
diff --git a/src/main/java/jota/dto/response/InterruptAttachingToTangleResponse.java b/src/main/java/jota/dto/response/InterruptAttachingToTangleResponse.java
new file mode 100644
index 0000000..c3dda35
--- /dev/null
+++ b/src/main/java/jota/dto/response/InterruptAttachingToTangleResponse.java
@@ -0,0 +1,5 @@
+package jota.dto.response;
+
+public class InterruptAttachingToTangleResponse extends AbstractResponse {
+ // empty response
+}
diff --git a/src/main/java/jota/dto/response/RemoveNeighborsResponse.java b/src/main/java/jota/dto/response/RemoveNeighborsResponse.java
new file mode 100644
index 0000000..3f63730
--- /dev/null
+++ b/src/main/java/jota/dto/response/RemoveNeighborsResponse.java
@@ -0,0 +1,10 @@
+package jota.dto.response;
+
+public class RemoveNeighborsResponse extends AbstractResponse {
+
+ private int removedNeighbors;
+
+ public int getRemovedNeighbors() {
+ return removedNeighbors;
+ }
+}
diff --git a/src/main/java/jota/dto/response/StoreTransactionsResponse.java b/src/main/java/jota/dto/response/StoreTransactionsResponse.java
new file mode 100644
index 0000000..04128d2
--- /dev/null
+++ b/src/main/java/jota/dto/response/StoreTransactionsResponse.java
@@ -0,0 +1,6 @@
+package jota.dto.response;
+
+public class StoreTransactionsResponse extends AbstractResponse {
+ // empty response
+}
+
diff --git a/src/test/java/jota/IotaAPIProxyTest.java b/src/test/java/jota/IotaAPIProxyTest.java
index 56192da..1b5e34a 100644
--- a/src/test/java/jota/IotaAPIProxyTest.java
+++ b/src/test/java/jota/IotaAPIProxyTest.java
@@ -2,6 +2,8 @@ package jota;
import static org.junit.Assert.assertThat;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
import jota.dto.response.*;
import org.hamcrest.core.IsNull;
import org.junit.Before;
@@ -15,8 +17,10 @@ import org.junit.Test;
*/
public class IotaAPIProxyTest {
+ private static Gson gson = new GsonBuilder().create();
+
private static final String TEST_SEED = "AAA999999999999999999999999999999999999999999999999999999999999999999999999999999";
- private static final String TEST_TRANSACTION = "ZJVYUGTDRPDYFGFXMKOTV9ZWSGFK9CFPXTITQLQNLPPG9YNAARMKNKYQO9GSCSBIOTGMLJUFLZWSY9999";
+ private static final String TEST_ADDRESS = "RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAZETAIRPTM";
private static final String TEST_HASH = "OAATQS9VQLSXCLDJVJJVYUGONXAXOFMJOZNSYWRZSWECMXAQQURHQBJNLD9IOFEPGZEPEMPXCIVRX9999";
private static final String TEST_TRYTES = "BYSWEAUTWXHXZ9YBZISEK9LUHWGMHXCGEVNZHRLUWQFCUSDXZHOFHWHL9MQPVJXXZLIXPXPXF9KYEREFSKCPKYIIKPZVLHUTDFQKKVVBBN9ATTLPCNPJDWDEVIYYLGPZGCWXOBDXMLJC9VO9QXTTBLAXTTBFUAROYEGQIVB9MJWJKXJMCUPTWAUGFZBTZCSJVRBGMYXTVBDDS9MYUJCPZ9YDWWQNIPUAIJXXSNLKUBSCOIJPCLEFPOXFJREXQCUVUMKSDOVQGGHRNILCO9GNCLWFM9APMNMWYASHXQAYBEXF9QRIHIBHYEJOYHRQJAOKAQ9AJJFQ9WEIWIJOTZATIBOXQLBMIJU9PCGBLVDDVFP9CFFSXTDUXMEGOOFXWRTLFGV9XXMYWEMGQEEEDBTIJ9OJOXFAPFQXCDAXOUDMLVYRMRLUDBETOLRJQAEDDLNVIRQJUBZBO9CCFDHIX9MSQCWYAXJVWHCUPTRSXJDESISQPRKZAFKFRULCGVRSBLVFOPEYLEE99JD9SEBALQINPDAZHFAB9RNBH9AZWIJOTLBZVIEJIAYGMC9AZGNFWGRSWAXTYSXVROVNKCOQQIWGPNQZKHUNODGYADPYLZZZUQRTJRTODOUKAOITNOMWNGHJBBA99QUMBHRENGBHTH9KHUAOXBVIVDVYYZMSEYSJWIOGGXZVRGN999EEGQMCOYVJQRIRROMPCQBLDYIGQO9AMORPYFSSUGACOJXGAQSPDY9YWRRPESNXXBDQ9OZOXVIOMLGTSWAMKMTDRSPGJKGBXQIVNRJRFRYEZ9VJDLHIKPSKMYC9YEGHFDS9SGVDHRIXBEMLFIINOHVPXIFAZCJKBHVMQZEVWCOSNWQRDYWVAIBLSCBGESJUIBWZECPUCAYAWMTQKRMCHONIPKJYYTEGZCJYCT9ABRWTJLRQXKMWY9GWZMHYZNWPXULNZAPVQLPMYQZCYNEPOCGOHBJUZLZDPIXVHLDMQYJUUBEDXXPXFLNRGIPWBRNQQZJSGSJTTYHIGGFAWJVXWL9THTPWOOHTNQWCNYOYZXALHAZXVMIZE9WMQUDCHDJMIBWKTYH9AC9AFOT9DPCADCV9ZWUTE9QNOMSZPTZDJLJZCJGHXUNBJFUBJWQUEZDMHXGBPTNSPZBR9TGSKVOHMOQSWPGFLSWNESFKSAZY9HHERAXALZCABFYPOVLAHMIHVDBGKUMDXC9WHHTIRYHZVWNXSVQUWCR9M9RAGMFEZZKZ9XEOQGOSLFQCHHOKLDSA9QCMDGCGMRYJZLBVIFOLBIJPROKMHOYTBTJIWUZWJMCTKCJKKTR9LCVYPVJI9AHGI9JOWMIWZAGMLDFJA9WU9QAMEFGABIBEZNNAL9OXSBFLOEHKDGHWFQSHMPLYFCNXAAZYJLMQDEYRGL9QKCEUEJ9LLVUOINVSZZQHCIKPAGMT9CAYIIMTTBCPKWTYHOJIIY9GYNPAJNUJ9BKYYXSV9JSPEXYMCFAIKTGNRSQGUNIYZCRT9FOWENSZQPD9ALUPYYAVICHVYELYFPUYDTWUSWNIYFXPX9MICCCOOZIWRNJIDALWGWRATGLJXNAYTNIZWQ9YTVDBOFZRKO9CFWRPAQQRXTPACOWCPRLYRYSJARRKSQPR9TCFXDVIXLP9XVL99ERRDSOHBFJDJQQGGGCZNDQ9NYCTQJWVZIAELCRBJJFDMCNZU9FIZRPGNURTXOCDSQGXTQHKHUECGWFUUYS9J9NYQ9U9P9UUP9YMZHWWWCIASCFLCMSKTELZWUGCDE9YOKVOVKTAYPHDF9ZCCQAYPJIJNGSHUIHHCOSSOOBUDOKE9CJZGYSSGNCQJVBEFTZFJ9SQUHOASKRRGBSHWKBCBWBTJHOGQ9WOMQFHWJVEG9NYX9KWBTCAIXNXHEBDIOFO9ALYMFGRICLCKKLG9FOBOX9PDWNQRGHBKHGKKRLWTBEQMCWQRLHAVYYZDIIPKVQTHYTWQMTOACXZOQCDTJTBAAUWXSGJF9PNQIJ9AJRUMUVCPWYVYVARKR9RKGOUHHNKNVGGPDDLGKPQNOYHNKAVVKCXWXOQPZNSLATUJT9AUWRMPPSWHSTTYDFAQDXOCYTZHOYYGAIM9CELMZ9AZPWB9MJXGHOKDNNSZVUDAGXTJJSSZCPZVPZBYNNTUQABSXQWZCHDQSLGK9UOHCFKBIBNETK999999999999999999999999999999999999999999999999999999999999999999999999999999999NOXDXXKUDWLOFJLIPQIBRBMGDYCPGDNLQOLQS99EQYKBIU9VHCJVIPFUYCQDNY9APGEVYLCENJIOBLWNB999999999XKBRHUD99C99999999NKZKEKWLDKMJCI9N9XQOLWEPAYWSH9999999999999999999999999KDDTGZLIPBNZKMLTOLOXQVNGLASESDQVPTXALEKRMIOHQLUHD9ELQDBQETS9QFGTYOYWLNTSKKMVJAUXSIROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999";
private static final String TEST_MILESTONE = "SMYMAKKPSUKCKDRUEYCGZJTYCZ9HHDMDUWBAPXARGURPQRHTAJDASRWMIDTPTBNDKDEFBUTBGGAFX9999";
@@ -29,27 +33,28 @@ public class IotaAPIProxyTest {
proxy = new IotaAPIProxy.Builder().build();
}
- @Test
- public void shouldCreateIotaApiProxyInstanceWithDefaultValues() {
- IotaAPIProxy proxy = new IotaAPIProxy.Builder().build();
- assertThat(proxy, IsNull.notNullValue());
- }
-
- @Test(expected = IllegalStateException.class)
- public void shouldNotCreateIotaApiProxyInstanceWithDefaultValues() {
- new IotaAPIProxy.Builder().host("a_very_wrong_ip_address").build().getNodeInfo();
- }
-
@Test
public void shouldGetNodeInfo() {
GetNodeInfoResponse nodeInfo = proxy.getNodeInfo();
- assertThat(nodeInfo, IsNull.notNullValue());
+ assertThat(nodeInfo.getAppVersion(), IsNull.notNullValue());
}
@Test
public void shouldGetNeighbors() {
GetNeighborsResponse neighbors = proxy.getNeighbors();
- assertThat(neighbors, IsNull.notNullValue());
+ assertThat(neighbors.getNeighbors(), IsNull.notNullValue());
+ }
+
+ @Test
+ public void shouldAddNeighbors() {
+ AddNeighborsResponse res = proxy.addNeighbors("udp://8.8.8.8:14265");
+ assertThat(res, IsNull.notNullValue());
+ }
+
+ @Test
+ public void shouldRemoveNeighbors() {
+ RemoveNeighborsResponse res = proxy.removeNeighbors("udp://8.8.8.8:14265");
+ assertThat(res, IsNull.notNullValue());
}
@Test
@@ -60,7 +65,8 @@ public class IotaAPIProxyTest {
@Test
public void shouldFindTransactionsByAddresses() {
- FindTransactionResponse trans = proxy.findTransactionsByAddresses(TEST_TRANSACTION);
+ FindTransactionResponse trans = proxy.findTransactionsByAddresses(TEST_ADDRESS);
+ System.err.println(gson.toJson(trans));
assertThat(trans, IsNull.notNullValue());
}
@@ -82,17 +88,43 @@ public class IotaAPIProxyTest {
assertThat(trans, IsNull.notNullValue());
}
+
+ // ###
+
+ @Test
+ public void shouldGetTrytes() {
+ GetTrytesResponse res = proxy.getTrytes(TEST_HASH);
+ assertThat(res, IsNull.nullValue());
+ }
+
@Test
public void shouldGetInclusionStates() {
- GetInclusionStateResponse res = proxy.getInclusionStates(new String[]{TEST_TRANSACTION},
+ GetInclusionStateResponse res = proxy.getInclusionStates(new String[]{TEST_ADDRESS},
new String[]{"123"});
assertThat(res, IsNull.notNullValue());
}
@Test // very long execution
public void shouldGetTransactionsToApprove() {
- GetTransactionsToApproveResponse res = proxy.getTransactionsToApprove(TEST_MILESTONE);
+ GetTransactionsToApproveResponse res = proxy.getTransactionsToApprove(27);
assertThat(res, IsNull.notNullValue());
}
+ @Test
+ public void shouldGetBalances() {
+ GetBalancesResponse res = proxy.getBalances(100, new String[]{"HBBYKAKTILIPVUKFOTSLHGENPTXYBNKXZFQFR9VQFWNBMTQNRVOUKPVPRNBSZVVILMAFBKOTBLGLWLOHQ"});
+ System.err.println(res);
+ assertThat(res, IsNull.notNullValue());
+ }
+
+ @Test
+ public void shouldCreateIotaApiProxyInstanceWithDefaultValues() {
+ IotaAPIProxy proxy = new IotaAPIProxy.Builder().build();
+ assertThat(proxy, IsNull.notNullValue());
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void shouldNotCreateIotaApiProxyInstanceWithDefaultValues() {
+ new IotaAPIProxy.Builder().host("a_very_wrong_ip_address").build().getNodeInfo();
+ }
}