mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-23 16:40:22 -04:00
Changed: - Runtime disabled logs which didn't add value from ServiceDesktop - Runtime disabled logs which didn't add value from SystemManager - Added possibility to change runtime logging levels - Integrated ServiceDesktop developer code a bit - it might be used as virtual base with little to no modifications for other endpoints which would result with less redundant code
54 lines
2.0 KiB
C++
54 lines
2.0 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "DeveloperModeEndpoint.hpp"
|
|
#include <log.hpp>
|
|
|
|
#include <endpoints/Context.hpp>
|
|
#include <service-desktop/parser/MessageHandler.hpp>
|
|
|
|
using namespace parserFSM;
|
|
|
|
DeveloperModeEndpoint::DeveloperModeEndpoint(sys::Service *_ownerServicePtr) : Endpoint(_ownerServicePtr)
|
|
{
|
|
debugName = "DeveloperModeEndpoint";
|
|
helpers.emplace_back(std::make_unique<DeveloperModeHelper>("base", ownerServicePtr));
|
|
helpers.emplace_back(std::make_unique<UI_Helper>("ui", ownerServicePtr));
|
|
helpers.emplace_back(std::make_unique<UpdateHelper>("update", ownerServicePtr));
|
|
helpers.emplace_back(std::make_unique<LogHelper>("log", ownerServicePtr));
|
|
}
|
|
|
|
auto DeveloperModeEndpoint::handle(Context &context) -> void
|
|
{
|
|
auto &p = helperSwitcher(context);
|
|
auto [sent, response] = p.process(context.getMethod(), context);
|
|
if (sent == sent::delayed) {
|
|
LOG_DEBUG("There is no proper delayed serving mechanism - depend on invisible context caching");
|
|
}
|
|
if (sent == sent::no) {
|
|
if (not response) {
|
|
LOG_ERROR("Response not sent & response not created : respond with error");
|
|
context.setResponseStatus(http::Code::NotAcceptable);
|
|
}
|
|
else {
|
|
context.setResponse(response.value());
|
|
}
|
|
|
|
MessageHandler::putToSendQueue(context.createSimpleResponse());
|
|
}
|
|
if (sent == sent::yes and response) {
|
|
LOG_ERROR("Response set when we already handled response in handler");
|
|
}
|
|
}
|
|
|
|
auto DeveloperModeEndpoint::helperSwitcher(parserFSM::Context &ctx) -> parserFSM::BaseHelper &
|
|
{
|
|
std::string name = ctx.getBody().string_value();
|
|
if (auto s = std::find_if(
|
|
std::begin(helpers), std::end(helpers), [&name](const auto &val) { return val->name() == name; });
|
|
s != std::end(helpers)) {
|
|
return **s;
|
|
}
|
|
return **helpers.begin();
|
|
}
|