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; } }