Newer
Older
package code;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
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 Resources implements HttpHandler {
Alfredo Chissotti
committed
@Override
public void handle(HttpExchange exchange) throws IOException {
String requestURI = exchange.getRequestURI().toASCIIString().replace("/secured/home/","/");
String requestMethod = exchange.getRequestMethod();
if (Helper.compareText(requestMethod, "GET")) {
Alfredo Chissotti
committed
if(response.equals("fail")){
//nel caso in cui non ci sia il file (perche non stato scaricato), allora creo un file fittizzio per non far crashare tutto il resto
Alfredo Chissotti
committed
// get the last element of requestedPath and remove .js
String[] requestedPage = requestedPath[requestedPath.length-1].split("\\.");
String className = requestedPage[0];
// make requested page with the first letter capitalized
className = className.substring(0, 1).toUpperCase() + className.substring(1);
response = "class "+className+"{}\nexport default " +className;
}
List<String> strlist = new ArrayList<>();
case "js/" : strlist.add("text/javascript"); break;
case "css" : strlist.add("text/css"); break;
default : strlist.add("text"); break;
}
exchange.getResponseHeaders().put("content-type", strlist);
exchange.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = exchange.getResponseBody();
os.write(response.getBytes());
os.close();
} else {
Helper.methodNotAllowed(exchange);
}
}
Alfredo Chissotti
committed
private static String getLocalPage(String uri) {
String page = Server.CLIENT_PATH+uri;
StringBuilder answer = new StringBuilder();
BufferedReader bufferedReader = null;
Alfredo Chissotti
committed
try {
FileReader fileReader = new FileReader(page);
bufferedReader = new BufferedReader(fileReader);
boolean isComment = false;
String line;
while ((line = bufferedReader.readLine()) != null) {
line = line.trim();
if((line.startsWith("/*") && line.endsWith("*/")) || line.startsWith("//")) {
continue;
}
if(line.startsWith("/*")) {
isComment = true;
continue;
}
if(line.endsWith("*/")) {
isComment = false;
continue;
}
if(!isComment && line.length()>0)
answer.append(line).append("\n");
}
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + page + "'");
return "fail";
} catch (IOException ex) {
System.out.println("Error reading file '" + page + "'");
return "fail";
} finally {
try{
if(bufferedReader != null)
bufferedReader.close();
} catch (IOException ex){
System.out.println("Error closing bufferedReader");
}
}
return answer.substring(0,answer.length()-1);
}
Alfredo Chissotti
committed