Files
archived-wlan-cloud-ucentra…/src/RESTAPI/RESTAPI_firmwareAgeHandler.cpp
2021-10-19 19:16:09 -07:00

64 lines
2.2 KiB
C++

//
// Created by stephane bourque on 2021-07-16.
//
#include "RESTAPI_firmwareAgeHandler.h"
#include "StorageService.h"
#include "Poco/JSON/Parser.h"
#include "Daemon.h"
#include "framework/Utils.h"
#include "DeviceCache.h"
#include "framework/uCentralProtocol.h"
#include "framework/RESTAPI_protocol.h"
#include "framework/RESTAPI_errors.h"
namespace OpenWifi {
void RESTAPI_firmwareAgeHandler::DoGet() {
if (!QB_.Select.empty()) {
Poco::JSON::Array Objects;
std::vector<std::string> Numbers = Utils::Split(QB_.Select);
for (auto &i : Numbers) {
DeviceCacheEntry E;
if (DeviceCache()->GetDevice(i, E)) {
FMSObjects::FirmwareAgeDetails FA;
if(Storage()->ComputeFirmwareAge(E.deviceType,E.revision,FA)) {
Poco::JSON::Object O;
FA.to_json(O);
O.set(uCentralProtocol::SERIALNUMBER,i);
Objects.add(O);
} else {
Poco::JSON::Object O;
O.set(uCentralProtocol::SERIALNUMBER,i);
Objects.add(O);
}
} else {
Poco::JSON::Object O;
O.set(uCentralProtocol::SERIALNUMBER,i);
Objects.add(O);
}
}
Poco::JSON::Object Answer;
Answer.set(RESTAPI::Protocol::AGES, Objects);
return ReturnObject(Answer);
} else {
auto DeviceType = GetParameter(RESTAPI::Protocol::DEVICETYPE, "");
auto Revision = GetParameter(RESTAPI::Protocol::REVISION, "");
if (DeviceType.empty() || Revision.empty()) {
return BadRequest(RESTAPI::Errors::BothDeviceTypeRevision);
}
Revision = Storage::TrimRevision(Revision);
FMSObjects::FirmwareAgeDetails FA;
if (Storage()->ComputeFirmwareAge(DeviceType, Revision, FA)) {
Poco::JSON::Object Answer;
FA.to_json(Answer);
return ReturnObject(Answer);
}
NotFound();
}
}
}