aboutsummaryrefslogtreecommitdiff
path: root/src/java/de/romjaki/icndbwrapper/RestAction.java
diff options
context:
space:
mode:
authormdway <romangraef@gmail.com>2017-06-08 18:19:02 +0200
committermdway <romangraef@gmail.com>2017-06-08 18:19:02 +0200
commit2ca153797939ba5429b02905fb77d85ed38be9af (patch)
treeb5e2c9c7bf69d062dbb8ff44a0e04a497d13ace0 /src/java/de/romjaki/icndbwrapper/RestAction.java
parent4eb7aa5d07f4fe3720a74f6518d7f8b70544901f (diff)
downloadicndbwrapper-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.java49
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;
}
}