Refactor websockets

This commit is contained in:
adityapk00
2019-01-16 13:05:21 -08:00
parent 0e23f137c4
commit 2ae8c9b0b2
6 changed files with 123 additions and 20 deletions

View File

@@ -43,12 +43,7 @@ void WSServer::processTextMessage(QString message)
if (m_debug)
qDebug() << "Message received:" << message;
if (pClient) {
QJsonDocument json(QJsonObject {
{"saplingAddress", m_mainWindow->getRPC()->getDefaultSaplingAddress()},
{"balance", m_mainWindow->getRPC()->balTotal},
{"zecprice", Settings::getInstance()->getZECPrice()}
});
auto json = AppDataServer::processMessage(message, m_mainWindow);
pClient->sendTextMessage(json.toJson());
}
}
@@ -72,4 +67,59 @@ void WSServer::socketDisconnected()
m_clients.removeAll(pClient);
pClient->deleteLater();
}
}
}
// ==============================
// AppDataServer
// ==============================
QJsonDocument AppDataServer::processMessage(QString message, MainWindow* mainWindow) {
// First, extract the command from the message
auto msg = QJsonDocument::fromJson(message.toUtf8());
if (!msg.object().contains("command")) {
return QJsonDocument(QJsonObject{
{"errorCode", -1},
{"errorMessage", "Unknown JSON format"}
});
}
if (msg["command"] == "getInfo") {
return processGetInfo(mainWindow);
}
else if (msg["command"] == "getTransactions") {
return processGetTransactions(mainWindow);
}
else {
return QJsonDocument(QJsonObject{
{"errorCode", -1},
{"errorMessage", "Command not found:" + msg["command"].toString()}
});
}
}
QJsonDocument AppDataServer::processGetInfo(MainWindow* mainWindow) {
return QJsonDocument(QJsonObject{
{"version", 1.0},
{"saplingAddress", mainWindow->getRPC()->getDefaultSaplingAddress()},
{"balance", AppDataModel::getInstance()->getTotalBalance()},
{"zecprice", Settings::getInstance()->getZECPrice()}
});
}
QJsonDocument AppDataServer::processGetTransactions(MainWindow* mainWindow) {
QJsonArray txns;
auto model = mainWindow->getRPC()->getTransactionsModel();
for (int i = 0; i < model->rowCount(QModelIndex()); i++) {
txns.append(QJsonObject{
{"type", model->getType(i)},
{"datetime", model->getDate(i)},
{"amount", model->getAmt(i)}
});
}
return QJsonDocument(txns);
}
// ==============================
// AppDataModel
// ==============================
AppDataModel* AppDataModel::instance = NULL;