Async Http server.
constexpr int NUM_CLIENTS = 3;
Buffer headersMemory;
Buffer requestsMemory;
HttpServerClient clients[NUM_CLIENTS];
GrowableBuffer<Buffer> headers = {headersMemory};
HttpServer::Memory serverMemory = {headers, clients};
HttpServer server;
SC_TEST_EXPECT(server.start(eventLoop,
"127.0.0.1", 6152, serverMemory));
struct ServerContext
{
int numRequests;
HttpServer& server;
} serverContext = {0, server};
server.onRequest = [this, &serverContext](HttpRequest& request, HttpResponse& response)
{
if (request.getParser().method != HttpParser::Method::HttpGET)
{
return;
}
if (request.getURL() != "/index.html" and request.getURL() != "/")
{
return;
}
serverContext.numRequests++;
SC_TEST_EXPECT(response.addHeader(
"Date",
"Mon, 27 Aug 2023 16:37:00 GMT"));
SC_TEST_EXPECT(response.addHeader(
"Last-Modified",
"Wed, 27 Aug 2023 16:37:00 GMT"));
const char sampleHtml[] = "<html>\r\n"
"<body bgcolor=\"#000000\" text=\"#ffffff\">\r\n"
"<h1>This is a title {}!</h1>\r\n"
"We must start from somewhere\r\n"
"</body>\r\n"
"</html>\r\n";
String str;
SC_TEST_EXPECT(StringBuilder::format(str, sampleHtml, serverContext.numRequests));
};