Files
docker-finance/container/src/root/macro/web/server.C

90 lines
2.6 KiB
C

// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! \file
//! \author Aaron Fiore (Founder, Evergreen Crypto LLC)
//! \note File intended to be loaded into ROOT.cern framework / Cling interpreter
//! \since docker-finance 1.0.0
#ifndef CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
#define CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
#include "../common/server.hh"
#include "../common/utility.hh"
//! \namespace docker_finance
//! \since docker-finance 1.0.0
namespace docker_finance
{
//! \namespace docker_finance::macro
//! \brief ROOT macros
//! \since docker-finance 1.0.0
namespace macro
{
//! \namespace docker_finance::macro::web
//! \brief ROOT web-based macros
//! \since docker-finance 1.0.0
namespace web
{
//! \brief Web server managing class
//! \ingroup cpp_macro
//! \since docker-finance 1.0.0
class Server final
{
public:
Server() = default;
~Server() = default;
Server(const Server&) = delete;
Server& operator=(const Server&) = delete;
Server(Server&&) = default;
Server& operator=(Server&&) = default;
private:
//! \brief ROOT HTTP server command registrar
//! \details Registers internal macros
static void register_commands()
{
namespace common = ::docker_finance::macro::common;
namespace internal = ::docker_finance::macro::internal;
common::Command::load({"web/internal/crypto.C"});
internal::g_HTTPServer->RegisterCommand(
"/rng_sample",
"::docker_finance::macro::web::internal::Random::rng_sample(\"%arg1%"
"\")");
common::Command::load({"web/internal/meta.C"});
internal::g_HTTPServer->RegisterCommand(
"/meta_sample",
"::docker_finance::macro::web::internal::Meta::meta_sample(\"%arg1%"
"\")");
}
public:
//! \brief Start webserver
static void run() { Server::register_commands(); }
};
} // namespace web
} // namespace macro
} // namespace docker_finance
#endif // CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
// # vim: sw=2 sts=2 si ai et