Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+75
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* @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
|
||||
Reference in new issue
Block a user