Files

76 lines
2.3 KiB
C++
Raw Permalink Normal View History

#include "App.hpp"
#include "../fw/Http.hpp"
#include "../fw/Router.hpp"
#include "../fw/Templates.hpp"
namespace molo::example::app {
namespace {
const char* kFeatures[][2] = {
{"routing", "/routing/hello/world"},
{"views", "/views/greet"},
{"routers", "/routers/nested/deep"},
{"chaining", "/app1/app1/app1/whoami"},
{"orm-sqlite", "/orm/users?backend=sqlite"},
{"orm-postgres", "/orm/users?backend=postgres"},
{"auth", "/auth/me"},
{"sessions", "/sessions/counter"},
{"forms", "/forms/contact"},
{"validation", "/validate/user"},
{"templates", "/templates/page"},
{"formats", "/formats/data"},
{"static", "/static/app.css"},
{"embedded", "/embedded/hello.txt"},
{"streaming", "/streaming/feed"},
{"passthrough", "/streaming/passthrough"},
{"websocket", "/ws/chat"},
{"socketio", "/socketio/rooms"},
{"sse", "/sse/events"},
{"pubsub", "/pubsub/publish"},
{"events", "/events/fire"},
{"metrics", "/metrics/counters"},
{"telemetry", "/telemetry/trace"},
{"kv", "/kv/items"},
{"cache", "/cache/lookup"},
{"uploads", "/uploads/file"},
{"webdav", "/webdav/files/"},
{"replication", "/replication/state"},
{"tasks", "/supervisor/tasks"},
{"workers", "/supervisor/workers"},
{"restclient", "/restclient/self"},
{"openapi", "/openapi.json"},
{"docs", "/docs"},
{"ai", "/cli/ai"},
{"workflow", "/workflow/release"},
{"redirect", "/redirect/here"},
{"health", "/health"},
};
} // namespace
void register_index(fw::Router& router, Services& services) {
fw::Environment* env = services.templates.get();
router.get("/", "index", [env](fw::Request req) {
fw::TemplateCtx ctx;
ctx["title"] = std::string("MoloApp living example");
ctx["show_matrix"] = std::string("true");
fw::TemplateList rows;
for (const auto& [feature, route] : kFeatures) {
rows.push_back({{"feature", feature}, {"route", route}});
}
ctx["matrix"] = rows;
(void)req;
return fw::Response(200, env->render("index.html", ctx),
"text/html; charset=utf-8");
});
router.get("/health", "health", [](fw::Request req) {
(void)req;
return fw::JsonResponse(
"{\"status\":\"ok\",\"tls\":\"stub-no-wolfssl\"}", 200);
});
}
} // namespace molo::example::app