From 4538bc8c7972fa0d9c4c23f038b2c5f2747f8edd Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 19 May 2024 00:16:51 +0500 Subject: feat: WIKI PAGES --- web/src/handlers.cpp | 31 +++++++++++++++++++++++++++++++ web/src/handlers.hpp | 7 +++++++ web/src/main.cpp | 5 +++++ 3 files changed, 43 insertions(+) create mode 100644 web/src/handlers.cpp create mode 100644 web/src/handlers.hpp (limited to 'web') diff --git a/web/src/handlers.cpp b/web/src/handlers.cpp new file mode 100644 index 0000000..1dfeb81 --- /dev/null +++ b/web/src/handlers.cpp @@ -0,0 +1,31 @@ +#include "handlers.hpp" + +#include +#include +#include + +#include "crow/http_response.h" +#include "crow/mustache.h" +#include "maddy/parser.h" + +namespace botweb { + crow::response get_wiki_page(const std::string &path) { + std::shared_ptr parser = std::make_shared(); + + std::ifstream contents("docs/" + path + ".md"); + std::string contents_html = parser->Parse(contents); + contents.close(); + + std::ifstream summary("docs/summary.md"); + std::string summary_html = parser->Parse(summary); + summary.close(); + + auto page = crow::mustache::load("wiki_page.html"); + + crow::mustache::context ctx; + ctx["content"] = contents_html; + ctx["summary"] = summary_html; + + return crow::response(200, page.render(ctx)); + } +} diff --git a/web/src/handlers.hpp b/web/src/handlers.hpp new file mode 100644 index 0000000..d150e6d --- /dev/null +++ b/web/src/handlers.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "crow/http_response.h" + +namespace botweb { + crow::response get_wiki_page(const std::string &path); +} diff --git a/web/src/main.cpp b/web/src/main.cpp index 700e71a..06936c5 100644 --- a/web/src/main.cpp +++ b/web/src/main.cpp @@ -1,5 +1,6 @@ #include "crow/app.h" #include "crow/mustache.h" +#include "handlers.hpp" int main(int argc, char *argv[]) { crow::SimpleApp app; @@ -11,6 +12,10 @@ int main(int argc, char *argv[]) { return page.render(); }); + CROW_ROUTE(app, "/wiki")([]() { return botweb::get_wiki_page("/README"); }); + CROW_ROUTE(app, "/wiki/") + ([](const std::string &path) { return botweb::get_wiki_page(path); }); + app.multithreaded().port(18083).run(); return 0; } -- cgit v1.2.3