aboutsummaryrefslogtreecommitdiff
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
parent4eb7aa5d07f4fe3720a74f6518d7f8b70544901f (diff)
downloadicndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.gz
icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.bz2
icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.zip
Initial Commit
-rw-r--r--pom.xml4
-rw-r--r--src/java/de/romjaki/icndbwrapper/GsonSchematic.java7
-rw-r--r--src/java/de/romjaki/icndbwrapper/ICNDB.java13
-rw-r--r--src/java/de/romjaki/icndbwrapper/Joke.java12
-rw-r--r--src/java/de/romjaki/icndbwrapper/RestAction.java49
5 files changed, 68 insertions, 17 deletions
diff --git a/pom.xml b/pom.xml
index d67343d..b17b309 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,8 +10,8 @@
<packaging>jar</packaging>
<properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.compiler.source>1.8</maven.compiler.source>
</properties>
diff --git a/src/java/de/romjaki/icndbwrapper/GsonSchematic.java b/src/java/de/romjaki/icndbwrapper/GsonSchematic.java
index dcfb579..3c8f2e6 100644
--- a/src/java/de/romjaki/icndbwrapper/GsonSchematic.java
+++ b/src/java/de/romjaki/icndbwrapper/GsonSchematic.java
@@ -5,4 +5,11 @@ package de.romjaki.icndbwrapper;
*/
public abstract class GsonSchematic<T> {
+ public String type = "unknown_fail";
+
+ public boolean succeeded() {
+ return false;
+ }
+
+ public abstract T result();
}
diff --git a/src/java/de/romjaki/icndbwrapper/ICNDB.java b/src/java/de/romjaki/icndbwrapper/ICNDB.java
index 7f9ca51..33a669c 100644
--- a/src/java/de/romjaki/icndbwrapper/ICNDB.java
+++ b/src/java/de/romjaki/icndbwrapper/ICNDB.java
@@ -1,9 +1,12 @@
package de.romjaki.icndbwrapper;
public class ICNDB {
- public ICNDB() {
-
- }
-
-
+ public ICNDB() {
+
+ }
+
+ public RestAction<Joke> getRandomJoke() {
+
+ }
+
}
diff --git a/src/java/de/romjaki/icndbwrapper/Joke.java b/src/java/de/romjaki/icndbwrapper/Joke.java
new file mode 100644
index 0000000..8af80f3
--- /dev/null
+++ b/src/java/de/romjaki/icndbwrapper/Joke.java
@@ -0,0 +1,12 @@
+package de.romjaki.icndbwrapper;
+
+/**
+ * Created by RGR on 08.06.2017.
+ */
+public class Joke {
+ /**
+ * Note: This is no ID; Content of the string may vary 'cause of the {@code ?firstName=} parameter
+ */
+ private int id;
+ private String text;
+}
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;
}
}