Files
sf_daq_buffer/core-writer/src/RestApi.cpp
T
2020-03-23 11:54:27 +01:00

69 lines
1.7 KiB
C++

#include <sstream>
#include <string>
#include "crow_all.h"
#include "RestApi.hpp"
using namespace std;
void RestApi::start_rest_api(WriterManager& writer_manager, uint16_t port)
{
#ifdef DEBUG_OUTPUT
cout << "[rest_interface::start_rest_api] Starting rest interface on port ";
cout << port << endl;
#endif
crow::SimpleApp app;
CROW_ROUTE(app, "/stop")([&](){
writer_manager.stop();
crow::json::wvalue result;
result["state"] = "ok";
result["status"] = writer_manager.get_status();
return result;
});
CROW_ROUTE (app, "/status") ([&](){
crow::json::wvalue result;
result["state"] = "ok";
result["status"] = writer_manager.get_status();
return result;
});
CROW_ROUTE (app, "/statistics") ([&](){
crow::json::wvalue result;
for (const auto& item : writer_manager.get_statistics()) {
result[item.first] = item.second;
}
result["state"] = "ok";
result["status"] = writer_manager.get_status();
return result;
});
CROW_ROUTE (app, "/start").methods("POST"_method) ([&](const crow::request& req)
{
auto request_parameters = crow::json::load(req.body);
int n_frames = request_parameters["n_frames"].i();
string output_file = request_parameters["output_file"].s();
int user_id = request_parameters["user_id"].i();
writer_manager.start(output_file, n_frames, user_id);
crow::json::wvalue result;
result["message"] = "Writer started.";
result["status"] = writer_manager.get_status();
return result;
});
app.loglevel(crow::LogLevel::ERROR);
app.port(port).run();
}