diff options
author | rnveach <rveach02@gmail.com> | 2014-04-24 09:14:08 -0400 |
---|---|---|
committer | Paul Hawke <paul.hawke@gmail.com> | 2014-04-24 23:25:13 -0500 |
commit | f6c4cd0f0fe27442cae5162a0f529b594bda0060 (patch) | |
tree | 95fe149c3f740d01038d706059718f0f3217c911 /webserver | |
parent | 84a1ab453aafe41149fab0e663b49d85cf0896cb (diff) | |
download | nanohttpd-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.java | 27 | ||||
-rw-r--r-- | webserver/src/main/java/fi/iki/elonen/WebServerPlugin.java | 4 |
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); } |