From 2ca153797939ba5429b02905fb77d85ed38be9af Mon Sep 17 00:00:00 2001 From: mdway Date: Thu, 8 Jun 2017 18:19:02 +0200 Subject: Initial Commit --- src/java/de/romjaki/icndbwrapper/RestAction.java | 49 +++++++++++++++++++----- 1 file changed, 39 insertions(+), 10 deletions(-) (limited to 'src/java/de/romjaki/icndbwrapper/RestAction.java') diff --git a/src/java/de/romjaki/icndbwrapper/RestAction.java b/src/java/de/romjaki/icndbwrapper/RestAction.java index 59b0a59..65150f9 100644 --- a/src/java/de/romjaki/icndbwrapper/RestAction.java +++ b/src/java/de/romjaki/icndbwrapper/RestAction.java @@ -1,7 +1,11 @@ package de.romjaki.icndbwrapper; import com.google.gson.Gson; +import sun.misc.IOUtils; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.Map; import java.util.function.Consumer; @@ -12,33 +16,58 @@ public class RestAction { private final String url; private final Map parameters; - public RestAction(R emptySchematic, String relativeUrl, Map parameters) { + public RestAction(GsonSchematic emptySchematic, String relativeUrl, Map parameters) { this.emptySchematic = emptySchematic; this.url = relativeUrl; this.parameters = parameters; } - public static String executeGet(String url, Map parameters) { - return ""; + public static String executeRequest(String url, Map parameters, String method) throws IOException { + HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); + con.setRequestMethod(method); + con.setUseCaches(false); + parameters.forEach(con::addRequestProperty); + return String.valueOf(IOUtils.readFully(con.getInputStream(), -1, true)); } - public void queue() { - queue(null); + public Thread queue() { + return queue(null); } - public void queue(Consumer success) { - queue(success, null); + public Thread queue(Consumer success) { + return queue(success, null); } - public void queue(Consumer success, Consumer fail) { + public Thread queue(Consumer success, Consumer fail) { Thread t = new Thread(() -> { Gson gson = new Gson(); - R schematic = gson.fromJson(executeGet(RestAction.this.url, RestAction.this.parameters), emptySchematic.getClass()); + GsonSchematic schematic = null; + try { + schematic = gson.fromJson(executeGet(RestAction.this.url, RestAction.this.parameters), emptySchematic.getClass()); + } catch (IOException e) { + e.printStackTrace(); + } + if (schematic.succeeded()) { + success.accept(schematic.result()); + } }); + t.start(); + return t; } + private String executeGet(String url, Map parameters) throws IOException { + return executeRequest(url, parameters, "GET"); + } + + @SuppressWarnings({"unchecked"}) public T complete() { - // TODO + try { + Object[] outside = new Object[1]; + queue(a -> outside[0] = a).join(); + return (T) outside[0]; + } catch (InterruptedException e) { + } + return null; } } -- cgit