From f49c557f828cb794251957f0081e2de67c8327f0 Mon Sep 17 00:00:00 2001 From: Tyler Perkins Date: Fri, 29 Apr 2022 12:05:34 -0400 Subject: [PATCH] Add uptime route --- src/components/state.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/components/state.hpp | 17 +++++++++++++++++ src/routes.cpp | 10 ++++++++++ src/routes.hpp | 1 + 4 files changed, 64 insertions(+) create mode 100644 src/components/state.cpp create mode 100644 src/components/state.hpp diff --git a/src/components/state.cpp b/src/components/state.cpp new file mode 100644 index 0000000..f96930b --- /dev/null +++ b/src/components/state.cpp @@ -0,0 +1,36 @@ +/////////////////////////////////////////////////////////////////////////////// +// Tyler Perkins +// 29-4-22 +// System functions implementation +// + +#include "state.hpp" + +bool state::getUptime(crow::json::wvalue& ret){ + std::ifstream f ("/proc/uptime"); + std::string line; + if(f.is_open()){ + int space = -1; + std::getline(f, line); + + for(int i = 0; line[i] != '\0'; ++i){ + if(line[i] == ' '){ + space = i; + break; + } + } + + ret["uptime"] = std::stof(line.substr(0, space)); + ret["idle"] = std::stof(line.substr(space+1)); + + } else { + ret["message"] = "Failed to open proc filesystem"; + return false; + } + + return true; +} + +bool state::getRawUptime(std::string& ret){ + return true; +} diff --git a/src/components/state.hpp b/src/components/state.hpp new file mode 100644 index 0000000..f2bb8c8 --- /dev/null +++ b/src/components/state.hpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////// +// Tyler Perkins +// 29-4-22 +// System functions definitions +// + +#pragma once + +#include + +#include +#include + +namespace state{ + bool getUptime(crow::json::wvalue&); + bool getRawUptime(std::string&); +} diff --git a/src/routes.cpp b/src/routes.cpp index 89ed786..4758069 100644 --- a/src/routes.cpp +++ b/src/routes.cpp @@ -24,7 +24,17 @@ void setRoutes(crow::SimpleApp& app){ } }); + CROW_ROUTE(app, "/proc/uptime")([](){ + crow::json::wvalue json; + bool status; + + status = state::getUptime(json); + return crow::response(status ? 200: 503, json.dump()); + + }); + CROW_ROUTE(app, "/mem")([]{ return "mem"; }); + } diff --git a/src/routes.hpp b/src/routes.hpp index b30ea8b..6e68bb2 100644 --- a/src/routes.hpp +++ b/src/routes.hpp @@ -11,5 +11,6 @@ #include #include "components/memory.hpp" +#include "components/state.hpp" void setRoutes(crow::SimpleApp&);