1d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawkepackage fi.iki.elonen;
2d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
3fa460daed161decee0d49936154d2762f6fb3702Paul Hawkeimport java.util.Map;
4d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
5d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke/**
6d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke * An example of subclassing NanoHTTPD to make a custom HTTP server.
7d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke */
8d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawkepublic class HelloServer extends NanoHTTPD {
9939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke    public HelloServer() {
10df674ca7f11cee6336b66271c50476f389e0ff4bPaul Hawke        super(8080);
11d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke    }
12d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
13939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke    @Override public Response serve(IHTTPSession session) {
14939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke        Method method = session.getMethod();
15939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke        String uri = session.getUri();
16d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        System.out.println(method + " '" + uri + "' ");
17d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
18d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        String msg = "<html><body><h1>Hello server</h1>\n";
19939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke        Map<String, String> parms = session.getParms();
20d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        if (parms.get("username") == null)
21d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke            msg +=
22d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke                    "<form action='?' method='get'>\n" +
23d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke                            "  <p>Your name: <input type='text' name='username'></p>\n" +
24d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke                            "</form>\n";
25d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        else
26d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke            msg += "<p>Hello, " + parms.get("username") + "!</p>";
27d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
28d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        msg += "</body></html>\n";
29d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
30d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke        return new NanoHTTPD.Response(msg);
31d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke    }
32d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke
33939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke
34d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke    public static void main(String[] args) {
359788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke        ServerRunner.run(HelloServer.class);
36d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke    }
37d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke}
38