#include "WebApplication.h" #include "BlogApplication.h" #include "BoostLog.h" #include "Hello.h" #include "Restful.h" #include "Session.h" #include "model/BlogSession.h" #include #include static std::unique_ptr createApplication(const Wt::WEnvironment &env) { return std::make_unique(env, false); } std::unique_ptr createBlogApplication(const Wt::WEnvironment &env, Wt::Dbo::SqlConnectionPool *blogDb) { return std::make_unique(env, *blogDb); } static std::unique_ptr createWidgetSet(const Wt::WEnvironment &env) { return std::make_unique(env, true); } WebApplication::WebApplication() { try { std::vector args; args.push_back("--approot=./build"); args.push_back("--docroot=./build"); args.push_back("--http-listen=127.0.0.1:8855"); // --docroot=. --no-compression --http-listen 127.0.0.1:8855 m_server = std::make_unique("./build", args); m_server->addEntryPoint(Wt::EntryPointType::Application, createApplication, "/hello"); BlogSession::configureAuth(); m_blogSqlConnectionPool = BlogSession::createConnectionPool(m_server->appRoot() + "database.sqlite"); m_server->addEntryPoint(Wt::EntryPointType::Application, std::bind(&createBlogApplication, std::placeholders::_1, m_blogSqlConnectionPool.get()), "/blog"); m_server->addEntryPoint(Wt::EntryPointType::WidgetSet, createWidgetSet, "/gui/hello.js"); Session::configureAuth(); m_server->addResource(std::make_shared(), "/json"); m_server->addResource(std::make_shared(), "/plaintext"); m_server->addResource(std::make_shared("database.sqlite"), "/db"); m_thread = std::thread(&WebApplication::run, this); } catch (const std::exception &e) { LOG(error) << e.what(); } } WebApplication::~WebApplication() { if (m_thread.joinable()) { m_thread.join(); } } void WebApplication::run() { try { m_server->run(); } catch (const std::exception &e) { LOG(error) << e.what(); } }