Package com.nabalive.framework.web

Examples of com.nabalive.framework.web.Route


* Unit test for simple App.
*/
public class AppTest {
    @Test
    public void testRouteMatcher() {
        final Route route = new Route("/api/:name/:id");
        final Map<String, String> rez = route.parse("/api/julien/123", null);
        System.out.println(rez);
        assertEquals("should contain julien", rez.get("name"), "julien");
        assertEquals("should contain 123", rez.get("id"), "123");
    }
View Full Code Here


        assertEquals("should contain 123", rez.get("id"), "123");
    }

    @Test
    public void testRouteMatcherFalse() {
        final Route route = new Route("/api/:name/:id");
        final Map<String, String> rez = route.parse("/api/julien/toto/123", null);
        assertNull("should contain julien", rez);
    }
View Full Code Here

    private UserDAO userDAO;

    @PostConstruct
    void init() {
        restHandler
                .post(new Route("/user/login") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String email = checkNotNull(request.getParam("email")).toLowerCase();
                        String password = checkNotNull(request.getParam("password"));
                        User user = checkNotNull(userDAO.findOne("email", email));
                        user.checkPassword(password);

                        Token token = new Token();
                        token.setUserId(user.getId());

//                        Map result = new HashMap();
//                        result.put("token", TokenUtil.encode(token));

                        response.writeJSON(TokenUtil.encode(token));
                    }
                })
                .post(new Route("/user/register") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String firstname = checkNotNull(request.getParam("firstname"));
                        String lastname = checkNotNull(request.getParam("lastname"));
                        String email = checkNotNull(request.getParam("email")).toLowerCase();
                        String password = checkNotNull(request.getParam("password"));

                        User user = new User();
                        user.setFirstname(firstname);
                        user.setLastname(lastname);
                        user.setEmail(email);
                        user.setPassword(password);

                        userDAO.save(user);
                        logger.info("new user: {}", user.getId());

                        Token token = new Token();
                        token.setUserId(user.getId());
                        response.writeJSON(TokenUtil.encode(token));
                    }
                })
                .post(new Route("/user/reset") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String email = checkNotNull(request.getParam("email")).toLowerCase();
                        String uuid = checkNotNull(request.getParam("uuid"));
                        String password = checkNotNull(request.getParam("password"));

                        User user = checkNotNull(userDAO.findOne("email", email));
                        if (uuid.length() > 0 && uuid.equalsIgnoreCase(user.getResetId())) {
                            Query<User> query = userDAO.createQuery().filter("_id", user.getId());
                            user.setPassword(password);
                            userDAO.update(query, userDAO.createUpdateOperations().set("password", user.getPassword()).unset("resetId"));
                            response.writeJSON("ok");
                        }
                        throw new HttpException(HttpResponseStatus.INTERNAL_SERVER_ERROR, "bab reset ID");
                    }
                })
                .get(new Route("/user/reset/mail") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String email = checkNotNull(request.getParam("email")).toLowerCase();
                        User user = checkNotNull(userDAO.findOne("email", email));

                        Query<User> query = userDAO.createQuery().filter("_id", user.getId());
                       
                        String uuid = UUID.randomUUID().toString();
                        userDAO.update(query, userDAO.createUpdateOperations().set("resetId", uuid ));

                        SendMail.postMail(new String[]{email}, "Reset de mot de passe Nabalive", "http://www.nabalive.com/#reset/"+uuid+"/"+user.getEmail(), "no_reply@nabalive.com");

                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/user/info") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String tokenString = checkNotNull(request.getParamOrHeader("token"));
                        Token token = TokenUtil.decode(tokenString, Token.class);

                        User user = checkNotNull(userDAO.get(token.getUserId()));
                        response.writeJSON(user);
                    }
                })
                .get(new Route("/user/test") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        response.write("ok");
                    }
                });
