diff options
| author | wuesk <wsk@tuta.com> | 2026-09-22 13:30:39 +0200 |
|---|---|---|
| committer | wuesk <wsk@tuta.com> | 2026-09-22 13:30:39 +0200 |
| commit | 72fafe4553e075c040734e31164e50c4cdc7f319 (patch) | |
| tree | 4a58557786185e993c11a5c4c27894333ab84842 /src/main.cpp | |
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..ad0214a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,84 @@ +#include <iostream> +#include "httplib.h" +#include "views.hpp" +#include "guestbook.hpp" +#include "json.hpp" + +using json = nlohmann::json; + +int main() +{ + httplib::Server server; + + int views = loadViews(); + std::vector<GuestbookEntry> guestbook = loadGuestbook(); + + server.Get("/health", [](const httplib::Request& request, httplib::Response& response) + { + response.set_content("OK", "text/plain"); + }); + + server.Get("/api/views", [&views](const httplib::Request& request, httplib::Response& response) + { + response.set_content(std::to_string(views), "text/plain"); + }); + + server.Post("/api/views", [&views](const httplib::Request& request, httplib::Response& response) + { + const int newViews = views + 1; + + if (!saveViews(newViews)) + { + response.status = 500; + response.set_content("Failed to save views", "text/plain"); + return; + } + + views = newViews; + + response.set_content(std::to_string(views), "text/plain"); + }); + + server.Get("/api/guestbook", [&guestbook](const httplib::Request& request, httplib::Response& response) + { + json data = json::array(); + + for (const GuestbookEntry& entry : guestbook) + { + data.push_back({ + {"name", entry.name}, + {"message", entry.message} + }); + } + + response.set_content(data.dump(), "application/json"); + }); + + server.Post("/api/guestbook", [&guestbook](const httplib::Request& request, httplib::Response& response) + { + json body = json::parse(request.body); + + GuestbookEntry entry; + entry.name = body.at("name").get<std::string>(); + entry.message = body.at("message").get<std::string>(); + + guestbook.push_back(entry); + + if (!saveGuestbook(guestbook)) + { + response.status = 500; + response.set_content("Failed to save guestbook", "text/plain"); + return; + } + + response.status = 201; + response.set_content("Entry created", "text/plain"); + }); + + std::cout << "Blog backend started\n"; + std::cout << "Port: 8080\n"; + + server.listen("0.0.0.0", 8080); + + return 0; +}
\ No newline at end of file |
