aboutsummaryrefslogtreecommitdiff
path: root/webserver
diff options
context:
space:
mode:
authorrnveach <rveach02@gmail.com>2014-04-24 09:14:08 -0400
committerPaul Hawke <paul.hawke@gmail.com>2014-04-24 23:25:13 -0500
commitf6c4cd0f0fe27442cae5162a0f529b594bda0060 (patch)
tree95fe149c3f740d01038d706059718f0f3217c911 /webserver
parent84a1ab453aafe41149fab0e663b49d85cf0896cb (diff)
downloadnanohttpd-f6c4cd0f0fe27442cae5162a0f529b594bda0060.tar.gz
expanded plugins to also recieve IHTTPSession so it has more access to
the request's state. Gives plugins access to Method, HTTP Headers, Parameters, and the raw Input Stream
Diffstat (limited to 'webserver')
-rw-r--r--webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java27
-rw-r--r--webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java4
2 files changed, 23 insertions, 8 deletions
diff --git a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
index 79ed4b3..6cecee8 100644
--- a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
+++ b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
@@ -1,8 +1,21 @@
package fi.iki.elonen;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.StringTokenizer;
public class SimpleWebServer extends NanoHTTPD {
/**
@@ -246,10 +259,10 @@ public class SimpleWebServer extends NanoHTTPD {
"INTERNAL ERRROR: given path is not a directory (" + homeDir + ").");
}
}
- return respond(Collections.unmodifiableMap(header), uri);
+ return respond(Collections.unmodifiableMap(header), session, uri);
}
- private Response respond(Map<String, String> headers, String uri) {
+ private Response respond(Map<String, String> headers, IHTTPSession session, String uri) {
// Remove URL arguments
uri = uri.trim().replace(File.separatorChar, '/');
if (uri.indexOf('?') >= 0) {
@@ -293,7 +306,7 @@ public class SimpleWebServer extends NanoHTTPD {
return createResponse(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, "FORBIDDEN: No directory listing.");
}
} else {
- return respond(headers, uri + indexFile);
+ return respond(headers, session, uri + indexFile);
}
}
@@ -301,10 +314,10 @@ public class SimpleWebServer extends NanoHTTPD {
WebServerPlugin plugin = mimeTypeHandlers.get(mimeTypeForFile);
Response response = null;
if (plugin != null) {
- response = plugin.serveFile(uri, headers, f, mimeTypeForFile);
+ response = plugin.serveFile(uri, headers, session, f, mimeTypeForFile);
if (response != null && response instanceof InternalRewrite) {
InternalRewrite rewrite = (InternalRewrite) response;
- return respond(rewrite.getHeaders(), rewrite.getUri());
+ return respond(rewrite.getHeaders(), session, rewrite.getUri());
}
} else {
response = serveFile(uri, headers, f, mimeTypeForFile);
diff --git a/webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java b/webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java
index 96db9a3..08a9f22 100644
--- a/webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java
+++ b/webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java
@@ -3,6 +3,8 @@ package fi.iki.elonen;
import java.io.File;
import java.util.Map;
+import fi.iki.elonen.NanoHTTPD.IHTTPSession;
+
/**
* @author Paul S. Hawke (paul.hawke@gmail.com)
* On: 9/14/13 at 8:09 AM
@@ -13,5 +15,5 @@ public interface WebServerPlugin {
boolean canServeUri(String uri, File rootDir);
- NanoHTTPD.Response serveFile(String uri, Map<String, String> headers, File file, String mimeType);
+ NanoHTTPD.Response serveFile(String uri, Map<String, String> headers, IHTTPSession session, File file, String mimeType);
}