DynRes/src/main/java/io/gitlab/jfronny/dynres/web/RequestHandler.java

57 lines
1.9 KiB
Java

package io.gitlab.jfronny.dynres.web;
import io.gitlab.jfronny.dynres.DynRes;
import io.gitlab.jfronny.dynres.web.bluemapcore.HttpRequest;
import io.gitlab.jfronny.dynres.web.bluemapcore.HttpRequestHandler;
import io.gitlab.jfronny.dynres.web.bluemapcore.HttpResponse;
import io.gitlab.jfronny.dynres.web.bluemapcore.HttpStatusCode;
import org.apache.http.HttpException;
import org.apache.http.MethodNotSupportedException;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.FileEntity;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Locale;
import java.util.Objects;
public class RequestHandler implements HttpRequestHandler {
File f;
String r;
@Override
public HttpResponse handle(HttpRequest request) {
String method = request.getMethod().toUpperCase();
if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) {
HttpResponse resp = new HttpResponse(HttpStatusCode.BAD_REQUEST);
resp.setData(method + " method not supported");
return resp;
}
String path = DynRes.simplifyElement(request.getPath());
if (Objects.equals(path, r)) {
HttpResponse resp = new HttpResponse(HttpStatusCode.OK);
resp.addHeader("Server", "DynRes using BlueMap");
resp.addHeader("Cache-Control", "no-cache");
resp.addHeader("Content-Type", "application/zip");
try {
FileInputStream fs = new FileInputStream(f);
resp.setData(fs);
return resp;
} catch (FileNotFoundException e) {
return new HttpResponse(HttpStatusCode.INTERNAL_SERVER_ERROR);
}
}
return new HttpResponse(HttpStatusCode.NOT_FOUND);
}
public RequestHandler(File file, String relativePath) {
f = file;
r = relativePath;
}
}