diff options
author | Scott Murray <scott.murray@konsulko.com> | 2020-01-02 16:37:36 -0500 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2020-01-03 15:51:17 +0000 |
commit | 68cb7fec30353f3aaffb06c32f172effe6262874 (patch) | |
tree | 4580b2bc32f9c782b5163344fd7aaf3e69303b78 /voice | |
parent | 95e3f5a2c51062128c68f1150e3e89284ca4dd5b (diff) |
voice: remove workarounds for broken vshl-core event JSON
Now that the broken event argument JSON from the vshl-core binding has
a fix, the workaround of selectively reparsing the voice event arguments
needs to be removed, as it breaks with the corrected events.
Bug-AGL: SPEC-3084
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ie158ae326a3dc9c7cf4b08dbdbc729f5587e3758
(cherry picked from commit 77392aeda562e3bbb4f311a99469156cb1a66d75)
Diffstat (limited to 'voice')
-rw-r--r-- | voice/voice.cpp | 22 | ||||
-rw-r--r-- | voice/voicemessage.cpp | 86 | ||||
-rw-r--r-- | voice/voicemessage.h | 1 |
3 files changed, 7 insertions, 102 deletions
diff --git a/voice/voice.cpp b/voice/voice.cpp index 40349d1..c43e0b5 100644 --- a/voice/voice.cpp +++ b/voice/voice.cpp @@ -55,7 +55,7 @@ void Voice::scan() void Voice::getCBLpair(QString id) { - triggerCBLProcess(id); + triggerCBLProcess(id); } void Voice::subscribeAgentToVshlEvents(QString id) @@ -138,23 +138,15 @@ void Voice::processEvent(VoiceMessage *vmsg) return; } else if (vmsg->isCblEvent()) { - auto payload_iter = data.find("payload"); - if (payload_iter == data.end()) - qWarning() << "no top-level payload field in event"; - auto payload_stringval = payload_iter.value().toString(); - if (!payload_stringval.isEmpty()) - payload_stringval.remove('\n'); - QJsonDocument infodoc = QJsonDocument::fromJson(payload_stringval.toUtf8()); - QJsonObject info = infodoc.object(); - QJsonObject properties = info.value("payload").toObject(); - QString url = properties.value("url").toString(); - QString code = properties.value("code").toString(); + QJsonObject payload = data.value("payload").toObject(); + QString url = payload.value("url").toString(); + QString code = payload.value("code").toString(); if (str.contains("expired")) m_var->updateLoginData(agentId, code, url, true); else if (str.contains("received")) { m_var->updateLoginData(agentId, code, url, false); } else - qWarning() << "unknown cbl event"; + qWarning() << "Unknown cbl event"; return; } @@ -170,8 +162,8 @@ void Voice::processReply(ResponseMessage *rmsg) m_var->setDefaultId( rmsg->replyData().value("default").toString()); } else - qWarning() << "discarding reply received for verb:" << - rmsg->requestVerb(); + qDebug() << "discarding reply received for verb:" << + rmsg->requestVerb(); } void Voice::onConnected() diff --git a/voice/voicemessage.cpp b/voice/voicemessage.cpp index 493b04e..6e5c634 100644 --- a/voice/voicemessage.cpp +++ b/voice/voicemessage.cpp @@ -27,89 +27,3 @@ bool VoiceMessage::createRequest(QString verb, QJsonObject parameter) return false; return Message::createRequest("vshl-core", verb, parameter); } - -bool VoiceMessage::fromJDoc(QJsonDocument jdoc) -{ - // Validate message is array - if (!jdoc.isArray()) { - qWarning("Invalid appfw message: not an array"); - return false; - } - QJsonArray msg = jdoc.array(); - - // Validate array is proper length - if ((msg.size() < 3) || (msg.size() > 4)) { - qWarning("Invalid appfw message: invalid array size"); - return false; - } - - // Validate msgid type - double msgid; - if (msg[0].isDouble()) { - msgid = msg[0].toDouble(); - } else { - qWarning("Invalid appfw message: invalid msgid type"); - return false; - } - - // Validate msgid element - if ((msgid < Call) || (msgid > Event)) { - qWarning("Invalid appfw message: msgid out of range"); - return false; - } - - // Validate that the payload has a request object - QJsonObject payload; - if (msg[2].isObject()) { - payload = msg[2].toObject(); - } else { - qWarning("Invalid appfw payload: no JSON object"); - return false; - } - - if ((msgid == RetOk) || (msgid == RetErr)) { - auto request_iter = payload.find("request"); - auto request = request_iter.value().toObject(); - if (request.empty()) { - qWarning("Invalid appfw reply message: empty request data"); - return false; - } - auto status_iter = request.find("status"); - auto info_iter = request.find("info"); - auto response_iter = payload.find("response"); - auto response = response_iter.value().toObject(); - m_reply_status = status_iter.value().toString(); - m_reply_info = info_iter.value().toString(); - m_reply_data = response; - m_reply = true; - } else if (msgid == Event) { - // If event, save data object - auto data_iter = payload.find("data"); - auto data = data_iter.value().toObject(); - auto data_string = data_iter.value().toString(); - if (!data_string.isEmpty()) - data_string.remove('\n'); - - QJsonDocument datadoc = QJsonDocument::fromJson(data_string.toUtf8()); - m_event_data = datadoc.object(); - - auto event_iter = payload.find("event"); - auto event_string = event_iter.value().toString(); - if (event_string.isEmpty()) { - qWarning("Invalid appfw event message: empty event name"); - return false; - } - QStringList event_strings = event_string.split(QRegExp("/")); - if (event_strings.size() != 2) { - qWarning("Invalid appfw event message: malformed event name"); - return false; - } - m_event_api = event_strings[0]; - m_event_name = event_strings[1]; - m_event = true; - } - - m_jdoc = jdoc; - m_init = true; - return m_init; -} diff --git a/voice/voicemessage.h b/voice/voicemessage.h index 712631e..f7dd9d8 100644 --- a/voice/voicemessage.h +++ b/voice/voicemessage.h @@ -24,7 +24,6 @@ class VoiceMessage : public Message Q_OBJECT public: virtual ~VoiceMessage() {}; - bool fromJDoc(QJsonDocument jdocData) override; bool isAuthStateEvent() const { return (this->eventName().contains("voice_authstate_event")); }; |