package com.orhanobut;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import fi.iki.elonen.NanoHTTPD;
import fi.iki.elonen.ServerRunner;
public class TestServer extends NanoHTTPD implements HttpServer {
public TestServer() {
super(9095);
}
public static void main(String[] args) {
ServerRunner.run(TestServer.class);
}
@Override
public Response serve(IHTTPSession session) {
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Method method = session.getMethod();
switch (method) {
case GET:
return get(session);
case POST:
return post(session);
case PUT:
return put(session);
case DELETE:
return delete(session);
case HEAD:
return head(session);
case OPTIONS:
return options(session);
}
return null;
}
private static final String DEFAULT_RESPONSE = "{\"name\":\"wasp\"}";
@Override
public Response get(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response post(IHTTPSession session) {
Map<String, String> files = new HashMap<>();
try {
session.parseBody(files);
} catch (IOException ioe) {
return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage());
} catch (ResponseException re) {
return new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage());
}
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response put(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response patch(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response head(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response delete(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
@Override
public Response options(IHTTPSession session) {
return new Response(Response.Status.ACCEPTED, "application/json", DEFAULT_RESPONSE);
}
}