Package com.nabalive.server.web.controller

Source Code of com.nabalive.server.web.controller.ApiController

package com.nabalive.server.web.controller;

import com.nabalive.application.core.ApplicationManager;
import com.nabalive.common.server.MessageService;
import com.nabalive.data.core.dao.NabaztagDAO;
import com.nabalive.data.core.model.Nabaztag;
import com.nabalive.framework.web.Request;
import com.nabalive.framework.web.Response;
import com.nabalive.framework.web.Route;
import com.nabalive.framework.web.SimpleRestHandler;
import com.nabalive.framework.web.exception.HttpException;
import com.nabalive.server.jabber.packet.AmbientPacket;
import com.nabalive.server.jabber.packet.SleepPacket;
import org.jboss.netty.handler.codec.http.DefaultHttpResponse;
import org.jboss.netty.handler.codec.http.HttpResponseStatus;
import org.jboss.netty.handler.codec.http.HttpVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.net.URLEncoder;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.google.common.base.Preconditions.checkNotNull;

/**
* Created by IntelliJ IDEA.
* User: Julien Cheype
* Date: 12/16/11
*/
@Component

public class ApiController {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private SimpleRestHandler restHandler;

    @Autowired
    private NabaztagDAO nabaztagDAO;

    @Autowired
    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();
                        String tts = request.getParam("tts");
                        String urlList = request.getParam("urlList");
                        String color = request.getParam("color");
                        String posleft = request.getParam("posleft");
                        String posright = request.getParam("posright");
                        String action = request.getParam("action");
                        String chor = request.getParam("chor");

                        String host = request.request.getHeader("Host");

                        Nabaztag nabaztag;
                        try{
                            nabaztag = checkNotNull(nabaztagDAO.findOne("macAddress", mac));
                        }catch(NullPointerException e){
                            throw new HttpException(HttpResponseStatus.UNAUTHORIZED, "mac address doesn't exists");
                        }
                       
                        if (!token.equalsIgnoreCase(nabaztag.getApikey())) {
                            throw new HttpException(HttpResponseStatus.UNAUTHORIZED, "token is not valid");
                        }

                        StringBuilder commands = new StringBuilder();
                        if(chor != null){
                            String url = "http://" + host + "/api/chor?data=" + chor;
                            commands.append("CH " + url + "\n");
                        }
                        if (tts != null) {
                            String encodedText = URLEncoder.encode(tts, "UTF-8");
                            String url = "http://" + host + "/tts/" + lang + "?text=" + encodedText;
                            commands.append("ST " + url + "\nMW\n");
                        }
                        if (urlList != null) {
                            for (String url : urlList.split("\\|")) {
                                commands.append("ST " + url + "\nMW\n");
                            }
                        }

                        if (posleft != null || posright != null) {
                            AmbientPacket packet = new AmbientPacket();
                            if (posleft != null) {
                                packet.add(AmbientPacket.MoveLeftEar, Integer.parseInt(posleft));
                            }
                            if (posright != null) {
                                packet.add(AmbientPacket.MoveRightEar, Integer.parseInt(posright));
                            }
                            messageService.sendMessage(mac, packet);
                        }
                        if (action != null) {
                            switch (Integer.parseInt(action)) {
                                case 13:
                                    messageService.sendMessage(mac, new SleepPacket(SleepPacket.Action.WakeUp));
                                    break;
                                case 14:
                                    messageService.sendMessage(mac, new SleepPacket(SleepPacket.Action.Sleep));
                                    break;
                            }
                        }

                        if(commands.length() > 0)
                            messageService.sendMessage(mac, commands.toString());

                        response.writeXML("ok");

                    }
                });
    }


}
TOP

Related Classes of com.nabalive.server.web.controller.ApiController

TOP
Copyright © 2018 www.massapi.com. 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.