package code; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import com.sun.net.httpserver.HttpServer; //import StuffHandler.CustomObject; import db.DBC; import db.Dominio; import java.nio.file.Files; import java.nio.file.Path; import java.sql.SQLException; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpPrincipal; import java.io.*; import java.util.*; import org.json.JSONException; import java.net.URI; import java.net.URL; import java.net.URLDecoder; public class DeleteHandler implements HttpHandler{ @Override public void handle(HttpExchange he) throws IOException { URI requestedUri = he.getRequestURI(); String requestMethod = he.getRequestMethod(); String response = "ayyyyDeletto\n"; String query = requestedUri.getRawQuery(); String body = readBody(he.getRequestBody()); String user = he.getRequestHeaders().get("user").get(0); if (requestMethod.compareTo("POST") == 0 || requestMethod.compareTo("post") == 0) { String dominio = body.substring(7); System.out.println( "1"+requestMethod + "\n" + query + "\n" + body + "\n" + response + "\n" + user + "\n" + "A"+dominio + "\n"); try { Dominio d = DBC.getDom(dominio); String s = user + "-A"; /* * for(Dominio d : doms){ if( (d.getDomain() == dominio) && * d.getUsers().contains(s)) //something here * System.out.println("OPERAZIONE NON IMPLEMENTATA"); * he.sendResponseHeaders(401,response.length()); OutputStream os = * he.getResponseBody(); os.write("NON AUTORIZZATO".getBytes()); os.close(); * return; } */ if(d==null) { System.out.println("Dominio inesistente"); response = "Dominio inesistente"; he.sendResponseHeaders(404, response.length()); OutputStream os = he.getResponseBody(); os.write(response.getBytes()); os.close(); // System.out.println("OPERAZIONE NON IMPLEMENTATA"); // he.sendResponseHeaders(501,0); // OutputStream os = he.getResponseBody(); // os.write("OPERAZIONE NON IMPLEMENTATA".getBytes()); // os.close(); return; } ArrayList<String> ad= DBC.getDomainsAdmin(dominio); if (!ad.contains(user)) { // he.sendResponseHeaders(401,0 ); System.out.println("NON AUTORIZZATO"); response = "NON AUTORIZZATO"; he.sendResponseHeaders(401, response.length()); OutputStream os = he.getResponseBody(); os.write(response.getBytes()); os.close(); // System.out.println("OPERAZIONE NON IMPLEMENTATA"); // he.sendResponseHeaders(501,0); // OutputStream os = he.getResponseBody(); // os.write("OPERAZIONE NON IMPLEMENTATA".getBytes()); // os.close(); return; }else{DBC.delDom(dominio); //return;//per comunicare al cloudAppMng togliere il return e modificare opportunamente } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //finally {return;}idem qui catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } //effettuo chiamata a CloudAppManager //preso da https://www.baeldung.com/java-http-request //è una chiamata annidata nella risposta alla webapp // -richiesta REST da webApp a /install // -prendo da DB e poi chiamo CloudAppMng su /install // -attendo risposta da CloudAppMng e chiudo // -rispondo a webApp e chiudo // EZ // //standard per chiamata in slide //https://www.dir.uniupo.it/pluginfile.php/948883/mod_resource/content/1/FrameworkProgetto5.pdf // //http://127.0.0.1:8080/install URL url = new URL("http://127.0.0.1:3002");//maybe, se CloudAppe è in localhost porta 8080 //aggiungere 3000/delete HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "application/json"); Map<String, String> parameters = new HashMap<>(); parameters.put("param1", "val");//fix parametri da mandare //leggo da DB domini e riempio (magari famo .DAO??) con.setDoOutput(true); DataOutputStream out = new DataOutputStream(con.getOutputStream());//inserimento param in call out.writeBytes(ParameterStringBuilder.getParamsString(parameters)); out.flush(); out.close(); //con.setRequestProperty("Content-Type", "application/json"); //String contentType = con.getHeaderField("Content-Type"); con.setConnectTimeout(5000); con.setReadTimeout(5000); //leggo risposta int status = con.getResponseCode(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer content = new StringBuffer(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); con.disconnect(); //finita chiamata a CloudApp //f.close(); OutputStream os = he.getResponseBody(); he.sendResponseHeaders(status, response.length());//status os.write(response.getBytes()); os.close(); } } private String readBody(InputStream requestBody) { int req; StringBuffer sb = new StringBuffer(); try { while ((req = requestBody.read()) != -1) sb.append(Character.toString((char) req)); } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } }