DebugServer.java revision ef3be58ec24d3e155c8036f8806dba7172f61d0c
1package fi.iki.elonen.debug;
2
3import fi.iki.elonen.NanoHTTPD;
4import fi.iki.elonen.ServerRunner;
5
6import java.util.HashMap;
7import java.util.List;
8import java.util.Map;
9
10public class DebugServer extends NanoHTTPD {
11    public DebugServer() {
12        super(8080);
13    }
14
15    public static void main(String[] args) {
16        ServerRunner.run(DebugServer.class);
17    }
18
19    @Override public Response serve(IHTTPSession session) {
20        Map<String, List<String>> decodedQueryParameters =
21            decodeParameters(session.getQueryParameterString());
22
23        StringBuilder sb = new StringBuilder();
24        sb.append("<html>");
25        sb.append("<head><title>Debug Server</title></head>");
26        sb.append("<body>");
27        sb.append("<h1>Debug Server</h1>");
28
29        sb.append("<p><blockquote><b>URI</b> = ").append(
30            String.valueOf(session.getUri())).append("<br />");
31
32        sb.append("<b>Method</b> = ").append(
33            String.valueOf(session.getMethod())).append("</blockquote></p>");
34
35        sb.append("<h3>Headers</h3><p><blockquote>").
36            append(toString(session.getHeaders())).append("</blockquote></p>");
37
38        sb.append("<h3>Parms</h3><p><blockquote>").
39            append(toString(session.getParms())).append("</blockquote></p>");
40
41        sb.append("<h3>Parms (multi values?)</h3><p><blockquote>").
42            append(toString(decodedQueryParameters)).append("</blockquote></p>");
43
44        try {
45            Map<String, String> files = new HashMap<String, String>();
46            session.parseBody(files);
47            sb.append("<h3>Files</h3><p><blockquote>").
48                append(toString(files)).append("</blockquote></p>");
49        } catch (Exception e) {
50            e.printStackTrace();
51        }
52
53        sb.append("</body>");
54        sb.append("</html>");
55        return new Response(sb.toString());
56    }
57
58    private String toString(Map<String, ? extends Object> map) {
59        if (map.size() == 0) {
60            return "";
61        }
62        return unsortedList(map);
63    }
64
65    private String unsortedList(Map<String, ? extends Object> map) {
66        StringBuilder sb = new StringBuilder();
67        sb.append("<ul>");
68        for (Map.Entry entry : map.entrySet()) {
69            listItem(sb, entry);
70        }
71        sb.append("</ul>");
72        return sb.toString();
73    }
74
75    private void listItem(StringBuilder sb, Map.Entry entry) {
76        sb.append("<li><code><b>").append(entry.getKey()).
77            append("</b> = ").append(entry.getValue()).append("</code></li>");
78    }
79}
80