Newer
Older
package code;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpServer;
//import StuffHandler.CustomObject;
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 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 {
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;
//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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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();
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
}
}
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();
}
}