diff --git a/src/fne/network/RESTAPI.cpp b/src/fne/network/RESTAPI.cpp index 25fcb313..4c20eb26 100644 --- a/src/fne/network/RESTAPI.cpp +++ b/src/fne/network/RESTAPI.cpp @@ -200,6 +200,16 @@ json::object tgToJson(const TalkgroupRuleGroupVoice& groupVoice) } config["rewrite"].set(rewrites); + json::array always = json::array(); + std::vector alwaysSend = groupVoice.config().alwaysSend(); + if (alwaysSend.size() > 0) { + for (auto alwaysEntry : alwaysSend) { + uint32_t peerId = alwaysEntry; + always.push_back(json::value((double)peerId)); + } + } + config["always"].set(always); + json::array preferreds = json::array(); std::vector preferred = groupVoice.config().preferred(); if (preferred.size() > 0) { @@ -383,6 +393,27 @@ TalkgroupRuleGroupVoice jsonToTG(json::object& req, HTTPPayload& reply) config.rewrite(rewrite); } + if (!configObj["always"].is()) { + errorPayload(reply, "TG configuration \"always\" was not a valid JSON array"); + LogDebug(LOG_REST, "TG configuration \"always\" was not a valid JSON array"); + return TalkgroupRuleGroupVoice(); + } + json::array always = configObj["always"].get(); + + std::vector alwaysSend = groupVoice.config().alwaysSend(); + if (always.size() > 0) { + for (auto alwaysEntry : always) { + if (!alwaysEntry.is()) { + errorPayload(reply, "TG configuration always value was not a valid number"); + LogDebug(LOG_REST, "TG configuration always value was not a valid number"); + return TalkgroupRuleGroupVoice(); + } + + alwaysSend.push_back(alwaysEntry.get()); + } + config.alwaysSend(alwaysSend); + } + if (!configObj["preferred"].is()) { errorPayload(reply, "TG configuration \"preferred\" was not a valid JSON array"); LogDebug(LOG_REST, "TG configuration \"preferred\" was not a valid JSON array");