iu9-ca-web-chat/src/web_chat/main.cpp

56 lines
1.9 KiB
C++
Raw Normal View History

2024-07-27 11:27:52 +00:00
#include <engine_engine_number_9/baza_throw.h>
#include <engine_engine_number_9/running_mainloop.h>
#include <engine_engine_number_9/http_structures/response_gen.h>
#include <signal.h>
#include <engine_engine_number_9/connecting_assets/static_asset_manager.h>
#include <assert.h>
bool termination = false;
void sigterm_action(int ) {
termination = true;
}
int main(int argc, char** argv){
een9_ASSERT_pl(argc > 0);
if (argc < 1 + 2) {
printf("Usage: %s <file with settings> <assets folder>\n", argv[0]);
exit(1);
}
// if ()
if (!een9::isDirectory(argv[2])) {
printf("\"%s\" is not a directory\n", argv[2]);
}
std::string assets_dir = argv[2];
een9::StaticAssetManagerSlaveModule samI;
samI.update({
een9::StaticAssetManagerRule{assets_dir + "/html", "/assets/html", {{".html", "text/html"}} },
een9::StaticAssetManagerRule{assets_dir + "/css", "/assets/css", {{".css", "text/css"}} },
een9::StaticAssetManagerRule{assets_dir + "/js", "/assets/js", {{".js", "text/js"}} },
});
een9::MainloopParameters params;
params.guest_core = [&samI](const een9::SlaveTask& task, const een9::ClientRequest& req) -> std::string {
een9::StaticAsset sa;
int ret;
ret = samI.get_asset(req.url, sa);
if (ret >= 0) {
return een9::form_http_server_response_200(sa.type, sa.content);
}
if (req.url == "/" || req.url == "/index.html") {
ret = samI.get_asset("/assets/html/test.html", sa);
een9_ASSERT_pl(ret == 0);
return een9::form_http_server_response_200(sa.type, sa.content);
}
return een9::form_http_server_response_404("text/html", "<h1> Not found! </h1>");
};
params.ports_to_listen = {1025};
params.slave_number = 8;
params.open_admin_listener = false;
signal(SIGINT, sigterm_action);
een9::safe_electric_boogaloo(params, termination);
return 0;
}