litelist/litelist-api/source/app.d

56 lines
2.0 KiB
D
Raw Normal View History

2023-08-16 14:37:39 +00:00
import handy_httpd;
import slf4d;
import slf4d.default_provider;
void main() {
auto provider = new shared DefaultProvider(true, Levels.INFO);
2023-08-18 01:38:10 +00:00
provider.getLoggerFactory().setModuleLevelPrefix("handy_httpd", Levels.WARN);
2023-08-16 14:37:39 +00:00
configureLoggingProvider(provider);
HttpServer server = initServer();
server.start();
}
private HttpServer initServer() {
import handy_httpd.handlers.path_delegating_handler;
import handy_httpd.handlers.filtered_handler;
import auth;
import lists;
2023-08-16 14:37:39 +00:00
ServerConfig config = ServerConfig.defaultValues();
config.enableWebSockets = false;
config.workerPoolSize = 3;
config.port = 8080;
config.connectionQueueSize = 10;
config.defaultHeaders["Access-Control-Allow-Origin"] = "*";
config.defaultHeaders["Access-Control-Allow-Credentials"] = "true";
2023-08-18 01:38:10 +00:00
config.defaultHeaders["Access-Control-Allow-Methods"] = "*";
config.defaultHeaders["Vary"] = "origin";
config.defaultHeaders["Access-Control-Allow-Headers"] = "Authorization";
2023-08-16 14:37:39 +00:00
auto mainHandler = new PathDelegatingHandler();
mainHandler.addMapping(Method.GET, "/status", (ref HttpRequestContext ctx) {
ctx.response.writeBodyString("online");
});
auto optionsHandler = toHandler((ref HttpRequestContext ctx) {
ctx.response.setStatus(HttpStatus.OK);
});
mainHandler.addMapping(Method.POST, "/register", &createNewUser);
2023-08-16 14:37:39 +00:00
mainHandler.addMapping(Method.POST, "/login", &handleLogin);
mainHandler.addMapping(Method.GET, "/me", &getMyUser);
mainHandler.addMapping(Method.OPTIONS, "/**", optionsHandler);
mainHandler.addMapping(Method.DELETE, "/me", &deleteMyUser);
2023-08-16 14:37:39 +00:00
mainHandler.addMapping(Method.GET, "/lists", &getNoteLists);
mainHandler.addMapping(Method.POST, "/lists", &createNoteList);
2023-08-18 01:38:10 +00:00
mainHandler.addMapping(Method.GET, "/lists/{id}", &getNoteList);
mainHandler.addMapping(Method.DELETE, "/lists/{id}", &deleteNoteList);
2023-08-18 01:38:10 +00:00
mainHandler.addMapping(Method.POST, "/lists/{listId}/notes", &createNote);
mainHandler.addMapping(Method.DELETE, "/lists/{listId}/notes/{noteId}", &deleteNote);
2023-08-16 14:37:39 +00:00
return new HttpServer(mainHandler, config);
}