Cleaned Http handling a bit.
This commit is contained in:
parent
9ce160f1b9
commit
d1f280eb0f
11 changed files with 143 additions and 51 deletions
|
|
@ -7,6 +7,7 @@ import java.util.Map;
|
|||
import org.dynmap.web.HttpHandler;
|
||||
import org.dynmap.web.HttpRequest;
|
||||
import org.dynmap.web.HttpResponse;
|
||||
import org.dynmap.web.HttpStatus;
|
||||
import org.dynmap.web.Json;
|
||||
|
||||
public class ClientConfigurationHandler implements HttpHandler {
|
||||
|
|
@ -29,6 +30,8 @@ public class ClientConfigurationHandler implements HttpHandler {
|
|||
response.fields.put("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");
|
||||
response.fields.put("Last-modified", dateStr);
|
||||
response.fields.put("Content-Length", Integer.toString(cachedConfiguration.length));
|
||||
response.status = HttpStatus.OK;
|
||||
|
||||
BufferedOutputStream out = new BufferedOutputStream(response.getBody());
|
||||
out.write(cachedConfiguration);
|
||||
out.flush();
|
||||
|
|
|
|||
|
|
@ -12,10 +12,11 @@ import org.bukkit.entity.Player;
|
|||
import org.dynmap.Client;
|
||||
import org.dynmap.MapManager;
|
||||
import org.dynmap.PlayerList;
|
||||
import org.dynmap.web.HttpErrorHandler;
|
||||
import org.dynmap.web.HttpField;
|
||||
import org.dynmap.web.HttpHandler;
|
||||
import org.dynmap.web.HttpRequest;
|
||||
import org.dynmap.web.HttpResponse;
|
||||
import org.dynmap.web.HttpStatus;
|
||||
import org.dynmap.web.Json;
|
||||
|
||||
public class ClientUpdateHandler implements HttpHandler {
|
||||
|
|
@ -30,13 +31,14 @@ public class ClientUpdateHandler implements HttpHandler {
|
|||
}
|
||||
|
||||
Pattern updatePathPattern = Pattern.compile("world/([a-zA-Z0-9_-\\.]+)/([0-9]*)");
|
||||
private static final HttpStatus WorldNotFound = new HttpStatus(HttpStatus.NotFound.getCode(), "World Not Found");
|
||||
@Override
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws Exception {
|
||||
|
||||
Matcher match = updatePathPattern.matcher(path);
|
||||
|
||||
if (!match.matches()) {
|
||||
HttpErrorHandler.handleForbidden(response);
|
||||
response.status = HttpStatus.Forbidden;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -45,7 +47,7 @@ public class ClientUpdateHandler implements HttpHandler {
|
|||
|
||||
World world = server.getWorld(worldName);
|
||||
if (world == null) {
|
||||
HttpErrorHandler.handleNotFound(response);
|
||||
response.status = WorldNotFound;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -78,11 +80,13 @@ public class ClientUpdateHandler implements HttpHandler {
|
|||
byte[] bytes = Json.stringifyJson(update).getBytes();
|
||||
|
||||
String dateStr = new Date().toString();
|
||||
response.fields.put("Date", dateStr);
|
||||
response.fields.put("Content-Type", "text/plain");
|
||||
response.fields.put("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");
|
||||
response.fields.put("Last-modified", dateStr);
|
||||
response.fields.put("Content-Length", Integer.toString(bytes.length));
|
||||
response.fields.put(HttpField.Date, dateStr);
|
||||
response.fields.put(HttpField.ContentType, "text/plain");
|
||||
response.fields.put(HttpField.Expires, "Thu, 01 Dec 1994 16:00:00 GMT");
|
||||
response.fields.put(HttpField.LastModified, dateStr);
|
||||
response.fields.put(HttpField.ContentLength, Integer.toString(bytes.length));
|
||||
response.status = HttpStatus.OK;
|
||||
|
||||
BufferedOutputStream out = new BufferedOutputStream(response.getBody());
|
||||
out.write(bytes);
|
||||
out.flush();
|
||||
|
|
|
|||
|
|
@ -7,9 +7,11 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.dynmap.web.HttpField;
|
||||
import org.dynmap.web.HttpHandler;
|
||||
import org.dynmap.web.HttpRequest;
|
||||
import org.dynmap.web.HttpResponse;
|
||||
import org.dynmap.web.HttpStatus;
|
||||
|
||||
public abstract class FileHandler implements HttpHandler {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
|
|
@ -64,17 +66,15 @@ public abstract class FileHandler implements HttpHandler {
|
|||
path = formatPath(path);
|
||||
fileInput = getFileInput(path, request, response);
|
||||
if (fileInput == null) {
|
||||
response.statusCode = 404;
|
||||
response.statusMessage = "Not found";
|
||||
response.fields.put("Content-Length", "0");
|
||||
response.getBody();
|
||||
response.status = HttpStatus.NotFound;
|
||||
return;
|
||||
}
|
||||
|
||||
String extension = getExtension(path);
|
||||
String mimeType = getMimeTypeFromExtension(extension);
|
||||
|
||||
response.fields.put("Content-Type", mimeType);
|
||||
response.fields.put(HttpField.ContentType, mimeType);
|
||||
response.status = HttpStatus.OK;
|
||||
OutputStream out = response.getBody();
|
||||
try {
|
||||
int readBytes;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import java.io.FileInputStream;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.dynmap.web.HttpField;
|
||||
import org.dynmap.web.HttpRequest;
|
||||
import org.dynmap.web.HttpResponse;
|
||||
|
||||
|
|
@ -26,7 +27,7 @@ public class FilesystemHandler extends FileHandler {
|
|||
} catch (FileNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
response.fields.put("Content-Length", Long.toString(file.length()));
|
||||
response.fields.put(HttpField.ContentLength, Long.toString(file.length()));
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ import java.io.InputStreamReader;
|
|||
import java.util.logging.Logger;
|
||||
|
||||
import org.dynmap.Event;
|
||||
import org.dynmap.web.HttpErrorHandler;
|
||||
import org.dynmap.web.HttpField;
|
||||
import org.dynmap.web.HttpHandler;
|
||||
import org.dynmap.web.HttpMethods;
|
||||
import org.dynmap.web.HttpMethod;
|
||||
import org.dynmap.web.HttpRequest;
|
||||
import org.dynmap.web.HttpResponse;
|
||||
import org.dynmap.web.HttpStatus;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
|
|
@ -20,8 +20,9 @@ public class SendMessageHandler implements HttpHandler {
|
|||
public Event<Message> onMessageReceived = new Event<SendMessageHandler.Message>();
|
||||
@Override
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws Exception {
|
||||
if (!request.method.equals(HttpMethods.Post)) {
|
||||
HttpErrorHandler.handleMethodNotAllowed(response);
|
||||
if (!request.method.equals(HttpMethod.Post)) {
|
||||
response.status = HttpStatus.MethodNotAllowed;
|
||||
response.fields.put(HttpField.Accept, HttpMethod.Post);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -34,7 +35,8 @@ public class SendMessageHandler implements HttpHandler {
|
|||
|
||||
onMessageReceived.trigger(message);
|
||||
|
||||
response.fields.put(HttpField.contentLength, "0");
|
||||
response.fields.put(HttpField.ContentLength, "0");
|
||||
response.status = HttpStatus.OK;
|
||||
response.getBody();
|
||||
}
|
||||
public class Message {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue