diff options
Diffstat (limited to 'samples/src/main/java/fi/iki/elonen/DebugServer.java')
-rw-r--r-- | samples/src/main/java/fi/iki/elonen/DebugServer.java | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/samples/src/main/java/fi/iki/elonen/DebugServer.java b/samples/src/main/java/fi/iki/elonen/DebugServer.java index bb89181..ae3fff1 100644 --- a/samples/src/main/java/fi/iki/elonen/DebugServer.java +++ b/samples/src/main/java/fi/iki/elonen/DebugServer.java @@ -1,5 +1,7 @@ package fi.iki.elonen; +import java.io.IOException; +import java.util.HashMap; import java.util.Map; public class DebugServer extends NanoHTTPD { @@ -11,20 +13,56 @@ public class DebugServer extends NanoHTTPD { ServerRunner.run(DebugServer.class); } - @Override - public Response serve(String uri, Method method, Map<String, String> header, Map<String, String> parms, Map<String, String> files) { + @Override public Response serve(IHTTPSession session) { StringBuilder sb = new StringBuilder(); sb.append("<html>"); sb.append("<head><title>Debug Server</title></head>"); sb.append("<body>"); - sb.append("<h1>Response</h1>"); - sb.append("<p><blockquote><b>URI -</b> ").append(String.valueOf(uri)).append("<br />"); - sb.append("<b>Method -</b> ").append(String.valueOf(method)).append("</blockquote></p>"); - sb.append("<h3>Headers</h3><p><blockquote>").append(String.valueOf(header)).append("</blockquote></p>"); - sb.append("<h3>Parms</h3><p><blockquote>").append(String.valueOf(parms)).append("</blockquote></p>"); - sb.append("<h3>Files</h3><p><blockquote>").append(String.valueOf(files)).append("</blockquote></p>"); + sb.append("<h1>Debug Server</h1>"); + + sb.append("<p><blockquote><b>URI</b> = ").append(String.valueOf(session.getUri())).append("<br />"); + + sb.append("<b>Method</b> = ").append(String.valueOf(session.getMethod())).append("</blockquote></p>"); + + sb.append("<h3>Headers</h3><p><blockquote>").append(toString(session.getHeaders())).append("</blockquote></p>"); + + sb.append("<h3>Parms</h3><p><blockquote>").append(toString(session.getParms())).append("</blockquote></p>"); + + sb.append("<h3>Parms (multi values?)</h3><p><blockquote>"). + append(toString(decodeParameters(session.getQueryParameterString()))).append("</blockquote></p>"); + + try { + Map<String, String> files = new HashMap<String, String>(); + session.parseBody(files); + sb.append("<h3>Files</h3><p><blockquote>").append(toString(files)).append("</blockquote></p>"); + } catch (IOException e) { + e.printStackTrace(); + } catch (ResponseException e) { + e.printStackTrace(); + } sb.append("</body>"); sb.append("</html>"); return new Response(sb.toString()); } + + private String toString(Map<String, ? extends Object> map) { + if (map.size() == 0) { + return ""; + } + return unsortedList(map); + } + + private String unsortedList(Map<String, ? extends Object> map) { + StringBuilder sb = new StringBuilder(); + sb.append("<ul>"); + for (Map.Entry entry : map.entrySet()) { + listItem(sb, entry); + } + sb.append("</ul>"); + return sb.toString(); + } + + private void listItem(StringBuilder sb, Map.Entry entry) { + sb.append("<li><code><b>").append(entry.getKey()).append("</b> = ").append(entry.getValue()).append("</code></li>"); + } } |