Newer
Older
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 Antifurto implements HttpHandler {
private boolean statoAntifurto = true;
private boolean statoAllarme = false;
@Override
public void handle(HttpExchange exchange) throws IOException {
URI requestURI = exchange.getRequestURI();
String path[] = requestURI.toString().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,"antifurto")) {//get {stato, allarme, attenzione, soglia, sensori}
String response = "{\"stato\":true,\"soglia\":43,\"attenzione\":21,\"allarme\":false,\"sensori\":[{\"in0\":8},{\"in2\":3}]}";
statoAntifurto = true;
statoAllarme = false;
Helper.sendResponse(response,exchange);
} else {
Helper.methodNotAllowed(exchange);
}
return;
}
if(Helper.compareText(lastfile,"stato")) {//get, put {se l'antifurto e' attivo + aggiornamento}
Helper.sendResponse(response,exchange);
} else if(Helper.compareText(requestMethod,"PUT")) {
String body = Helper.readBody(exchange.getRequestBody());
if(!Helper.checkJSON(body) || !body.contains("\"stato\"")) {
Helper.badRequest(exchange);
return;
}
String stato = body.split("\"stato\"",2)[1].split(":",2)[1].split(",",2)[0].split("}",2)[0].trim();
try {
statoAntifurto = Boolean.parseBoolean(stato);
if(exStato == statoAntifurto)
System.out.println("\tRicevuto stato antifurto gia' assegnato");
if(statoAllarme && !statoAntifurto) {
Helper.badRequest(exchange);
return;
}
String response = "{\"antifurto\":\"ok\",\"stato\":"+statoAntifurto+"}";
Helper.sendResponse(response,exchange);
} catch (Exception e) {
System.out.println("Conversion error.\t"+stato);
e.printStackTrace();
Helper.badRequest(exchange);
}
} else {
Helper.methodNotAllowed(exchange);
}
return;
}
if(Helper.compareText(lastfile,"allarme")) {//get, put {se l'allarme sta suonando + aggiornamento}
String response = "{\"dati\":\"ecco l'allarme\"}";
Helper.sendResponse(response,exchange);
} else if(Helper.compareText(requestMethod,"PUT")) {
String body = Helper.readBody(exchange.getRequestBody());
if(!Helper.checkJSON(body) || !body.contains("\"stato\"")) {
Helper.badRequest(exchange);
return;
}
String stato = body.split("\"stato\"",2)[1].split(":",2)[1].split(",",2)[0].split("}",2)[0].trim();
try {
boolean exStato = statoAllarme;
statoAllarme = Boolean.parseBoolean(stato);
if(exStato == statoAllarme)
System.out.println("\tRicevuto stato allarme gia' assegnato");
if(statoAllarme && !statoAntifurto) {
Helper.badRequest(exchange);
return;
}
String response = "{\"allarme\":\"ok\",\"stato\":"+statoAllarme+"}";
Helper.sendResponse(response,exchange);
} catch (Exception e) {
System.out.println("Conversion error.\t"+stato);
e.printStackTrace();
Helper.badRequest(exchange);
}
} else {
Helper.methodNotAllowed(exchange);
}
return;
}
if(Helper.compareText(lastfile,"attenzione")) {//put {valore della progress bar}
String body = Helper.readBody(exchange.getRequestBody());
if(!Helper.checkJSON(body) || !body.contains("\"attenzione\"")) {
Helper.badRequest(exchange);
return;
}
String valore = body.split("\"attenzione\"",2)[1].split(":",2)[1].split(",",2)[0].split("}",2)[0].trim();
try {
int val = Integer.parseInt(valore);
String response = "{\"attenzione\":"+val+"}";
Helper.sendResponse(response,exchange);
} catch (Exception e) {
System.out.println("Conversion error.\t"+valore);
e.printStackTrace();
Helper.badRequest(exchange);
}
} else {
Helper.methodNotAllowed(exchange);
}
return;
}
if(Helper.compareText(lastfile,"soglia")) {//put {valore scelto dall'utente per la soglia}
System.out.println(Helper.readBody(exchange.getRequestBody()));
String response = "{\"dati\":\"soglia aggiornata\"}";