diff --git a/Data Engine/Documents/Internal Manual/Packet Spreadsheet.xlsx b/Data Engine/Documents/Internal Manual/Packet Spreadsheet.xlsx index 7d2c590a..d2af62ab 100644 Binary files a/Data Engine/Documents/Internal Manual/Packet Spreadsheet.xlsx and b/Data Engine/Documents/Internal Manual/Packet Spreadsheet.xlsx differ diff --git a/DeFi-Data-Engine/DeFi Data Engine/config/app.properties b/DeFi-Data-Engine/DeFi Data Engine/config/app.properties index e3ce106e..7a3ae42c 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/config/app.properties +++ b/DeFi-Data-Engine/DeFi Data Engine/config/app.properties @@ -9,6 +9,9 @@ general.data.delim=, # collection delimiter general.collection.delim== +# transfer delimiter +general.transfer.delim=&&& + # date time formatter for data intake general.data.dateformat=dd-MM-yyyy diff --git a/DeFi-Data-Engine/DeFi Data Engine/config/stream.properties b/DeFi-Data-Engine/DeFi Data Engine/config/stream.properties index ec810c17..b8f5bc7c 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/config/stream.properties +++ b/DeFi-Data-Engine/DeFi Data Engine/config/stream.properties @@ -1,10 +1,10 @@ # === GENERAL PROPERTIES === # consumer types for accepting input -general.consumer.types=null +general.consumer.types=socket_consumer # producer types for writing output -general.producer.types=null +general.producer.types=socket_producer # === REST SOCKET PROPERTIES === diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/consumers/SocketConsumer.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/consumers/SocketConsumer.java index eee258fc..b085611e 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/consumers/SocketConsumer.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/consumers/SocketConsumer.java @@ -4,11 +4,11 @@ import java.io.DataOutputStream; import java.io.IOException; import java.net.SocketException; + import org.framework.router.Response; import org.json.JSONObject; import org.out.handler.OutputConsumer; import org.out.handler.OutputManager; -import org.out.handler.ProtocolDirectory; import org.out.socket.SocketManager; import org.properties.Config; @@ -46,41 +46,79 @@ public void run() { // listen for data packets from rest socket while(true) { - String[] data = ((String)in.readUTF()).split(Config.getProperty("app", "general.internal.delim")); - int protocol_index = 0, data_index = 0; - if(data.length == 2) { - protocol_index = 0; - data_index = 1; - } - - else if(data.length == 3) { - protocol_index = 1; - data_index = 2; - } - - else { - System.err.println("Invalid data format for SocketConsumer. Terminating."); - System.exit(1); - } - - String[] protocol = ProtocolDirectory.getProtocol(data[protocol_index]); - if(protocol == null) { + String[] data = ((String)in.readUTF()).split(Config.getProperty("app", "general.transfer.delim")); + String tag, sub_tag, sub_data, data_str; + + if(data.length == 3) { + tag = data[0]; + sub_tag = data[1]; + data_str = data[2]; + + Response response = send(tag, sub_tag, data_str); out.writeUTF(new JSONObject() - .put("response", "403") - .put("message", "Protocol does not exist. Please reference documentation.") + .put("response", "200") + .put("code", response.code()) + .put("message", response.message()) + .put("data", response.data()) .toString()); - } else { - Response response = send(protocol[0], protocol[1], data[data_index], data[0]); + + } else if(data.length == 4) { + tag = data[0]; + sub_tag = data[1]; + sub_data = data[2]; + data_str = data[3]; + + Response response = send(tag, sub_tag, data_str, sub_data); out.writeUTF(new JSONObject() .put("response", "200") .put("code", response.code()) .put("message", response.message()) .put("data", response.data()) - .toString()); + .toString()); + + } else { + out.writeUTF(new JSONObject() + .put("response", "502") + .put("message", "Communication between REST API and SocketConsumer is not consistent. Differing input lengths.") + .toString()); } + + +// int protocol_index = 0, data_index = 0; +// if(data.length == 2) { +// protocol_index = 0; +// data_index = 1; +// } +// +// else if(data.length == 3) { +// protocol_index = 1; +// data_index = 2; +// } +// +// else { +// System.err.println("Invalid data format for SocketConsumer. Terminating."); +// System.exit(1); +// } +// +// String[] protocol = ProtocolDirectory.getProtocol(data[protocol_index]); +// if(protocol == null) { +// out.writeUTF(new JSONObject() +// .put("response", "403") +// .put("message", "Protocol does not exist. Please reference documentation.") +// .toString()); +// } else { +// Response response = send(protocol[0], protocol[1], data[data_index], data[0]); +// out.writeUTF(new JSONObject() +// .put("response", "200") +// .put("code", response.code()) +// .put("message", response.message()) +// .put("data", response.data()) +// .toString()); +// } } } catch(SocketException e) { - System.out.println("Rest Application has unexpectedly closed."); + System.err.println("Rest Application has unexpectedly closed."); + System.exit(1); } catch (IOException e) { e.printStackTrace(); System.exit(1); diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/destinations/SocketDestination.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/destinations/SocketDestination.java index 82230598..daab980b 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/destinations/SocketDestination.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/destinations/SocketDestination.java @@ -20,8 +20,8 @@ public SocketDestination(String key, DataOutputStream out) { public final synchronized boolean send(Packet packet) { try { out.write(packet.getData().getBytes()); + out.write(10); } catch (JSONException | IOException e) { - e.printStackTrace(); return false; } diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/handler/ProtocolDirectory.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/handler/ProtocolDirectory.java deleted file mode 100644 index c5558db0..00000000 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/handler/ProtocolDirectory.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.out.handler; - -import java.util.HashMap; - -public class ProtocolDirectory { - - private static final HashMap protocols; - -static { - protocols = new HashMap(); - - protocols.put("source_exists", new String[]{"SRC", "EXSR"}); - protocols.put("stream_exists", new String[]{"SRC", "EXST"}); - protocols.put("initialize", new String[]{"SRC", "INIT"}); - protocols.put("is_authorized", new String[]{"SRC", "IATH"}); - protocols.put("is_active", new String[]{"SRC", "IATV"}); - protocols.put("execute", new String[]{"SRC", "EXEC"}); - protocols.put("kill", new String[]{"SRC", "KILL"}); - protocols.put("subscribe", new String[]{"SRC", "SUBS"}); - protocols.put("request", new String[]{"SRC", "RQST"}); - protocols.put("scan", new String[] {"SRC", "SCAN"}); -} - - public static String[] getProtocol(String protocol) { - if(protocols.containsKey(protocol)) - return protocols.get(protocol); - - return null; - } -} \ No newline at end of file diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/socket/SocketManager.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/socket/SocketManager.java index e6c798e5..e32aa95f 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/socket/SocketManager.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/out/socket/SocketManager.java @@ -51,6 +51,7 @@ public synchronized static String accept(int port) { DataOutputStream out = new DataOutputStream(connection.getOutputStream()); String key = UUID.randomUUID().toString(); out.write(key.getBytes()); + out.write(10); if(connections.containsKey(key)) connections.get(key).close(); diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/connected/connections/TemplateExternalConnection.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/connected/connections/TemplateExternalConnection.java index 7f2716d1..74e0afa8 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/connected/connections/TemplateExternalConnection.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/connected/connections/TemplateExternalConnection.java @@ -1,8 +1,5 @@ package org.stream.external.connected.connections; -import java.time.format.DateTimeFormatter; - -import org.properties.Config; import org.stream.external.handler.ExternalStreamConnection; import org.stream.external.handler.ExternalStreamManager; @@ -12,8 +9,6 @@ public class TemplateExternalConnection extends ExternalStreamConnection { private boolean authorized = false; private boolean override = false; - private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Config.getProperty("app", "general.data.dateformat")); - public TemplateExternalConnection(ExternalStreamManager manager, String data) { super(manager, data.split(",")[0]); diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamHandler.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamHandler.java index ee963dd6..74d4114d 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamHandler.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamHandler.java @@ -34,11 +34,13 @@ public Response processEXST(Packet packet) { public Response processINIT(Packet packet) { // extract template from data String data = packet.getData(); - int splitIndex = data.indexOf(','); + String delim = Config.getProperty("app", "general.internal.delim"); + int delim_len = delim.length(); + int splitIndex = data.indexOf(delim); String template = ""; if(splitIndex != -1) { template = data.substring(0, splitIndex).trim(); - data = data.substring(splitIndex + 1).trim(); + data = data.substring(splitIndex + delim_len).trim(); } else { template = data; data = ""; diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamManager.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamManager.java index e1f89656..78d45c4b 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamManager.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/external/handler/ExternalStreamManager.java @@ -399,10 +399,6 @@ protected boolean killStream(String hash) { */ private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Config.getProperty("app", "general.data.dateformat")); protected void processSubscription(String hash, String subscription, String destination, String data) { - Response out_response = handler.send("OUT", "EDAT", String.format("%s", data), destination); - if(out_response.code() != 200) - Logger.warn(out_response); - // define subscribed date String date = LocalDate.now().format(formatter); String collection = subscription + Config.getProperty("app", "general.collection.delim") + date; @@ -420,10 +416,6 @@ protected void processSubscription(String hash, String subscription, String dest * @param data Data sent by the given subscription. */ protected void processRequest(String hash, String request, String destination, String data) { - Response out_response = handler.send("OUT", "EDAT", String.format("%s", data), destination); - if(out_response.code() != 200) - Logger.warn(out_response); - Response lsh_response = handler.send("LSH", "PUSH", String.format("%s%s%s", data, Config.getProperty("app", "general.internal.delim"), request)); if(lsh_response.code() != 200) Logger.warn(lsh_response); diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/local/handler/LocalStreamHandler.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/local/handler/LocalStreamHandler.java index a2c9e163..958b8de0 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/local/handler/LocalStreamHandler.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/local/handler/LocalStreamHandler.java @@ -1,12 +1,7 @@ package org.stream.local.handler; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.Arrays; -import java.util.List; import java.util.Set; -import java.util.stream.Collectors; - import org.framework.router.Packet; import org.framework.router.Response; import org.framework.router.ResponseFactory; diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/registry/StreamRegistryController.java b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/registry/StreamRegistryController.java index 3f5663fe..45a00550 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/registry/StreamRegistryController.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/main/java/org/stream/registry/StreamRegistryController.java @@ -94,9 +94,9 @@ public Response processRQST(Packet packet) { // dated else if(data.length == 5) { - LocalDate start = LocalDate.parse(data[1], formatter); - LocalDate end = LocalDate.parse(data[2], formatter); try { + LocalDate start = LocalDate.parse(data[1], formatter); + LocalDate end = LocalDate.parse(data[2], formatter); List dates = start.datesUntil(end).collect(Collectors.toList()); // invalid date processing if(dates.isEmpty()) @@ -108,13 +108,20 @@ else if(data.length == 5) { // perform requests request = uuid + Config.getProperty("app", "general.collection.delim") + data[3] + Config.getProperty("app", "general.collection.delim") + date.format(formatter); lsh_response = send("LSH", "RQST", format(request, data[4]), packet.getSubData()); + if(lsh_response.code() == 200) + continue; + if(lsh_response.code() == 446) { esh_response = send("ESH", "RQST", format(data[0], request), packet.getSubData()); if(esh_response.code() != 200) return esh_response; + } else { + return lsh_response; } + - if(lsh_response.code() != 200 && lsh_response.code() != 446) + lsh_response = send("LSH", "RQST", format(request, data[4]), packet.getSubData()); + if(lsh_response.code() != 200) return lsh_response; } diff --git a/DeFi-Data-Engine/DeFi Data Engine/src/test/java/test/lsh/mongodb/TestMongoDatabase.java b/DeFi-Data-Engine/DeFi Data Engine/src/test/java/test/lsh/mongodb/TestMongoDatabase.java index 62df17d6..b1fdece3 100644 --- a/DeFi-Data-Engine/DeFi Data Engine/src/test/java/test/lsh/mongodb/TestMongoDatabase.java +++ b/DeFi-Data-Engine/DeFi Data Engine/src/test/java/test/lsh/mongodb/TestMongoDatabase.java @@ -88,17 +88,9 @@ public void TestRQSTDated() { Config.setProperty("stream", "mongodb.database.main", "testing"); Core core = new Core(); - assertEquals(200, core.send("SRC", "INIT", "external_template, key").code()); + assertEquals(200, core.send("SRC", "INIT", "external_template:::key").code()); - assertEquals(200, core.send("SRC", "RQST", "key:::10-09-2022:::12-09-2022:::template-external-request:::get_all, template-external-request", "null").code()); -// assertEquals(445, core.send("LSH", "RQST", "get_all, test-mongo-database, invalid").code()); -// assertEquals(446, core.send("LSH", "RQST", "get_all, dne").code()); -// -// // test get_item -// assertEquals(200, core.send("LSH", "RQST", "get_item, test-mongo-database, element1, e1").code()); -// assertEquals(446, core.send("LSH", "RQST", "get_item, test-mongo-database, element1, e2").code()); -// -// assertEquals(500, core.send("LSH", "RQST", "").code()); + assertEquals(200, core.send("SRC", "RQST", "key:::10-09-2022:::15-09-2022:::template-external-request:::get_all, template-external-request", "null").code()); } @Test diff --git a/DeFi-Data-Engine/Rest Application/config/app.properties b/DeFi-Data-Engine/Rest Application/config/app.properties index 526cb9b7..11c5215b 100644 --- a/DeFi-Data-Engine/Rest Application/config/app.properties +++ b/DeFi-Data-Engine/Rest Application/config/app.properties @@ -3,8 +3,17 @@ # Wait-time in between checking for responses from engine: rest.wait.ms=10 -# Delimiter used for communication between engine and API: -general.internal.delim=,., +# delimiter used for internal processing +general.internal.delim=::: + +# data delimiter +general.data.delim=, + +# collection delimiter +general.collection.delim== + +# transfer delimiter +general.transfer.delim=&&& # === SPRING PROPERTIES === diff --git a/DeFi-Data-Engine/Rest Application/src/main/java/org/rest/application/Endpoint.java b/DeFi-Data-Engine/Rest Application/src/main/java/org/rest/application/Endpoint.java index 3fb4496c..e512294e 100644 --- a/DeFi-Data-Engine/Rest Application/src/main/java/org/rest/application/Endpoint.java +++ b/DeFi-Data-Engine/Rest Application/src/main/java/org/rest/application/Endpoint.java @@ -33,53 +33,105 @@ public class Endpoint { e.printStackTrace(); System.exit(1); } -} - // sample testing url: http://localhost:8080/defi/v1/rest/live?key=TEST-KEY&protocol=request&data=key,external - @GetMapping(path="/defi/v1/rest/live") - public String getRestLive(@RequestParam String key, @RequestParam String protocol, @RequestParam String data) throws InterruptedException { - String response = request(key, protocol, data); - if(response == null) - return new JSONObject() - .put("response", "500") - .put("message", "Unexpected invalid request. Cannot process given response.") - .toString(); - - return response; +} + + @GetMapping(path="/defi/v1/rest/source_exists") + public String getSourceExists(@RequestParam String source) { + return requestStatic("SRC", "EXSR", source); } - @GetMapping(path="/defi/v1/rest/static") - public String getRestStatic(@RequestParam String protocol, @RequestParam String data) throws InterruptedException { - String response = request("", protocol, data); - if(response == null) - return new JSONObject() - .put("response", "500") - .put("message", "Unexpected invalid request. Cannot process given response.") - .toString(); - - return response; + @GetMapping(path="/defi/v1/rest/stream_exists") + public String getStreamExists(@RequestParam String key) { + return requestStatic("SRC", "EXST", key); + } + + @GetMapping(path="/defi/v1/rest/initialize") + public String getInitialize(@RequestParam String source, @RequestParam String auth_data) { + return requestStatic("SRC", "INIT", source, auth_data); + } + + @GetMapping(path="/defi/v1/rest/is_authorized") + public String getIsAuthorized(@RequestParam String key) { + return requestStatic("SRC", "IATH", key); + } + + @GetMapping(path="/defi/v1/rest/is_active") + public String getIsActive(@RequestParam String key) { + return requestStatic("SRC", "IATV", key); } - private final synchronized String request(String key, String protocol, String data) { + @GetMapping(path="/defi/v1/rest/execute") + @Deprecated + public String getExecute(@RequestParam String key) { + return requestStatic("SRC", "EXEC", key); + } + + @GetMapping(path="/defi/v1/rest/kill") + @Deprecated + public String getKill(@RequestParam String key) { + return requestStatic("SRC", "KILL", key); + } + + @GetMapping(path="/defi/v1/rest/subscribe") + @Deprecated + public String getSubscription(@RequestParam String key, @RequestParam String subscription) { + return requestStatic("SRC", "SUBS", key, subscription); + } + + @GetMapping(path="/defi/v1/rest/request") + public String getRequest(@RequestParam String destination, @RequestParam String key, @RequestParam String request, @RequestParam String query) { + return request("SRC", "RQST", destination, key, request, query); + } + + @GetMapping(path="/defi/v1/rest/request_dated") + public String getRequest(@RequestParam String destination, @RequestParam String key, @RequestParam String request, @RequestParam String query, @RequestParam String start_date, @RequestParam String end_date) { + return request("SRC", "RQST", destination, key, start_date, end_date, request, query); + } + + private final String requestStatic(String tag, String sub_tag, String... data) { + return request(tag, sub_tag, "", data); + } + + private final String request(String tag, String sub_tag, String destination, String... data) { try { - String delim = Config.getProperty("app", "general.internal.delim"); - if(key.contains(delim) || protocol.contains(delim) || data.contains(delim)) + String delim = Config.getProperty("app", "general.transfer.delim"); + if(destination.contains(delim)) return new JSONObject() .put("response", "406") .put("message", String.format("Parameters cannot contain the character sequence <%s>. Please request with a different character.", delim)) .toString(); + if(data.length == 0) + throw new IOException("Data length 0, fatal error occured"); + + StringBuilder formatted_data = new StringBuilder(); + String internal_delim = Config.getProperty("app", "general.internal.delim"); + for(int i = 0; i < data.length; i++) { + if(data[i].contains(delim)) + return new JSONObject() + .put("response", "406") + .put("message", String.format("Parameters cannot contain the character sequence <%s>. Please request with a different character.", delim)) + .toString(); + formatted_data.append(data[i]); + if(i != data.length - 1) + formatted_data.append(internal_delim); + } + // static request - if(key.equals("")) - out.writeUTF(String.format("%s%s%s", protocol, delim, data)); + if(destination.equals("")) + out.writeUTF(String.format("%s%s%s%s%s", tag, delim, sub_tag, delim, formatted_data)); // live request else - out.writeUTF(String.format("%s%s%s%s%s", key, delim, protocol, delim, data)); + out.writeUTF(String.format("%s%s%s%s%s%s%s", tag, delim, sub_tag, delim, destination, delim, formatted_data)); return in.readUTF(); } catch (IOException e) { e.printStackTrace(); System.exit(1); } - return null; + return new JSONObject() + .put("response", "500") + .put("message", "Unexpected invalid request. Cannot process given response.") + .toString(); } } \ No newline at end of file diff --git a/DeFi-Data-Engine/Testing Environment/src/test/connection/socket/SocketConnectionTest.java b/DeFi-Data-Engine/Testing Environment/src/test/connection/socket/SocketConnectionTest.java index d864e816..3007daee 100644 --- a/DeFi-Data-Engine/Testing Environment/src/test/connection/socket/SocketConnectionTest.java +++ b/DeFi-Data-Engine/Testing Environment/src/test/connection/socket/SocketConnectionTest.java @@ -2,7 +2,6 @@ import java.io.BufferedReader; import java.io.DataInputStream; -import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; @@ -14,17 +13,16 @@ public class SocketConnectionTest { public static void main(String[] args) throws UnknownHostException, IOException { + final Socket socket = SocketFactory.getDefault().createSocket("localhost", 61200); + final DataInputStream in = new DataInputStream(socket.getInputStream()); + + String key = readLine(in); + Thread thread = new Thread() { public void run() { try { - Socket socket = SocketFactory.getDefault().createSocket("localhost", 61200); - DataInputStream in = new DataInputStream(socket.getInputStream()); - DataOutputStream out = new DataOutputStream(socket.getOutputStream()); - - out.writeUTF("TEST-KEY"); - while(true) { - System.out.println(in.readUTF()); + System.out.println(readLine(in)); } } catch(Exception e) { e.printStackTrace(); @@ -34,8 +32,18 @@ public void run() { }; thread.start(); - System.out.println("INIT RESPONSE: " + request("http://localhost:8080/defi/v1/rest/static?protocol=initialize&data=external_template,key")); - System.out.println("RQST RESPONSE: " + request("http://localhost:8080/defi/v1/rest/live?key=TEST-KEY&protocol=request&data=key,external")); + //TODO FIX INTEGRATION WITH REST API + System.out.println("SOURCE_EXISTS RESPONSE: " + request("http://localhost:8080/defi/v1/rest/source_exists?source=external_template")); + System.out.println("INIT RESPONSE: " + request("http://localhost:8080/defi/v1/rest/initialize?source=external_template&auth_data=key")); + System.out.println("STREAM_EXISTS RESPONSE: " + request("http://localhost:8080/defi/v1/rest/stream_exists?key=key")); + System.out.println("IS_AUTHORIZED RESPONSE: " + request("http://localhost:8080/defi/v1/rest/is_authorized?key=key")); + System.out.println("RQST RESPONSE: " + request( + String.format("http://localhost:8080/defi/v1/rest/request_dated?destination=%s" + + "&key=key" + + "&request=template-external-request" + + "&query=get_all,template-external-request" + + "&start_date=10-09-2022" + + "&end_date=14-09-2022", key))); } public static String request(String str, String... params) throws IOException { @@ -56,8 +64,18 @@ public static String request(String str, String... params) throws IOException { return response.toString(); } else { - System.out.println("GET request not worked"); + System.err.println(String.format("Request Failure code <%d> url <%s>\nmsg <%s>", responseCode, obj.toString(), con.toString())); + System.exit(1); } return ""; } + + public static final String readLine(DataInputStream in) throws IOException { + StringBuilder out = new StringBuilder(); + char c = 0; + while((c = (char)in.read()) != 10) + out.append(c); + + return out.toString(); + } } \ No newline at end of file