Files
qt5-legatus-legacy/Lts/Common/LtsWebSocket/client_message_factory.cpp
T
2026-08-13 18:33:10 +02:00

76 lines
2.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* LTS web socket server - Abstract Client Message Factory
* $Id$
* $HeadURL$
* $Author$
* Created by Philipp Dassow, SLST, 2017-11-28
*/
#include "client_message_factory.h"
#include "client_connection.h"
#include "json_keys.h"
#include <QJsonDocument>
namespace LtsWebSocket
{
// ######## AbstractClientMessageFactory begin ########
QJsonParseError AbstractClientMessageFactory::parseMessage(const QString &message)
{
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(message.toUtf8(), &error);
if (error.error != QJsonParseError::NoError)
return error;
QJsonObject obj = doc.object();
m_data = obj.value(JsonKeys::DATA());
m_type = obj.value(JsonKeys::TYPE()).toString();
m_typeId = obj.value(JsonKeys::TYPEID()).toInt();
m_uuid = obj.value(JsonKeys::UUID_()).toString();
return error;
}
AbstractClientMessage *AbstractClientMessageFactory::checkAttributes(ReplyHandler *client,
const QString &message) const
{
if (!m_uuid.isEmpty() && !m_type.isEmpty())
return nullptr;
if (m_uuid.isEmpty())
{
WARNING_LOG(m_logger) << "Got message without uuid: " << message << "'";
return new LtsWebSocket::InvalidMessage(client, QString(), QStringLiteral("Got message without uuid"));
}
WARNING_LOG(m_logger) << "Got message no type: " << message << "'";
return new LtsWebSocket::InvalidMessage(client, m_uuid, QStringLiteral("Message has no type"));
}
AbstractClientMessage *AbstractClientMessageFactory::checkResult(ReplyHandler *client,
const QString &message,
AbstractClientMessage *result) const
{
if (result == nullptr)
{
WARNING_LOG(m_logger) << "Could not parse message: " << message;
result = new LtsWebSocket::InvalidMessage(client, m_uuid, QStringLiteral("Invalid type"));
}
if (!result->hasValidData())
{
WARNING_LOG(m_logger) << "Resulting JSon message has invalid data... " << message;
delete result;
result = new LtsWebSocket::InvalidMessage(client, m_uuid, QStringLiteral("Has invalid data part"));
}
return result;
}
// ######## AbstractClientMessageFactory end ########
} // namespace LtsWebSocketServer