This is an automated email from the ASF dual-hosted git repository.

ifropc pushed a commit to branch NLPCRAFT-91
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 2ef6c00fde38403b475c7f0d252990a188f18e1a
Author: Ifropc <[email protected]>
AuthorDate: Wed Dec 23 20:29:37 2020 -0800

    NLPCRAFT-91: Add sign in to mod
---
 .../org/apache/nplcraft/example/ExampleMod.java    | 53 +++++++++++++++++-----
 1 file changed, 41 insertions(+), 12 deletions(-)

diff --git 
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/ExampleMod.java
 
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/ExampleMod.java
index e92966a..12b5039 100644
--- 
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/ExampleMod.java
+++ 
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/ExampleMod.java
@@ -40,6 +40,7 @@ public class ExampleMod {
     private static final Logger LOGGER = LogManager.getLogger();
     private final Gson gson = new Gson();
     private MinecraftServer server;
+    private Optional<String> token = Optional.empty();
     private boolean inRecursion = false;
 
     public ExampleMod() {
@@ -71,24 +72,44 @@ public class ExampleMod {
     }
 
     private Optional<NCResponse> askProbe(String txt) {
-        try {
-            AskParams params = new AskParams();
-            params.txt = txt.startsWith("/") ? txt.substring(1) : txt;
+        AskParams params = new AskParams();
+        params.txt = txt.startsWith("/") ? txt.substring(1) : txt;
+
+        Optional<String> optional = getToken();
+        if (!optional.isPresent()) {
+            return Optional.empty();
+        }
+        params.acsTok = optional.get();
+
+        return post("ask/sync", gson.toJson(params), NCResponse.class);
+    }
+
+    private Optional<String> getToken() {
+        if (!token.isPresent()) {
+            // TODO
+            NCSignIn sign = new NCSignIn();
+            sign.email = "[email protected]";
+            sign.passwd = "admin";
+
+            token = post("signin", gson.toJson(sign), 
NCSignResponse.class).map(x -> x.acsTok);
+        }
 
-            String str = "http://0.0.0.0:8081/api/v1/ask/sync";;
+        return token;
+    }
+
+    private <T> Optional<T> post(String url, String postJson, Class<T> clazz) {
+        try {
+            String str = "http://0.0.0.0:8081/api/v1/"; + url;
 
-            URL url = new URL(str);
-            HttpURLConnection http = (HttpURLConnection) url.openConnection();
+            HttpURLConnection http = (HttpURLConnection) new 
URL(str).openConnection();
             http.setRequestMethod("POST"); // PUT is another valid option
             http.setRequestProperty("Content-Type", "application/json; 
charset=UTF-8");
             http.setConnectTimeout(1_000);
             http.setReadTimeout(1_000);
 
-            String postJsonData = gson.toJson(params);
-
             http.setDoOutput(true);
             DataOutputStream wr = new DataOutputStream(http.getOutputStream());
-            wr.writeBytes(postJsonData);
+            wr.writeBytes(postJson);
             wr.flush();
             wr.close();
 
@@ -96,7 +117,7 @@ public class ExampleMod {
 
             BufferedReader in = new BufferedReader(new 
InputStreamReader(http.getInputStream()));
 
-            NCResponse response = gson.fromJson(in, NCResponse.class);
+            T response = gson.fromJson(in, clazz);
 
             return Optional.of(response);
         } catch (Exception e) {
@@ -107,9 +128,8 @@ public class ExampleMod {
     }
 
     private class AskParams {
-        // TODO
-        private final String acsTok = "4oe8dBpnpoSAbLo9BbzaL";
         private final String mdlId = "nlpcraft.minecraft.ex";
+        private String acsTok;
         private String txt;
 
         @Override
@@ -151,4 +171,13 @@ public class ExampleMod {
                     '}';
         }
     }
+
+    private class NCSignIn {
+        String email;
+        String passwd;
+    }
+
+    private class NCSignResponse {
+        private String acsTok;
+    }
 }

Reply via email to