package code;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;

public class Luci implements HttpHandler {

	@Override
	public void handle(HttpExchange exchange) throws IOException {
		URI requestURI = exchange.getRequestURI();
		String path[] = requestURI.getPath().split("/");
		String lastfile = path[path.length - 1];

		String requestMethod = exchange.getRequestMethod();
		List<String> strlist = new ArrayList<>(); //serve List<String> a causa di .put("content-type", strlist);
		strlist.add("text/json");
		exchange.getResponseHeaders().put("content-type", strlist);//opzionale, per dire cosa c'e' nel body
		
		if(Helper.compareText(lastfile,"luci")) {//post, get [put, delete] {luogo e stato di tutte luci}
			if(Helper.compareText(requestMethod,"GET")) {
				String response = "[{\"luogo\":\"ingresso\",\"stato\":true,\"in\":\"in2\",\"out\":\"out2\"},{\"luogo\":\"cucina\",\"stato\":false,\"in\":\"in3\",\"out\":\"out3\"}]";
				Helper.sendResponse(response,exchange);
//				Helper.methodNotAllowed(exchange);
			} else if(Helper.compareText(requestMethod,"POST")) {
				String body = Helper.readBody(exchange.getRequestBody());
				//check body is json or xml
				if(!Helper.checkJSON(body) || !body.contains("\"luogo\"")) {
					Helper.badRequest(exchange);
					return;
				}
				String luogo = body.split("\"luogo\"",2)[1].split("\"",3)[1].trim();
				
				String response = "{\"luogo\":\""+luogo+"\"}";
				Helper.sendResponse(response,exchange);
			} else {
				Helper.methodNotAllowed(exchange);
			}
			return;
		}
		
		if(Helper.compareText(lastfile,"stato")) {//put {aggiorna lo stato di una luce}
			if(Helper.compareText(requestMethod,"PUT")) {
				String body = Helper.readBody(exchange.getRequestBody());
				//check body is json or xml
				if(!Helper.checkJSON(body) || !body.contains("\"luogo\"")) {
					Helper.badRequest(exchange);
					return;
				}
				String stato = body.split("\"stato\"",2)[1].split(":",3)[1].split(",",2)[0].split("}",2)[0].trim();
				try	{
					boolean st = Boolean.parseBoolean(stato);
					
					String response = "{\"luce\":\"ok\",\"stato\":"+st+"}";
					Helper.sendResponse(response,exchange);
				} catch (Exception e) {
					System.out.println("Conversion error.\t"+stato);
					e.printStackTrace();
					Helper.badRequest(exchange);
				}
			} else {
				Helper.methodNotAllowed(exchange);
			}
			return;
		}
		
		Helper.pageNotFound(exchange);
	}
	
	
	
	

}