diff options
author | mdway <romangraef@gmail.com> | 2017-06-08 18:19:02 +0200 |
---|---|---|
committer | mdway <romangraef@gmail.com> | 2017-06-08 18:19:02 +0200 |
commit | 2ca153797939ba5429b02905fb77d85ed38be9af (patch) | |
tree | b5e2c9c7bf69d062dbb8ff44a0e04a497d13ace0 /src/java/de/romjaki/icndbwrapper/RestAction.java | |
parent | 4eb7aa5d07f4fe3720a74f6518d7f8b70544901f (diff) | |
download | icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.gz icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.bz2 icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.zip |
Initial Commit
Diffstat (limited to 'src/java/de/romjaki/icndbwrapper/RestAction.java')
-rw-r--r-- | src/java/de/romjaki/icndbwrapper/RestAction.java | 49 |
1 files changed, 39 insertions, 10 deletions
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<T> { private final String url; private final Map<String, String> parameters; - public RestAction(R emptySchematic, String relativeUrl, Map<String, String> parameters) { + public RestAction(GsonSchematic<T> emptySchematic, String relativeUrl, Map<String, String> parameters) { this.emptySchematic = emptySchematic; this.url = relativeUrl; this.parameters = parameters; } - public static String executeGet(String url, Map<String, String> parameters) { - return ""; + public static String executeRequest(String url, Map<String, String> 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<T> success) { - queue(success, null); + public Thread queue(Consumer<T> success) { + return queue(success, null); } - public void queue(Consumer<T> success, Consumer<T> fail) { + public Thread queue(Consumer<T> success, Consumer<T> fail) { Thread t = new Thread(() -> { Gson gson = new Gson(); - R schematic = gson.fromJson(executeGet(RestAction.this.url, RestAction.this.parameters), emptySchematic.getClass()); + GsonSchematic<T> 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<String, String> 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; } } |