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 | |
parent | 4eb7aa5d07f4fe3720a74f6518d7f8b70544901f (diff) | |
download | icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.gz icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.tar.bz2 icndbwrapper-2ca153797939ba5429b02905fb77d85ed38be9af.zip |
Initial Commit
-rw-r--r-- | pom.xml | 4 | ||||
-rw-r--r-- | src/java/de/romjaki/icndbwrapper/GsonSchematic.java | 7 | ||||
-rw-r--r-- | src/java/de/romjaki/icndbwrapper/ICNDB.java | 13 | ||||
-rw-r--r-- | src/java/de/romjaki/icndbwrapper/Joke.java | 12 | ||||
-rw-r--r-- | src/java/de/romjaki/icndbwrapper/RestAction.java | 49 |
5 files changed, 68 insertions, 17 deletions
@@ -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; } } |