From 1e5eff780c15aacb29afed6913d95a347f3ef80c Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sat, 27 Jul 2019 16:53:26 +0200 Subject: [PATCH] Add input field to add models by URL --- .../main/java/ctbrec/io/ModelJsonAdapter.java | 6 +- .../recorder/server/RecorderServlet.java | 23 ++++++- .../src/main/resources/html/static/index.html | 62 +++++++++++++++++-- 3 files changed, 82 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/ctbrec/io/ModelJsonAdapter.java b/common/src/main/java/ctbrec/io/ModelJsonAdapter.java index 54794087..3414712d 100644 --- a/common/src/main/java/ctbrec/io/ModelJsonAdapter.java +++ b/common/src/main/java/ctbrec/io/ModelJsonAdapter.java @@ -36,7 +36,7 @@ public class ModelJsonAdapter extends JsonAdapter { String name = null; String description = null; String url = null; - String type = null; + Object type = null; int streamUrlIndex = -1; boolean suspended = false; @@ -56,8 +56,8 @@ public class ModelJsonAdapter extends JsonAdapter { url = reader.nextString(); model.setUrl(url); } else if(key.equals("type")) { - type = reader.nextString(); - Class modelClass = Class.forName(Optional.ofNullable(type).orElse(ChaturbateModel.class.getName())); + type = reader.readJsonValue(); + Class modelClass = Class.forName(Optional.ofNullable(type).orElse(ChaturbateModel.class.getName()).toString()); model = (Model) modelClass.getDeclaredConstructor().newInstance(); } else if(key.equals("streamUrlIndex")) { streamUrlIndex = reader.nextInt(); diff --git a/server/src/main/java/ctbrec/recorder/server/RecorderServlet.java b/server/src/main/java/ctbrec/recorder/server/RecorderServlet.java index 3fc8a959..685ba692 100644 --- a/server/src/main/java/ctbrec/recorder/server/RecorderServlet.java +++ b/server/src/main/java/ctbrec/recorder/server/RecorderServlet.java @@ -13,6 +13,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,6 +71,12 @@ public class RecorderServlet extends AbstractCtbrecServlet { String response = "{\"status\": \"success\", \"msg\": \"Recording started\"}"; resp.getWriter().write(response); break; + case "startByUrl": + LOG.debug("Starting recording for model {}", request.model.getUrl()); + startByUrl(request); + response = "{\"status\": \"success\", \"msg\": \"Recording started\"}"; + resp.getWriter().write(response); + break; case "stop": new Thread(() -> { try { @@ -174,8 +181,10 @@ public class RecorderServlet extends AbstractCtbrecServlet { } } catch(Throwable t) { resp.setStatus(SC_INTERNAL_SERVER_ERROR); - String response = "{\"status\": \"error\", \"msg\": \"An unexpected error occured\"}"; - resp.getWriter().write(response); + JSONObject response = new JSONObject(); + response.put("status", "error"); + response.put("msg", t.getMessage()); + resp.getWriter().write(response.toString()); LOG.error("Unexpected error", t); if (json != null) { LOG.debug("Request: {}", json); @@ -183,6 +192,16 @@ public class RecorderServlet extends AbstractCtbrecServlet { } } + private void startByUrl(Request request) throws InvalidKeyException, NoSuchAlgorithmException, IllegalStateException, IOException { + String url = request.model.getUrl(); + for (Site site : sites) { + Model model = site.createModelFromUrl(url); + if (model != null) { + recorder.startRecording(model); + } + } + } + private static class Request { public String action; public Model model; diff --git a/server/src/main/resources/html/static/index.html b/server/src/main/resources/html/static/index.html index 7ad5647b..1d0f17f3 100644 --- a/server/src/main/resources/html/static/index.html +++ b/server/src/main/resources/html/static/index.html @@ -76,8 +76,17 @@
-
+
+
+
+
+ + +
+
+

@@ -107,11 +116,11 @@
-
+
- Space left + Space left: