From 16efe493246597119697c87577ddfadb7ce3c594 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Mon, 13 Aug 2018 18:28:15 +0200 Subject: [PATCH] Fixed bug in the creation of the JSON request --- .../java/ctbrec/recorder/RemoteRecorder.java | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/ctbrec/recorder/RemoteRecorder.java b/src/main/java/ctbrec/recorder/RemoteRecorder.java index 2b17bd6e..b0a9892a 100644 --- a/src/main/java/ctbrec/recorder/RemoteRecorder.java +++ b/src/main/java/ctbrec/recorder/RemoteRecorder.java @@ -37,7 +37,7 @@ public class RemoteRecorder implements Recorder { .build(); private JsonAdapter modelListResponseAdapter = moshi.adapter(ModelListResponse.class); private JsonAdapter recordingListResponseAdapter = moshi.adapter(RecordingListResponse.class); - private JsonAdapter modelAdapter = moshi.adapter(Model.class); + private JsonAdapter modelRequestAdapter = moshi.adapter(ModelRequest.class); private List models = Collections.emptyList(); @@ -65,15 +65,13 @@ public class RemoteRecorder implements Recorder { } private void sendRequest(String action, Model model) throws IOException, InvalidKeyException, NoSuchAlgorithmException, IllegalStateException { - String requestTemplate = "{\"action\": \"<>\", \"model\": <>}"; - requestTemplate = requestTemplate.replaceAll("<>", action); - requestTemplate = requestTemplate.replaceAll("<>", modelAdapter.toJson(model)); - LOG.debug("Sending request to recording server: {}", requestTemplate); - RequestBody body = RequestBody.create(JSON, requestTemplate); + String payload = modelRequestAdapter.toJson(new ModelRequest(action, model)); + LOG.debug("Sending request to recording server: {}", payload); + RequestBody body = RequestBody.create(JSON, payload); Request.Builder builder = new Request.Builder() .url("http://" + config.getSettings().httpServer + ":" + config.getSettings().httpPort + "/rec") .post(body); - addHmacIfNeeded(requestTemplate, builder); + addHmacIfNeeded(payload, builder); Request request = builder.build(); Response response = client.execute(request); String json = response.body().string(); @@ -239,4 +237,31 @@ public class RemoteRecorder implements Recorder { public File merge(Recording recording, boolean keepSegments) throws IOException { throw new RuntimeException("Merging not available for remote recorder"); } + + public static class ModelRequest { + private String action; + private Model model; + + public ModelRequest(String action, Model model) { + super(); + this.action = action; + this.model = model; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public Model getModel() { + return model; + } + + public void setModel(Model model) { + this.model = model; + } + } }