import roj.net.http.server.auto.*;
public class Example {
public static void main(String[] args) {
OKRouter okRouter = new OKRouter();
HttpServer11.simple(new InetSocketAddress(12345), 64, okRouter.register(new Example())).launch();
// http server is daemon thread
LockSupport.park();
}
public static class AutoDeserializeTest {
int num;
String text;
@Optional
int wait;
@Optional
String comment;
}
@Route
@Interceptor("cors")
@Body(From.JSON)
public String push_detail(AutoDeserializeTest body) throws Exception {
System.out.println(body.num);
Thread.sleep(body.wait);
return "null";
}
@Route
@Interceptor({"cors","threadUpload"})
@Body(From.GET)
public String uploadTest(Request req, String path) throws Exception {
MultipartFormHandler ph = (MultipartFormHandler) req.postHandler();
if (ph != null) {
MultipartFormHandler.FormData postData = ph.file("file");
postData.moveTo(new File(path));
}
}
@Interceptor
public Response cors(Request req, PostSetting post) {
if (HttpUtil.isCORSPreflight(req)) {
req.responseHeader().putAllS(
"Access-Control-Allow-Headers: "+req.getField("access-control-request-headers")+"\r\n" +
"Access-Control-Allow-Origin: " + req.getField("Origin") + "\r\n" +
"Access-Control-Max-Age: 2592000\r\n" +
"Access-Control-Allow-Methods: *");
return Response.EMPTY;
}
req.responseHeader().put("Access-Control-Allow-Origin", "*");
return null;
}
@Interceptor
public void threadUpload(Request req, PostSetting post) {
if (post == null) return;
post.postHandler(new MultipartFormHandler(req) {
@Override
protected void onValue(ChannelCtx ctx, DynByteBuf buf) throws IOException {
FormData fd = (FormData) map.get(name);
if (!fd.append(buf)) {
fd._setExternalFile(new File("D:\\tmp\\tmp_"+System.nanoTime()));
fd.append(buf);
}
}
});
post.postAccept(104857600, 99999);
}
}