diff --git a/node_config.properties b/node_config.properties index 5950679..f3c3793 100644 --- a/node_config.properties +++ b/node_config.properties @@ -1,4 +1,3 @@ - iota.node.protocol=http #iota.node.host=138.68.126.141 iota.node.host=127.0.0.1 diff --git a/pom.xml b/pom.xml index cf6c74d..b8ed23d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,86 +1,86 @@ - + - 4.0.0 - com.iota - jota - 1.0.0-RELEASE - JOTA - JOTA library is a simple Java wrapper around IOTA Node's JSON-REST HTTP interface. + 4.0.0 + com.iota + jota + 1.0.0-RELEASE + JOTA + JOTA library is a simple Java wrapper around IOTA Node's JSON-REST HTTP interface. - - 1.7 - UTF-8 - + + 1.7 + UTF-8 + - + - - - com.squareup.retrofit2 - retrofit - 2.1.0 - + + + com.squareup.retrofit2 + retrofit + 2.1.0 + - - - com.squareup.retrofit2 - converter-gson - 2.1.0 - + + + com.squareup.retrofit2 + converter-gson + 2.1.0 + - - - org.apache.commons - commons-lang3 - 3.3.2 - + + + org.apache.commons + commons-lang3 + 3.3.2 + - - - org.slf4j - slf4j-api - 1.7.21 - + + + org.slf4j + slf4j-api + 1.7.21 + - - - ch.qos.logback - logback-classic - 1.1.7 - + + + ch.qos.logback + logback-classic + 1.1.7 + - - - commons-io - commons-io - 2.5 - + + + commons-io + commons-io + 2.5 + - - junit - junit - 4.12 - test - - + + junit + junit + 4.12 + test + + - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - ${java-version} - ${java-version} - ${java-version} - ${java-version} - - - - - + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + ${java-version} + ${java-version} + ${java-version} + ${java-version} + + + + + diff --git a/src/main/java/jota/IotaAPICommands.java b/src/main/java/jota/IotaAPICommands.java index 96e0b5d..bcb9b58 100644 --- a/src/main/java/jota/IotaAPICommands.java +++ b/src/main/java/jota/IotaAPICommands.java @@ -7,29 +7,29 @@ package jota; */ public enum IotaAPICommands { - GET_NODE_INFO("getNodeInfo", 0), - GET_NEIGHBORS("getNeighbors", 0), - ADD_NEIGHBORS("addNeighbors", 1), - REMOVE_NEIGHBORS("removeNeighbors",1), - GET_TIPS("getTips",0), - FIND_TRANSACTIONS("findTransactions", 1), - GET_TRYTES("getTrytes", 0), - GET_INCLUSIONS_STATES("getInclusionStates", 0), - GET_BALANCES("getBalances", 0), - GET_TRANSACTIONS_TO_APPROVE("getTransactionsToApprove", 0), + GET_NODE_INFO("getNodeInfo", 0), + GET_NEIGHBORS("getNeighbors", 0), + ADD_NEIGHBORS("addNeighbors", 1), + REMOVE_NEIGHBORS("removeNeighbors", 1), + GET_TIPS("getTips", 0), + FIND_TRANSACTIONS("findTransactions", 1), + GET_TRYTES("getTrytes", 0), + GET_INCLUSIONS_STATES("getInclusionStates", 0), + GET_BALANCES("getBalances", 0), + GET_TRANSACTIONS_TO_APPROVE("getTransactionsToApprove", 0), ATTACH_TO_TANGLE("attachToTangle", 0), INTERRUPT_ATTACHING_TO_TANGLE("interruptAttachingToTangle", 0), - BROADCAST_TRANSACTIONS("broadcastTransactions",0), + BROADCAST_TRANSACTIONS("broadcastTransactions", 0), STORE_TRANSACTIONS("storeTransactions", 0); + private String command; + private int params; + IotaAPICommands(String command, int params) { this.command = command; this.params = params; } - private String command; - private int params; - public String command() { return command; } diff --git a/src/main/java/jota/IotaAPIProxy.java b/src/main/java/jota/IotaAPIProxy.java index 35db5b1..50a3a70 100644 --- a/src/main/java/jota/IotaAPIProxy.java +++ b/src/main/java/jota/IotaAPIProxy.java @@ -19,15 +19,15 @@ import java.util.concurrent.TimeUnit; /** * IotaAPIProxy Builder. Usage: - * + * * IotaApiProxy api = IotaApiProxy.Builder - * .protocol("http") - * .nodeAddress("localhost") - * .port(12345) - * .build(); - * + * .protocol("http") + * .nodeAddress("localhost") + * .port(12345) + * .build(); + * * GetNodeInfoResponse response = api.getNodeInfo(); - * + * * @author davassi */ public class IotaAPIProxy { @@ -35,6 +35,7 @@ public class IotaAPIProxy { private static final Logger log = LoggerFactory.getLogger(IotaAPIProxy.class); private IotaAPIService service; + private String protocol, host, port; private IotaAPIProxy(final Builder builder) { protocol = builder.protocol; @@ -43,7 +44,28 @@ public class IotaAPIProxy { postConstruct(); } - private String protocol, host, port; + protected static Response wrapCheckedException(final Call call) { + try { + final Response res = call.execute(); + if (res.code() == 400) { + throw new IllegalAccessError(res.errorBody().toString()); + } + return res; + } catch (IOException e) { + log.error("Execution of the API call raised exception. IOTA Node not reachable?", e); + throw new IllegalStateException(e.getMessage()); + } + } + + private static final String env(String env, String def) { + 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; + } private void postConstruct() { @@ -75,12 +97,12 @@ public class IotaAPIProxy { return wrapCheckedException(res).body(); } - public AddNeighborsResponse addNeighbors(String ... uris) { + public AddNeighborsResponse addNeighbors(String... uris) { final Call res = service.addNeighbors(IotaNeighborsRequest.createAddNeighborsRequest(uris)); return wrapCheckedException(res).body(); } - public RemoveNeighborsResponse removeNeighbors(String ... uris) { + public RemoveNeighborsResponse removeNeighbors(String... uris) { final Call res = service.removeNeighbors(IotaNeighborsRequest.createRemoveNeighborsRequest(uris)); return wrapCheckedException(res).body(); } @@ -103,19 +125,19 @@ public class IotaAPIProxy { return wrapCheckedException(res).body(); } - public FindTransactionResponse findTransactionsByAddresses(final String ... addresses) { + public FindTransactionResponse findTransactionsByAddresses(final String... addresses) { return findTransactions(addresses, null, null, null); } - public FindTransactionResponse findTransactionsByBundles(final String ... bundles) { + public FindTransactionResponse findTransactionsByBundles(final String... bundles) { return findTransactions(null, null, null, bundles); } - public FindTransactionResponse findTransactionsByApprovees(final String ... approvees) { + public FindTransactionResponse findTransactionsByApprovees(final String... approvees) { return findTransactions(null, null, approvees, null); } - public FindTransactionResponse findTransactionsByDigests(final String ... digests) { + public FindTransactionResponse findTransactionsByDigests(final String... digests) { return findTransactions(null, digests, null, null); } @@ -131,7 +153,7 @@ public class IotaAPIProxy { return wrapCheckedException(res).body(); } - public GetTrytesResponse getTrytes(String ... hashes) { + public GetTrytesResponse getTrytes(String... hashes) { final Call res = service.getTrytes(IotaGetTrytesRequest.createGetTrytesRequest(hashes)); return wrapCheckedException(res).body(); } @@ -141,7 +163,7 @@ public class IotaAPIProxy { return wrapCheckedException(res).body(); } - public GetBalancesResponse getBalances(Integer threshold, String [] addresses) { + public GetBalancesResponse getBalances(Integer threshold, String[] addresses) { final Call res = service.getBalances(IotaGetBalancesRequest.createIotaGetBalancesRequest(threshold, addresses)); return wrapCheckedException(res).body(); } @@ -151,36 +173,23 @@ public class IotaAPIProxy { return wrapCheckedException(res).body(); } - public GetAttachToTangleResponse attachToTangle(String trunkTransaction, String branchTransaction, Integer minWeightMagnitude, String ... trytes) { + 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) { + public StoreTransactionsResponse storeTransactions(String... trytes) { final Call res = service.storeTransactions(IotaStoreTransactionsRequest.createStoreTransactionsRequest(trytes)); return wrapCheckedException(res).body(); } - public BroadcastTransactionsResponse broadcastTransactions(String ... trytes) { + // end of proxied calls. + + 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 { - final Response res = call.execute(); - if (res.code() == 400) { - throw new IllegalAccessError(res.errorBody().toString()); - } - return res; - } catch (IOException e) { - log.error("Execution of the API call raised exception. IOTA Node not reachable?", e); - throw new IllegalStateException(e.getMessage()); - } - } - - // end of proxied calls. - public GetBundleResponse getBundle(String transaction) { return IotaAPIUtils.getBundle(transaction); } @@ -189,20 +198,10 @@ public class IotaAPIProxy { return IotaAPIUtils.getNewAddress(seed, securityLevel); } - private static final String env(String env, String def) { - 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 { String protocol, host, port; - + public IotaAPIProxy build() { if (protocol == null || host == null || port == null) { @@ -252,7 +251,7 @@ public class IotaAPIProxy { host = env("IOTA_NODE_HOST", "localhost"); port = env("IOTA_NODE_PORT", "14265"); } - + public Builder host(String host) { this.host = host; return this; diff --git a/src/main/java/jota/IotaAPIService.java b/src/main/java/jota/IotaAPIService.java index d390a47..a626209 100644 --- a/src/main/java/jota/IotaAPIService.java +++ b/src/main/java/jota/IotaAPIService.java @@ -9,33 +9,33 @@ import retrofit2.http.POST; /** * IOTA API Proxy Service definition using Retrofit2 - * + * * @author davassi */ public interface IotaAPIService { - public static final String CONTENT_TYPE_HEADER = "Content-Type: application/json"; - public static final String USER_AGENT_HEADER = "User-Agent: JOTA-API wrapper"; + String CONTENT_TYPE_HEADER = "Content-Type: application/json"; + String USER_AGENT_HEADER = "User-Agent: JOTA-API wrapper"; /** * Returns information about your node. - * + * * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getNodeInfo"}' - * + * * @return a {@code NodeInfoResponse} object, if succesfull. */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getNodeInfo(@Body IotaCommandRequest request); /** * Get the list of latest tips (unconfirmed transactions). - * + * * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getNeighbors"}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getNeighbors(@Body IotaCommandRequest request); @@ -45,7 +45,7 @@ public interface IotaAPIService { * 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 }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call addNeighbors(@Body IotaNeighborsRequest request); @@ -55,7 +55,7 @@ public interface IotaAPIService { * 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 }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call removeNeighbors(@Body IotaNeighborsRequest request); @@ -65,17 +65,17 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getTips"}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getTips(@Body IotaCommandRequest request); /** * Find the transactions which match the specified input and return - * - * curl http://localhost:14265 \ -X POST \ -H 'Content-Type: application/json' \ + * + * curl http://localhost:14265 \ -X POST \ -H 'Content-Type: application/json' \ * -d '{"command": "findTransactions", "addresses": ["RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAZETAIRPTM"]}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call findTransactions(@Body IotaFindTransactionsRequest request); @@ -86,7 +86,7 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getInclusionStates", "transactions"Q9HZWYKFWYWZRE9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAZETAIRPTM"], "tips" : []}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getInclusionStates(@Body IotaGetInclusionStateRequest request); @@ -95,9 +95,8 @@ public interface IotaAPIService { * * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getTrytes", "hashes": ["OAATQS9VQLSXCLDJVJJVYUGONXAXOFMJOZNSYWRZSWECMXAQQURHQBJNLD9IOFEPGZEPEMPXCIVRX9999"]}' - * */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getTrytes(@Body IotaGetTrytesRequest request); @@ -107,7 +106,7 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "getTransactionsToApprove", "depth": 27}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getTransactionsToApprove(@Body IotaGetTransactionsToApproveRequest request); @@ -117,7 +116,7 @@ public interface IotaAPIService { * 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 }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call getBalances(@Body IotaGetBalancesRequest request); @@ -127,7 +126,7 @@ public interface IotaAPIService { * 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 }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call attachToTangle(@Body IotaAttachToTangleRequest request); @@ -137,7 +136,7 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "interruptAttachingToTangle" } */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call interruptAttachingToTangle(@Body IotaCommandRequest request); @@ -147,7 +146,7 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "broadcastTransactions", "trytes": ["BYSWEAUTWXHXZ9YBZISEK9LUHWGMHXCGEVNZHRLUWQFCUSDXZHOFHWHL9MQPVJXXZLIXPXPXF9KYEREFSKCPKYIIKPZVLHUTDFQKKVVBBN9ATTLPCNPJDWDEVIYYLGPZGCWXOBDXMLJC9VO9QXTTBLAXTTBFUAROYEGQIVB9MJWJKXJMCUPTWAUGFZBTZCSJVRBGMYXTVBDDS9MYUJCPZ9YDWWQNIPUAIJXXSNLKUBSCOIJPCLEFPOXFJREXQCUVUMKSDOVQGGHRNILCO9GNCLWFM9APMNMWYASHXQAYBEXF9QRIHIBHYEJOYHRQJAOKAQ9AJJFQ9WEIWIJOTZATIBOXQLBMIJU9PCGBLVDDVFP9CFFSXTDUXMEGOOFXWRTLFGV9XXMYWEMGQEEEDBTIJ9OJOXFAPFQXCDAXOUDMLVYRMRLUDBETOLRJQAEDDLNVIRQJUBZBO9CCFDHIX9MSQCWYAXJVWHCUPTRSXJDESISQPRKZAFKFRULCGVRSBLVFOPEYLEE99JD9SEBALQINPDAZHFAB9RNBH9AZWIJOTLBZVIEJIAYGMC9AZGNFWGRSWAXTYSXVROVNKCOQQIWGPNQZKHUNODGYADPYLZZZUQRTJRTODOUKAOITNOMWNGHJBBA99QUMBHRENGBHTH9KHUAOXBVIVDVYYZMSEYSJWIOGGXZVRGN999EEGQMCOYVJQRIRROMPCQBLDYIGQO9AMORPYFSSUGACOJXGAQSPDY9YWRRPESNXXBDQ9OZOXVIOMLGTSWAMKMTDRSPGJKGBXQIVNRJRFRYEZ9VJDLHIKPSKMYC9YEGHFDS9SGVDHRIXBEMLFIINOHVPXIFAZCJKBHVMQZEVWCOSNWQRDYWVAIBLSCBGESJUIBWZECPUCAYAWMTQKRMCHONIPKJYYTEGZCJYCT9ABRWTJLRQXKMWY9GWZMHYZNWPXULNZAPVQLPMYQZCYNEPOCGOHBJUZLZDPIXVHLDMQYJUUBEDXXPXFLNRGIPWBRNQQZJSGSJTTYHIGGFAWJVXWL9THTPWOOHTNQWCNYOYZXALHAZXVMIZE9WMQUDCHDJMIBWKTYH9AC9AFOT9DPCADCV9ZWUTE9QNOMSZPTZDJLJZCJGHXUNBJFUBJWQUEZDMHXGBPTNSPZBR9TGSKVOHMOQSWPGFLSWNESFKSAZY9HHERAXALZCABFYPOVLAHMIHVDBGKUMDXC9WHHTIRYHZVWNXSVQUWCR9M9RAGMFEZZKZ9XEOQGOSLFQCHHOKLDSA9QCMDGCGMRYJZLBVIFOLBIJPROKMHOYTBTJIWUZWJMCTKCJKKTR9LCVYPVJI9AHGI9JOWMIWZAGMLDFJA9WU9QAMEFGABIBEZNNAL9OXSBFLOEHKDGHWFQSHMPLYFCNXAAZYJLMQDEYRGL9QKCEUEJ9LLVUOINVSZZQHCIKPAGMT9CAYIIMTTBCPKWTYHOJIIY9GYNPAJNUJ9BKYYXSV9JSPEXYMCFAIKTGNRSQGUNIYZCRT9FOWENSZQPD9ALUPYYAVICHVYELYFPUYDTWUSWNIYFXPX9MICCCOOZIWRNJIDALWGWRATGLJXNAYTNIZWQ9YTVDBOFZRKO9CFWRPAQQRXTPACOWCPRLYRYSJARRKSQPR9TCFXDVIXLP9XVL99ERRDSOHBFJDJQQGGGCZNDQ9NYCTQJWVZIAELCRBJJFDMCNZU9FIZRPGNURTXOCDSQGXTQHKHUECGWFUUYS9J9NYQ9U9P9UUP9YMZHWWWCIASCFLCMSKTELZWUGCDE9YOKVOVKTAYPHDF9ZCCQAYPJIJNGSHUIHHCOSSOOBUDOKE9CJZGYSSGNCQJVBEFTZFJ9SQUHOASKRRGBSHWKBCBWBTJHOGQ9WOMQFHWJVEG9NYX9KWBTCAIXNXHEBDIOFO9ALYMFGRICLCKKLG9FOBOX9PDWNQRGHBKHGKKRLWTBEQMCWQRLHAVYYZDIIPKVQTHYTWQMTOACXZOQCDTJTBAAUWXSGJF9PNQIJ9AJRUMUVCPWYVYVARKR9RKGOUHHNKNVGGPDDLGKPQNOYHNKAVVKCXWXOQPZNSLATUJT9AUWRMPPSWHSTTYDFAQDXOCYTZHOYYGAIM9CELMZ9AZPWB9MJXGHOKDNNSZVUDAGXTJJSSZCPZVPZBYNNTUQABSXQWZCHDQSLGK9UOHCFKBIBNETK999999999999999999999999999999999999999999999999999999999999999999999999999999999NOXDXXKUDWLOFJLIPQIBRBMGDYCPGDNLQOLQS99EQYKBIU9VHCJVIPFUYCQDNY9APGEVYLCENJIOBLWNB999999999XKBRHUD99C99999999NKZKEKWLDKMJCI9N9XQOLWEPAYWSH9999999999999999999999999KDDTGZLIPBNZKMLTOLOXQVNGLASESDQVPTXALEKRMIOHQLUHD9ELQDBQETS9QFGTYOYWLNTSKKMVJAUXSIROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999"]} */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call broadcastTransactions(@Body IotaBroadcastTransactionRequest request); @@ -157,7 +156,7 @@ public interface IotaAPIService { * curl http://localhost:14265 -X POST -H 'Content-Type: application/json' * -d '{"command": "storeTransactions", "trytes": ["BYSWEAUTWXHXZ9YBZISEK9LUHWGMHXCGEVNZHRLUWQFCUSDXZHOFHWHL9MQPVJXXZLIXPXPXF9KYEREFSKCPKYIIKPZVLHUTDFQKKVVBBN9ATTLPCNPJDWDEVIYYLGPZGCWXOBDXMLJC9VO9QXTTBLAXTTBFUAROYEGQIVB9MJWJKXJMCUPTWAUGFZBTZCSJVRBGMYXTVBDDS9MYUJCPZ9YDWWQNIPUAIJXXSNLKUBSCOIJPCLEFPOXFJREXQCUVUMKSDOVQGGHRNILCO9GNCLWFM9APMNMWYASHXQAYBEXF9QRIHIBHYEJOYHRQJAOKAQ9AJJFQ9WEIWIJOTZATIBOXQLBMIJU9PCGBLVDDVFP9CFFSXTDUXMEGOOFXWRTLFGV9XXMYWEMGQEEEDBTIJ9OJOXFAPFQXCDAXOUDMLVYRMRLUDBETOLRJQAEDDLNVIRQJUBZBO9CCFDHIX9MSQCWYAXJVWHCUPTRSXJDESISQPRKZAFKFRULCGVRSBLVFOPEYLEE99JD9SEBALQINPDAZHFAB9RNBH9AZWIJOTLBZVIEJIAYGMC9AZGNFWGRSWAXTYSXVROVNKCOQQIWGPNQZKHUNODGYADPYLZZZUQRTJRTODOUKAOITNOMWNGHJBBA99QUMBHRENGBHTH9KHUAOXBVIVDVYYZMSEYSJWIOGGXZVRGN999EEGQMCOYVJQRIRROMPCQBLDYIGQO9AMORPYFSSUGACOJXGAQSPDY9YWRRPESNXXBDQ9OZOXVIOMLGTSWAMKMTDRSPGJKGBXQIVNRJRFRYEZ9VJDLHIKPSKMYC9YEGHFDS9SGVDHRIXBEMLFIINOHVPXIFAZCJKBHVMQZEVWCOSNWQRDYWVAIBLSCBGESJUIBWZECPUCAYAWMTQKRMCHONIPKJYYTEGZCJYCT9ABRWTJLRQXKMWY9GWZMHYZNWPXULNZAPVQLPMYQZCYNEPOCGOHBJUZLZDPIXVHLDMQYJUUBEDXXPXFLNRGIPWBRNQQZJSGSJTTYHIGGFAWJVXWL9THTPWOOHTNQWCNYOYZXALHAZXVMIZE9WMQUDCHDJMIBWKTYH9AC9AFOT9DPCADCV9ZWUTE9QNOMSZPTZDJLJZCJGHXUNBJFUBJWQUEZDMHXGBPTNSPZBR9TGSKVOHMOQSWPGFLSWNESFKSAZY9HHERAXALZCABFYPOVLAHMIHVDBGKUMDXC9WHHTIRYHZVWNXSVQUWCR9M9RAGMFEZZKZ9XEOQGOSLFQCHHOKLDSA9QCMDGCGMRYJZLBVIFOLBIJPROKMHOYTBTJIWUZWJMCTKCJKKTR9LCVYPVJI9AHGI9JOWMIWZAGMLDFJA9WU9QAMEFGABIBEZNNAL9OXSBFLOEHKDGHWFQSHMPLYFCNXAAZYJLMQDEYRGL9QKCEUEJ9LLVUOINVSZZQHCIKPAGMT9CAYIIMTTBCPKWTYHOJIIY9GYNPAJNUJ9BKYYXSV9JSPEXYMCFAIKTGNRSQGUNIYZCRT9FOWENSZQPD9ALUPYYAVICHVYELYFPUYDTWUSWNIYFXPX9MICCCOOZIWRNJIDALWGWRATGLJXNAYTNIZWQ9YTVDBOFZRKO9CFWRPAQQRXTPACOWCPRLYRYSJARRKSQPR9TCFXDVIXLP9XVL99ERRDSOHBFJDJQQGGGCZNDQ9NYCTQJWVZIAELCRBJJFDMCNZU9FIZRPGNURTXOCDSQGXTQHKHUECGWFUUYS9J9NYQ9U9P9UUP9YMZHWWWCIASCFLCMSKTELZWUGCDE9YOKVOVKTAYPHDF9ZCCQAYPJIJNGSHUIHHCOSSOOBUDOKE9CJZGYSSGNCQJVBEFTZFJ9SQUHOASKRRGBSHWKBCBWBTJHOGQ9WOMQFHWJVEG9NYX9KWBTCAIXNXHEBDIOFO9ALYMFGRICLCKKLG9FOBOX9PDWNQRGHBKHGKKRLWTBEQMCWQRLHAVYYZDIIPKVQTHYTWQMTOACXZOQCDTJTBAAUWXSGJF9PNQIJ9AJRUMUVCPWYVYVARKR9RKGOUHHNKNVGGPDDLGKPQNOYHNKAVVKCXWXOQPZNSLATUJT9AUWRMPPSWHSTTYDFAQDXOCYTZHOYYGAIM9CELMZ9AZPWB9MJXGHOKDNNSZVUDAGXTJJSSZCPZVPZBYNNTUQABSXQWZCHDQSLGK9UOHCFKBIBNETK999999999999999999999999999999999999999999999999999999999999999999999999999999999NOXDXXKUDWLOFJLIPQIBRBMGDYCPGDNLQOLQS99EQYKBIU9VHCJVIPFUYCQDNY9APGEVYLCENJIOBLWNB999999999XKBRHUD99C99999999NKZKEKWLDKMJCI9N9XQOLWEPAYWSH9999999999999999999999999KDDTGZLIPBNZKMLTOLOXQVNGLASESDQVPTXALEKRMIOHQLUHD9ELQDBQETS9QFGTYOYWLNTSKKMVJAUXSIROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXXVXFWP9X9999"]}' */ - @Headers({ CONTENT_TYPE_HEADER, USER_AGENT_HEADER }) + @Headers({CONTENT_TYPE_HEADER, USER_AGENT_HEADER}) @POST("./") Call storeTransactions(@Body IotaStoreTransactionsRequest request); } diff --git a/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java b/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java index 765aa81..bfef85b 100644 --- a/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java +++ b/src/main/java/jota/dto/request/IotaAttachToTangleRequest.java @@ -7,9 +7,9 @@ public class IotaAttachToTangleRequest extends IotaCommandRequest { private String trunkTransaction; private String branchTransaction; private Integer minWeightMagnitude; - private String [] trytes; + private String[] trytes; - private IotaAttachToTangleRequest(final String trunkTransaction, final String branchTransaction, final Integer minWeightMagnitude, final 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; @@ -17,7 +17,7 @@ public class IotaAttachToTangleRequest extends IotaCommandRequest { this.trytes = trytes; } - public static IotaAttachToTangleRequest createAttachToTangleRequest(final String trunkTransaction, final String branchTransaction, final Integer minWeightMagnitude, final String ... 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 index 18836f3..42847d9 100644 --- a/src/main/java/jota/dto/request/IotaBroadcastTransactionRequest.java +++ b/src/main/java/jota/dto/request/IotaBroadcastTransactionRequest.java @@ -4,14 +4,14 @@ import jota.IotaAPICommands; public class IotaBroadcastTransactionRequest extends IotaCommandRequest { - private String [] trytes; + private String[] trytes; - private IotaBroadcastTransactionRequest(final String ... trytes) { + private IotaBroadcastTransactionRequest(final String... trytes) { super(IotaAPICommands.BROADCAST_TRANSACTIONS); this.trytes = trytes; } - public static IotaBroadcastTransactionRequest createBroadcastTransactionsRequest(final String ... 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 a123aca..3f914a0 100644 --- a/src/main/java/jota/dto/request/IotaCommandRequest.java +++ b/src/main/java/jota/dto/request/IotaCommandRequest.java @@ -17,7 +17,7 @@ public class IotaCommandRequest { public static IotaCommandRequest createGetTipsRequest() { return new IotaCommandRequest(IotaAPICommands.GET_TIPS); } - + public static IotaCommandRequest createGetNeighborsRequest() { return new IotaCommandRequest(IotaAPICommands.GET_NEIGHBORS); } diff --git a/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java b/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java index 4e224a8..b3a72df 100644 --- a/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java +++ b/src/main/java/jota/dto/request/IotaFindTransactionsRequest.java @@ -4,35 +4,35 @@ import jota.IotaAPICommands; public class IotaFindTransactionsRequest extends IotaCommandRequest { - private IotaFindTransactionsRequest() { - super(IotaAPICommands.FIND_TRANSACTIONS); - } - - private String[] bundles; // List of bundle hashes. The hashes need to be extended to 81chars by padding the hash with 9's. - private String[] addresses; + private String[] bundles; // List of bundle hashes. The hashes need to be extended to 81chars by padding the hash with 9's. + private String[] addresses; private String[] tags; private String[] approvees; + private IotaFindTransactionsRequest() { + super(IotaAPICommands.FIND_TRANSACTIONS); + } + public static IotaFindTransactionsRequest createFindTransactionRequest() { return new IotaFindTransactionsRequest(); } - public IotaFindTransactionsRequest byBundles(String ... bundles) { + public IotaFindTransactionsRequest byBundles(String... bundles) { this.bundles = bundles; return this; } - public IotaFindTransactionsRequest byAddresses(String ... addresses) { + public IotaFindTransactionsRequest byAddresses(String... addresses) { this.addresses = addresses; return this; } - public IotaFindTransactionsRequest byTags(String ... tags) { + public IotaFindTransactionsRequest byTags(String... tags) { this.tags = tags; return this; } - public IotaFindTransactionsRequest byApprovees(String ... approvees) { + public IotaFindTransactionsRequest byApprovees(String... approvees) { 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 index aa33397..807865d 100644 --- a/src/main/java/jota/dto/request/IotaGetBalancesRequest.java +++ b/src/main/java/jota/dto/request/IotaGetBalancesRequest.java @@ -4,16 +4,16 @@ import jota.IotaAPICommands; public class IotaGetBalancesRequest extends IotaCommandRequest { - private String [] addresses; + private String[] addresses; private Integer threshold; - private IotaGetBalancesRequest(final Integer threshold, final String ... addresses) { + 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) { + public static IotaGetBalancesRequest createIotaGetBalancesRequest(final Integer threshold, final String... addresses) { return new IotaGetBalancesRequest(threshold, addresses); } diff --git a/src/main/java/jota/dto/request/IotaGetInclusionStateRequest.java b/src/main/java/jota/dto/request/IotaGetInclusionStateRequest.java index 61829da..d0d323c 100644 --- a/src/main/java/jota/dto/request/IotaGetInclusionStateRequest.java +++ b/src/main/java/jota/dto/request/IotaGetInclusionStateRequest.java @@ -6,23 +6,23 @@ import java.util.Collection; public class IotaGetInclusionStateRequest extends IotaCommandRequest { + private String[] transactions; + private String[] tips; + private IotaGetInclusionStateRequest(final String[] transactions, final String[] tips) { super(IotaAPICommands.GET_INCLUSIONS_STATES); this.transactions = transactions; this.tips = tips; } - private String[] transactions; - private String[] tips; - public static IotaGetInclusionStateRequest createGetInclusionStateRequest(String[] transactions, String[] tips) { return new IotaGetInclusionStateRequest(transactions, tips); } public static IotaGetInclusionStateRequest createGetInclusionStateRequest(Collection transactions, Collection tips) { return createGetInclusionStateRequest( - transactions.toArray(new String[] {}), - tips.toArray(new String[] {})); + transactions.toArray(new String[]{}), + tips.toArray(new String[]{})); } } diff --git a/src/main/java/jota/dto/request/IotaGetTrytesRequest.java b/src/main/java/jota/dto/request/IotaGetTrytesRequest.java index efed7f7..b493451 100644 --- a/src/main/java/jota/dto/request/IotaGetTrytesRequest.java +++ b/src/main/java/jota/dto/request/IotaGetTrytesRequest.java @@ -4,14 +4,14 @@ import jota.IotaAPICommands; public class IotaGetTrytesRequest extends IotaCommandRequest { - private String [] hashes; + private String[] hashes; - private IotaGetTrytesRequest(final String ... hashes) { + private IotaGetTrytesRequest(final String... hashes) { super(IotaAPICommands.GET_TRYTES); this.hashes = hashes; } - public static IotaGetTrytesRequest createGetTrytesRequest(String ... hashes) { + public static IotaGetTrytesRequest createGetTrytesRequest(String... hashes) { return new IotaGetTrytesRequest(hashes); } } diff --git a/src/main/java/jota/dto/request/IotaNeighborsRequest.java b/src/main/java/jota/dto/request/IotaNeighborsRequest.java index 74a5cc5..82c96b1 100644 --- a/src/main/java/jota/dto/request/IotaNeighborsRequest.java +++ b/src/main/java/jota/dto/request/IotaNeighborsRequest.java @@ -4,18 +4,18 @@ import jota.IotaAPICommands; public class IotaNeighborsRequest extends IotaCommandRequest { - private String [] uris; + private String[] uris; - private IotaNeighborsRequest(IotaAPICommands type, final String ... uris) { + private IotaNeighborsRequest(IotaAPICommands type, final String... uris) { super(type); this.uris = uris; } - public static IotaNeighborsRequest createAddNeighborsRequest(String ... uris) { + public static IotaNeighborsRequest createAddNeighborsRequest(String... uris) { return new IotaNeighborsRequest(IotaAPICommands.ADD_NEIGHBORS, uris); } - public static IotaNeighborsRequest createRemoveNeighborsRequest(String ... 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 index a306f18..5247894 100644 --- a/src/main/java/jota/dto/request/IotaStoreTransactionsRequest.java +++ b/src/main/java/jota/dto/request/IotaStoreTransactionsRequest.java @@ -4,14 +4,14 @@ import jota.IotaAPICommands; public class IotaStoreTransactionsRequest extends IotaCommandRequest { - private String [] trytes; + private String[] trytes; - private IotaStoreTransactionsRequest(final String ... trytes) { + private IotaStoreTransactionsRequest(final String... trytes) { super(IotaAPICommands.STORE_TRANSACTIONS); this.trytes = trytes; } - public static IotaStoreTransactionsRequest createStoreTransactionsRequest(final String ... trytes) { + public static IotaStoreTransactionsRequest createStoreTransactionsRequest(final String... trytes) { return new IotaStoreTransactionsRequest(trytes); } } diff --git a/src/main/java/jota/dto/response/AnalyzeTransactionResponse.java b/src/main/java/jota/dto/response/AnalyzeTransactionResponse.java index 2c1bc22..fdb7059 100644 --- a/src/main/java/jota/dto/response/AnalyzeTransactionResponse.java +++ b/src/main/java/jota/dto/response/AnalyzeTransactionResponse.java @@ -34,39 +34,51 @@ public class AnalyzeTransactionResponse extends AbstractResponse { public String getValue() { return value; } + public String getDigest() { return digest; } + public String getTrunkTransaction() { return trunkTransaction; } + public String getTimestamp() { return timestamp; } + public String getSignatureNonce() { return signatureNonce; } + public String getType() { return type; } + public String getAddress() { return address; } + public String getApprovalNonce() { return approvalNonce; } + public String getBranchTransaction() { return branchTransaction; } + public String getBundle() { return bundle; } + public String getHash() { return hash; } + public String getIndex() { return index; } + public String getSignatureMessageChunk() { return signatureMessageChunk; } diff --git a/src/main/java/jota/dto/response/GetAttachToTangleResponse.java b/src/main/java/jota/dto/response/GetAttachToTangleResponse.java index 9a4627c..53eb98b 100644 --- a/src/main/java/jota/dto/response/GetAttachToTangleResponse.java +++ b/src/main/java/jota/dto/response/GetAttachToTangleResponse.java @@ -2,7 +2,7 @@ package jota.dto.response; public class GetAttachToTangleResponse extends AbstractResponse { - private String [] trytes; + 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 index 8976349..fb9f05e 100644 --- a/src/main/java/jota/dto/response/GetBalancesResponse.java +++ b/src/main/java/jota/dto/response/GetBalancesResponse.java @@ -2,7 +2,7 @@ package jota.dto.response; public class GetBalancesResponse extends AbstractResponse { - private String [] balances; + private String[] balances; private String milestone; private Integer milestoneIndex; diff --git a/src/main/java/jota/dto/response/GetInclusionStateResponse.java b/src/main/java/jota/dto/response/GetInclusionStateResponse.java index 966257e..5b60af9 100644 --- a/src/main/java/jota/dto/response/GetInclusionStateResponse.java +++ b/src/main/java/jota/dto/response/GetInclusionStateResponse.java @@ -1,7 +1,8 @@ package jota.dto.response; public class GetInclusionStateResponse extends AbstractResponse { - boolean [] states; + + boolean[] states; public boolean[] getStates() { return states; diff --git a/src/main/java/jota/dto/response/GetNeighborsResponse.java b/src/main/java/jota/dto/response/GetNeighborsResponse.java index ea04c84..784b2cc 100644 --- a/src/main/java/jota/dto/response/GetNeighborsResponse.java +++ b/src/main/java/jota/dto/response/GetNeighborsResponse.java @@ -18,6 +18,7 @@ public class GetNeighborsResponse extends AbstractResponse { public String getAddress() { return address; } + public String getNumberOfAllTransactions() { return numberOfAllTransactions; } @@ -25,6 +26,7 @@ public class GetNeighborsResponse extends AbstractResponse { public String getNumberOfInvalidTransactions() { return numberOfInvalidTransactions; } + public String getNumberOfNewTransactions() { return numberOfNewTransactions; } diff --git a/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java b/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java index cfd30d1..5f76cf3 100644 --- a/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java +++ b/src/main/java/jota/dto/response/GetTransactionsToApproveResponse.java @@ -8,6 +8,7 @@ public class GetTransactionsToApproveResponse extends AbstractResponse { public String getBranchTransactionToApprove() { return branchTransactionToApprove; } + public String getTrunkTransaction() { return trunkTransaction; } diff --git a/src/main/java/jota/dto/response/GetTransfersResponse.java b/src/main/java/jota/dto/response/GetTransfersResponse.java index 1a94863..d96219b 100644 --- a/src/main/java/jota/dto/response/GetTransfersResponse.java +++ b/src/main/java/jota/dto/response/GetTransfersResponse.java @@ -6,26 +6,34 @@ import org.apache.commons.lang3.builder.ToStringStyle; public class GetTransfersResponse extends AbstractResponse { private Transfers[] transfers; - + + public Transfers[] getTransfers() { + return transfers; + } + public static class Transfers { private String timestamp; private String address; private String hash; private String persistence; private String value; - + public String getAddress() { return address; } + public String getHash() { return hash; } + public String getPersistence() { return persistence; } + public String getTimestamp() { return timestamp; } + public String getValue() { return value; } @@ -35,8 +43,4 @@ public class GetTransfersResponse extends AbstractResponse { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } } - - public Transfers[] getTransfers() { - return transfers; - } } diff --git a/src/test/java/jota/IotaAPIProxyTest.java b/src/test/java/jota/IotaAPIProxyTest.java index f0ffc97..afe5bc5 100644 --- a/src/test/java/jota/IotaAPIProxyTest.java +++ b/src/test/java/jota/IotaAPIProxyTest.java @@ -1,31 +1,28 @@ 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; -import org.junit.Ignore; import org.junit.Test; +import static org.junit.Assert.assertThat; + /** * Let's do some integration test coverage against a default local real node. - * + * * @author davassi */ public class IotaAPIProxyTest { - private static Gson gson = new GsonBuilder().create(); - private static final String TEST_SEED = "AAA999999999999999999999999999999999999999999999999999999999999999999999999999999"; 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"; private static final Integer TEST_MILESTONE_INDEX = 8059; - + private static Gson gson = new GsonBuilder().create(); private IotaAPIProxy proxy; @Before @@ -122,5 +119,5 @@ public class IotaAPIProxyTest { IotaAPIProxy proxy = new IotaAPIProxy.Builder().build(); assertThat(proxy, IsNull.notNullValue()); } - + }