diff options
Diffstat (limited to 'src/org/traccar/web')
-rw-r--r-- | src/org/traccar/web/CommandServlet.java | 51 | ||||
-rw-r--r-- | src/org/traccar/web/CommandsServlet.java | 58 | ||||
-rw-r--r-- | src/org/traccar/web/WebServer.java | 2 |
3 files changed, 52 insertions, 59 deletions
diff --git a/src/org/traccar/web/CommandServlet.java b/src/org/traccar/web/CommandServlet.java new file mode 100644 index 000000000..049a0534d --- /dev/null +++ b/src/org/traccar/web/CommandServlet.java @@ -0,0 +1,51 @@ +package org.traccar.web; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.traccar.Context; +import org.traccar.model.Command; +import org.traccar.database.ActiveDevice; + +public class CommandServlet extends BaseServlet { + + @Override + protected boolean handle(String command, HttpServletRequest req, HttpServletResponse resp) throws Exception { + + switch (command) { + case "/send": + send(req, resp); + return true; + case "/raw": + raw(req, resp); + return true; + default: + return false; + } + } + + public ActiveDevice getActiveDevice(long deviceId) { + ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(deviceId); + if (activeDevice == null) { + throw new RuntimeException("The device is not registered on the server"); + } + return activeDevice; + } + + private void send(HttpServletRequest req, HttpServletResponse resp) throws Exception { + + Command command = JsonConverter.objectFromJson(req.getReader(), new Command()); + getActiveDevice(command.getDeviceId()).write(command); + sendResponse(resp.getWriter(), true); + } + + private void raw(HttpServletRequest req, HttpServletResponse resp) throws Exception { + + JsonObject json = Json.createReader(req.getReader()).readObject(); + long deviceId = json.getJsonNumber("deviceId").longValue(); + String command = json.getString("command"); + getActiveDevice(deviceId).write(command); + sendResponse(resp.getWriter(), true); + } +} diff --git a/src/org/traccar/web/CommandsServlet.java b/src/org/traccar/web/CommandsServlet.java deleted file mode 100644 index b12c0fa53..000000000 --- a/src/org/traccar/web/CommandsServlet.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.traccar.web; - -import javax.json.Json; -import javax.json.JsonObject; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.traccar.Context; -import org.traccar.command.CommandType; -import org.traccar.command.GpsCommand; -import org.traccar.database.ActiveDevice; - -public class CommandsServlet extends BaseServlet { - - @Override - protected boolean handle(String command, HttpServletRequest req, HttpServletResponse resp) throws Exception { - - switch (command) { - case "/send": - send(req, resp); - return true; - case "/raw": - sendRawCommand(req, resp); - return true; - default: - return false; - } - } - - private void send(HttpServletRequest req, HttpServletResponse resp) throws Exception { - GpsCommand command = JsonConverter.<GpsCommand>enumObjectFromJson(req.getReader(), new EnumFactory(CommandType.class, "type")); - - String uniqueId = command.getUniqueId(); - - ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId); - if(activeDevice == null) { - throw new RuntimeException("The device has not yet registered to the server"); - } - - activeDevice.sendCommand(command); - - sendResponse(resp.getWriter(), JsonConverter.objectToJson(new Object())); - } - - private void sendRawCommand(HttpServletRequest req, HttpServletResponse resp) throws Exception { - JsonObject json = Json.createReader(req.getReader()).readObject(); - String uniqueId = json.getString("uniqueId"); - - ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId); - if(activeDevice == null) { - throw new RuntimeException("The device has not yet registered to the server"); - } - - String command = json.getString("command"); - activeDevice.write(command); - - sendResponse(resp.getWriter(), JsonConverter.objectToJson(new Object())); - } -} diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 698796467..38345ffe7 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -74,7 +74,7 @@ public class WebServer { servletHandler.addServlet(new ServletHolder(new UserServlet()), "/user/*"); servletHandler.addServlet(new ServletHolder(new DeviceServlet()), "/device/*"); servletHandler.addServlet(new ServletHolder(new PositionServlet()), "/position/*"); - servletHandler.addServlet(new ServletHolder(new CommandsServlet()), "/commands/*"); + servletHandler.addServlet(new ServletHolder(new CommandServlet()), "/command/*"); servletHandler.addServlet(new ServletHolder(new MainServlet()), "/*"); /*ResourceHandler mobileResourceHandler = new ResourceHandler(); |