package test.http;
import com.firefly.codec.http2.model.HttpHeader;
import com.firefly.codec.http2.model.HttpStatus;
import com.firefly.codec.http2.model.MimeTypes;
import com.firefly.server.http2.SimpleHTTPServer;
import com.firefly.server.http2.SimpleResponse;
import com.firefly.utils.io.BufferUtils;
import java.io.PrintWriter;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
public class ServerDemo4 {
public static void main(String[] args) {
SimpleHTTPServer server = new SimpleHTTPServer();
server.headerComplete(req -> {
List<ByteBuffer> list = new ArrayList<>();
req.content(list::add)
.contentComplete(request -> {
String msg = BufferUtils.toString(list, "UTF-8");
StringBuilder s = new StringBuilder();
s.append("content complete").append("\r\n")
.append(req.toString()).append("\r\n")
.append(req.getFields().toString()).append("\r\n")
.append(msg).append("\r\n");
System.out.println(s.toString());
request.put("msg", msg);
})
.messageComplete(request -> {
SimpleResponse response = req.getResponse();
String path = req.getRequest().getURI().getPath();
response.getResponse().getFields().put(HttpHeader.CONTENT_TYPE, MimeTypes.Type.TEXT_PLAIN.asString());
switch (path) {
case "/":
System.out.println(request.getRequest().toString());
System.out.println(request.getRequest().getFields());
String msg = BufferUtils.toString(list, "UTF-8");
System.out.println(msg);
try (PrintWriter writer = response.getPrintWriter()) {
writer.print("server demo 4");
}
break;
case "/postData":
try (PrintWriter writer = response.getPrintWriter()) {
writer.print("receive message -> " + request.get("msg"));
}
break;
default:
response.getResponse().setStatus(HttpStatus.NOT_FOUND_404);
try (PrintWriter writer = response.getPrintWriter()) {
writer.print("resource not found");
}
break;
}
});
}).listen("localhost", 3333);
}
}