View Full Code Here

    //private final Pattern domainPattern = Pattern.compile("([^:]+)");

    @PostConstruct
    void init() {
        restHandler
                .get(new Route(".*/locate.jsp") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        StringBuilder sb = new StringBuilder();
                        sb.append("ping " + HOST + "\n");
                        sb.append("broad " + HOST + "\n");
                        if (XMPP_PORT != null)
                            sb.append("xmpp_domain " + HOST + ":" + XMPP_PORT + "\n");
                        else
                            sb.append("xmpp_domain " + HOST + "\n");
                        response.write(sb.toString());

                    }
                })
                .get(new Route(".*/bc.jsp") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        InputStream resourceAsStream = getClass().getResourceAsStream("/bc.jsp");

                        response.write(ByteStreams.toByteArray(resourceAsStream));
View Full Code Here

    MessageService messageService;

    @PostConstruct
    void init() {
        restHandler
                .get(new Route("(?:/vl)?/:lang/api(?:_stream)?.jsp") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String mac = checkNotNull(request.getParam("sn")).toLowerCase();
                        String token = checkNotNull(request.getParam("token")).toLowerCase();
                        String lang = checkNotNull(map.get("lang")).toLowerCase();
View Full Code Here

    ScheduledExecutorService ses = Executors.newScheduledThreadPool(8);

    @PostConstruct
    void init() {
        restHandler
                .post(new Route("/vl/record.jsp") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String mac = checkNotNull(request.getParam("sn")).toLowerCase();
                        if (!connectionManager.containsKey(mac))
                            throw new HttpException(HttpResponseStatus.NOT_FOUND, "sn is not connected");

                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("macAddress", mac));

                        ChannelBuffer content = request.request.getContent();
                        logger.debug("record orig size: {}", content.readableBytes());
                        ChannelBufferInputStream inputStream = new ChannelBufferInputStream(content);

                        TmpData sound = new TmpData();
                        sound.setData(ByteStreams.toByteArray(inputStream));
                        tmpDataDAO.save(sound, WriteConcern.SAFE);


                        String host = request.request.getHeader("Host");
                        String url = "http://" + host + "/record/" + sound.getId().toString();
                        logger.debug("sound url: {}", url);

                        final String command = "ST " + url + "\nMW\n";

                        Query<Nabaztag> query = nabaztagDAO.createQuery();
                        query.filter("subscribe.objectId", nabaztag.getId().toString());
                        List<Nabaztag> nabaztags = nabaztagDAO.find(query).asList();


                        logger.debug("sending to {} subscribers", nabaztags.size());
                        for (Nabaztag nab : nabaztags) {
                            if (connectionManager.containsKey(nab.getMacAddress())) {
                                final Nabaztag nabTmp = nab;
                                Runnable runnable = new Runnable() {
                                    @Override
                                    public void run() {
                                        logger.debug("sending to {}", nabTmp.getMacAddress());
                                        logger.debug("command {}", command);
                                        messageService.sendMessage(nabTmp.getMacAddress(), command);
                                    }
                                };
                                ses.schedule(runnable, 500, TimeUnit.MILLISECONDS);
                            }
                        }
                        response.write("ok");
                    }
                })
                .get(new Route("/record/:recordId") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        ObjectId recordId = new ObjectId(checkNotNull(map.get("recordId")));

                        TmpData sound = checkNotNull(tmpDataDAO.get(recordId));
View Full Code Here

    private final String frenchTtsUrl = checkNotNull(System.getProperty("frenchTtsUrl"), "You must set frenchTtsUrl property");

    @PostConstruct
    void init() {
        restHandler
                .get(new Route("/tts/:apikey/:voice") {
                    @Override
                    public void handle(Request request, final Response response, Map<String, String> map) throws Exception {
                        String text = StringEscapeUtils.escapeXml(checkNotNull(request.getParam("text")));
                        String voice = checkNotNull(map.get("voice"));


                        if (!text.startsWith("<s>")) {
                            text = "<s>" + text + "</s>";
                        }

                        final String key = text + "|" + voice;
                        byte[] bytes = ttsCache.asMap().get(key);
                        if(bytes != null){
                            response.write(ChannelBuffers.copiedBuffer(bytes));
                            return;
                        }

                        asyncHttpClient.preparePost(frenchTtsUrl).setBody(text).execute(new AsyncCompletionHandler<com.ning.http.client.Response>() {

                            @Override
                            public com.ning.http.client.Response onCompleted(com.ning.http.client.Response asyncResponse) throws Exception {
                                InputStream inputStream = asyncResponse.getResponseBodyAsStream();
                                byte[] bytes = ByteStreams.toByteArray(inputStream);
                                ttsCache.asMap().put(key, bytes);
                                response.write(bytes);
                                return asyncResponse;
                            }

                            @Override
                            public void onThrowable(Throwable t) {
                                logger.error("TTS error", t);
                                HttpResponse httpResponse = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR);
                                response.write(httpResponse);
                            }
                        });

                    }
                })
                .get(new Route("/tts/:voice") {
                    @Override
                    public void handle(Request request, final Response response, Map<String, String> map) throws Exception {
                        String text = StringEscapeUtils.escapeXml(checkNotNull(request.getParam("text")));
                        String voice = checkNotNull(map.get("voice"));
View Full Code Here

    private SimpleRestHandler restHandler;

    @PostConstruct
    void init() {
        restHandler
                .get(new Route("/api/chor") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String chor = checkNotNull(request.getParam("data"));
                        int loop = Integer.parseInt(firstNonNull(request.getParam("loop"), "1"));
                        ChorBuilder chorBuilder = new ChorBuilder(chor, loop);
                        response.write(chorBuilder.build());
                    }
                })
                .get(new Route("/api/chor/ears") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        ChorBuilder chorBuilder = new ChorBuilder();
                        String left = request.getParam("left");
                        String right = request.getParam("right");

                        if (left != null) {
                            int val = Integer.parseInt(left);
                            chorBuilder.setEar((byte) 0, (byte) (val > 0 ? 0 : 1), (byte) Math.abs(val));
                        }
                        if (right != null) {
                            int val = Integer.parseInt(right);
                            chorBuilder.setEar((byte) 1, (byte) (val > 0 ? 0 : 1), (byte) Math.abs(val));
                        }
                        response.write(chorBuilder.build());
                    }
                })
                .get(new Route("/api/chor/led/:led/:color") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        ChorBuilder chorBuilder = new ChorBuilder();
                        String color = checkNotNull(map.get("color"));
                        int led = Integer.parseInt(checkNotNull(map.get("led")));
                        chorBuilder.setLed((byte) led, color);
                        response.write(chorBuilder.build());
                    }
                })
                .get(new Route("/api/chor/rand/:time") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        int time = Integer.parseInt(map.get("time"));

                        Random rand = new Random();
View Full Code Here

    private ApplicationManager applicationManager;

    @PostConstruct
    void init() {
        restHandler
                .get(new Route("/applications") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        List<ApplicationStore> applicationStores = applicationStoreDAO.find().asList();
                        Iterables.filter(applicationStores, new Predicate<ApplicationStore>() {
                            @Override
                            public boolean apply(@Nullable ApplicationStore applicationStore) {
                                return applicationManager.getApplication(applicationStore.getApikey()) != null;
                            }
                        });
                        response.writeJSON(applicationStores);
                    }
                })
                .get(new Route("/applications/:apikey/logo.png") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        ChannelBuffer buffer;
                        String apikey = checkNotNull(map.get("apikey"));
                        ApplicationLogo applicationLogo = applicationLogoDAO.get(apikey);
View Full Code Here

    MessageService messageService;

    @PostConstruct
    void init() {
        restHandler
                .get(new Route("/nabaztags") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);

                        List<Nabaztag> nabaztagList = nabaztagDAO.find(nabaztagDAO.createQuery().filter("owner", token.getUserId())).asList();
                        for (Nabaztag nabaztag : nabaztagList) {
                            if (connectionManager.containsKey(nabaztag.getMacAddress())) {
                                nabaztag.setConnected(true);
                            }
                        }
                        response.writeJSON(nabaztagList);
                    }
                })
                .post(new Route("/nabaztags", ".*json.*") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);
                        logger.debug("received json: {}", request.content);
                        Map<String, String> nabMap = mapper.readValue(request.content, Map.class);
                        String mac = CharMatcher.JAVA_LETTER_OR_DIGIT.retainFrom(checkNotNull(nabMap.get("mac")).toLowerCase());

                        if (!connectionManager.containsKey(mac)) {
                            throw new HttpException(HttpResponseStatus.INTERNAL_SERVER_ERROR, "Nabaztag not Connected");
                        }

                        Nabaztag nabaztag = new Nabaztag();
                        nabaztag.setMacAddress(mac);
                        nabaztag.setName(nabMap.get("name"));
                        nabaztag.setApikey(UUID.randomUUID().toString());
                        nabaztag.setOwner(token.getUserId());

                        try {
                            nabaztagDAO.save(nabaztag);
                        } catch (MongoException.DuplicateKey e) {
                            ImmutableMap<String, String> error = (new ImmutableMap.Builder<String, String>()).put("error", "Adresse mac déjà enregistrée").build();
                            response.writeJSON(error);
                            return;
                        }

                        messageService.sendMessage(mac, "ST " + OPERATIONNEL_URL + "\nMW\n");
                        response.writeJSON(nabaztag);
                    }
                })
                .post(new Route("/nabaztags") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);
                        String mac = CharMatcher.JAVA_LETTER_OR_DIGIT.retainFrom(checkNotNull(request.getParam("mac")).toLowerCase());
                        String name = request.getParam("name");

                        if (!connectionManager.containsKey(mac)) {
                            throw new HttpException(HttpResponseStatus.INTERNAL_SERVER_ERROR, "Nabaztag not Connected");
                        }

                        Nabaztag nabaztag = new Nabaztag();
                        nabaztag.setMacAddress(mac);
                        nabaztag.setName(name);
                        nabaztag.setApikey(UUID.randomUUID().toString());
                        nabaztag.setOwner(token.getUserId());

                        try {
                            nabaztagDAO.save(nabaztag);
                        } catch (MongoException.DuplicateKey e) {
                            ImmutableMap<String, String> error = (new ImmutableMap.Builder<String, String>()).put("error", "Adresse mac déjà enregistrée").build();
                            response.writeJSON(error);
                            return;
                        }

                        messageService.sendMessage(mac, "ST " + OPERATIONNEL_URL + "\nMW\n");
                        response.writeJSON(nabaztag);
                    }
                })
                .post(new Route("/nabaztags/:mac/addconfig") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);
                        List<String> tags = request.parameters.get("rfid");
                        String appApikey = checkNotNull(request.getParam("apikey"));
                        String name = checkNotNull(request.getParam("name"));
                        String appName = checkNotNull(request.getParam("appName"));
                        String uuid = request.getParam("uuid");
                        String mac = checkNotNull(map.get("mac"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("macAddress", mac));

                        if (!nabaztag.getOwner().equals(token.getUserId()))
                            throw new IllegalArgumentException();

                        Iterator<ApplicationConfig> iterator = nabaztag.getApplicationConfigList().iterator();
                        while (iterator.hasNext()) {
                            ApplicationConfig next = iterator.next();
                            if (tags != null)
                                next.getTags().removeAll(tags);
                            if (next.getUuid().equals(uuid))
                                iterator.remove();
                        }
                        ApplicationConfig config = new ApplicationConfig();
                        config.setApplicationStoreApikey(appApikey);
                        config.getTags().clear();
                        if (tags != null)
                            config.getTags().addAll(tags);

                        for (Map.Entry<String, List<String>> entry : request.parameters.entrySet()) {
                            if (entry.getKey().startsWith("parameter.")) {
                                String key = entry.getKey().substring("parameter.".length());
                                config.getParameters().put(key, entry.getValue());
                            }
                        }

                        config.setName(name);
                        config.setAppName(appName);

                        nabaztag.addApplicationConfig(config);

                        nabaztagDAO.save(nabaztag);

                        tts(nabaztag.getMacAddress(), request.request.getHeader("Host"), "fr", Format.get("app.install.success", appName));

                        response.writeJSON(nabaztag);
                    }
                })
                .delete(new Route("/config/:uuid") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);
                        String uuid = checkNotNull(map.get("uuid"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("applicationConfigList.uuid", uuid));
                        if (!nabaztag.getOwner().equals(token.getUserId()))
                            throw new IllegalArgumentException();

                        Iterator<ApplicationConfig> iterator = nabaztag.getApplicationConfigList().iterator();
                        while (iterator.hasNext()) {
                            ApplicationConfig next = iterator.next();
                            if (next.getUuid().equals(uuid))
                                iterator.remove();
                        }
                        nabaztagDAO.save(nabaztag);
                        response.writeJSON(nabaztag);
                    }
                })
                .get(new Route("/nabaztags/:mac") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);

                        String mac = checkNotNull(map.get("mac"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("macAddress", mac));
                        if (token.getUserId().equals(nabaztag.getOwner())) {
                            response.writeJSON(nabaztag);
                        } else {
                            response.write(new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.UNAUTHORIZED));
                        }
                    }
                })
                .delete(new Route("/nabaztags/:mac") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        Token token = TokenUtil.decode(checkNotNull(request.getParamOrHeader("token")), Token.class);

                        String mac = checkNotNull(map.get("mac"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("macAddress", mac));
                        if (token.getUserId().equals(nabaztag.getOwner())) {
                            nabaztagDAO.delete(nabaztag);
                            response.writeJSON("ok");
                        } else {
                            response.write(new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.UNAUTHORIZED));
                        }
                    }
                })
                .get(new Route("/nabaztags/:apikey/play") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        List<String> urlList = checkNotNull(request.qs.getParameters().get("url"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));

                        List<String> urlListSanitized = Lists.transform(urlList, new Function<String, String>() {
                            @Override
                            public String apply(@Nullable String url) {
                                return CharMatcher.isNot('\n').retainFrom(url);
                            }
                        });
                        StringBuilder commands = new StringBuilder();
                        for (String url : urlListSanitized) {
                            commands.append("ST " + url + "\nMW\n");
                        }
                        logger.debug("COMMAND: {}", commands);
                        messageService.sendMessage(nabaztag.getMacAddress(), commands.toString());
                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/tts/:voice") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String text = checkNotNull(request.getParam("text"));
                        String voice = checkNotNull(map.get("voice"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));

                        String host = request.request.getHeader("Host");
                        tts(nabaztag.getMacAddress(), host, voice, text);

                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/exec") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String command = checkNotNull(request.getParam("command"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));

                        logger.debug("COMMAND: {}", command);
                        messageService.sendMessage(nabaztag.getMacAddress(), command);
                        response.writeJSON("ok");
                    }
                })
                .post(new Route("/nabaztags/:apikey/tags", ".*json.*") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        List<Tag> tagList = mapper.readValue(request.content, new TypeReference<List<Tag>>() {
                        });

                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));
                        nabaztagDAO.update(
                                nabaztagDAO.createQuery().filter("apikey", apikey),
                                nabaztagDAO.createUpdateOperations().set("tags", tagList));
                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/sleep") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));

                        messageService.sendMessage(nabaztag.getMacAddress(), new SleepPacket(SleepPacket.Action.Sleep));
                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/wakeup") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));

                        messageService.sendMessage(nabaztag.getMacAddress(), new SleepPacket(SleepPacket.Action.WakeUp));
                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/tz") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String tz = checkNotNull(request.getParam("tz"));

                        Query<Nabaztag> query = nabaztagDAO.createQuery().filter("apikey", apikey);
                        UpdateOperations<Nabaztag> updateOperations = nabaztagDAO.createUpdateOperations();
                        updateOperations.set("timeZone", tz);

                        nabaztagDAO.update(query, updateOperations);

                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/schedule") {

                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        List<String> sleep = request.parameters.get("sleep[]");
                        List<String> wakeup = request.parameters.get("wakeup[]");

                        final Nabaztag nabaztag = nabaztagDAO.findOne("apikey", apikey);

                        Query<Nabaztag> query = nabaztagDAO.createQuery().filter("apikey", apikey);

                        UpdateOperations<Nabaztag> updateOperations = nabaztagDAO.createUpdateOperations();
                        if (!sleep.isEmpty()) {
                            nabaztag.setSleepLocal(sleep);
                            Set<String> nabaztagSleep = nabaztag.getSleep();
                            logger.debug("sleep {}", nabaztagSleep);
                            updateOperations.set("sleep", nabaztagSleep);
                        }
                        if (!wakeup.isEmpty()) {
                            nabaztag.setWakeupLocal(wakeup);
                            Set<String> nabaztagWakeup = nabaztag.getWakeup();
                            logger.debug("wakeup {}", nabaztagWakeup);
                            updateOperations.set("wakeup", nabaztagWakeup);
                        }

                        nabaztagDAO.update(query, updateOperations);

                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nabaztags/:apikey/subscribe") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String email = checkNotNull(request.getParam("email"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));
                        Set<Subscription> subscriptionSet = nabaztag.getSubscribe();

                        User user = checkNotNull(userDAO.findOne("email", email));
                        Query<Nabaztag> query = nabaztagDAO.createQuery().filter("owner", user.getId());
                        for (Nabaztag nab : nabaztagDAO.find(query).asList()) {
                            Subscription subscription = new Subscription();
                            subscription.setName(nab.getName());
                            subscription.setOwnerFisrtName(user.getFirstname());
                            subscription.setOwnerLastName(user.getLastname());
                            subscription.setObjectId(nab.getId().toString());

                            subscriptionSet.add(subscription);
                        }

                        UpdateOperations<Nabaztag> updateOperations = nabaztagDAO.createUpdateOperations().set("subscribe", subscriptionSet);
                        nabaztagDAO.update(nabaztagDAO.createQuery().filter("_id", nabaztag.getId()), updateOperations);
                        response.writeJSON("ok");
                    }
                })
                .delete(new Route("/nabaztags/:apikey/subscribe/:objectId") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String objectId = checkNotNull(map.get("objectId"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));
                        Set<Subscription> subscriptionSet = nabaztag.getSubscribe();

                        Iterator<Subscription> iterator = subscriptionSet.iterator();
                        while (iterator.hasNext()) {
                            Subscription next = iterator.next();
                            if (next.getObjectId().equals(objectId))
                                iterator.remove();
                        }


                        UpdateOperations<Nabaztag> updateOperations = nabaztagDAO.createUpdateOperations().set("subscribe", subscriptionSet);
                        nabaztagDAO.update(nabaztagDAO.createQuery().filter("_id", nabaztag.getId()), updateOperations);
                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nab2nabs/:apikey/send") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String url = checkNotNull(request.getParam("url"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));
                        Set<Subscription> subscriptionSet = nabaztag.getSubscribe();

                        List<ObjectId> objectList = new ArrayList<ObjectId>();
                        for (Subscription subscription : subscriptionSet) {
                            objectList.add(new ObjectId(subscription.getObjectId()));
                        }
                        List<Nabaztag> nabaztagList = nabaztagDAO.find(nabaztagDAO.createQuery().field("_id").in(objectList)).asList();

                        String command = "ST " + url + "\nMW\n";
                        for (Nabaztag nab : nabaztagList) {
                            if (connectionManager.containsKey(nab.getMacAddress()))
                                messageService.sendMessage(nab.getMacAddress(), command);
                        }

                        response.writeJSON("ok");
                    }
                })
                .get(new Route("/nab2nabs/:apikey/tts") {
                    @Override
                    public void handle(Request request, Response response, Map<String, String> map) throws Exception {
                        String apikey = checkNotNull(map.get("apikey"));
                        String text = checkNotNull(request.getParam("text"));
                        Nabaztag nabaztag = checkNotNull(nabaztagDAO.findOne("apikey", apikey));
View Full Code Here

TOP

Related Classes of com.nabalive.framework.web.Route

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.