mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 00:04:48 -07:00
Major Directory Refactoring (#5118)
* refactored cardzone.cpp, added doc and changed if to switch case * started moving every files into different folders * remove undercase to match with other files naming convention * refactored dialog files * ran format.sh * refactored client/tabs folder * refactored client/tabs folder * refactored client/tabs folder * refactored client folder * refactored carddbparser * refactored dialogs * Create sonar-project.properties temporary file for lint * Create build.yml temporary file for lint * removed all files from root directory * removed all files from root directory * added current branch to workflow * fixed most broken import * fixed issues while renaming files * fixed oracle importer * fixed dbconverter * updated translations * made sub-folders for client * removed linter * removed linter folder * fixed oracle import * revert card_zone documentation * renamed db parser files name and deck_view imports * fixed dlg file issue * ran format file and fixed test file * fixed carddb test files * moved player folder in game * updated translations and format files * fixed peglib import * format cmake files * removing vcpkg to try to add it back later * tried fixing vcpkg file * renamed filter to filters and moved database parser to cards folder * reverted translation files * reverted oracle translated * Update cockatrice/src/dialogs/dlg_register.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * Update cockatrice/src/client/ui/window_main.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * removed empty line at file start * removed useless include from tab_supervisor.cpp * refactored cardzone.cpp, added doc and changed if to switch case * started moving every files into different folders * remove undercase to match with other files naming convention * refactored dialog files * ran format.sh * refactored client/tabs folder * refactored client folder * refactored carddbparser * refactored dialogs * removed all files from root directory * Create sonar-project.properties temporary file for lint * Create build.yml temporary file for lint * added current branch to workflow * fixed most broken import * fixed issues while renaming files * fixed oracle importer * fixed dbconverter * updated translations * made sub-folders for client * removed linter * removed linter folder * fixed oracle import * revert card_zone documentation * renamed db parser files name and deck_view imports * fixed dlg file issue * ran format file and fixed test file * fixed carddb test files * moved player folder in game * updated translations and format files * fixed peglib import * reverted translation files * format cmake files * removing vcpkg to try to add it back later * tried fixing vcpkg file * pre-updating of cockatrice changes * removed empty line at file start * reverted oracle translated * Update cockatrice/src/dialogs/dlg_register.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * Update cockatrice/src/client/ui/window_main.cpp Co-authored-by: tooomm <tooomm@users.noreply.github.com> * removed useless include from tab_supervisor.cpp --------- Co-authored-by: tooomm <tooomm@users.noreply.github.com>
This commit is contained in:
parent
d1e0f9dfc5
commit
fa999880ee
261 changed files with 735 additions and 729 deletions
110
cockatrice/src/server/handle_public_servers.cpp
Normal file
110
cockatrice/src/server/handle_public_servers.cpp
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
#include "handle_public_servers.h"
|
||||
|
||||
#include "../settings/cache_settings.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QMessageBox>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkReply>
|
||||
#include <QUrl>
|
||||
|
||||
#define PUBLIC_SERVERS_JSON "https://cockatrice.github.io/public-servers.json"
|
||||
|
||||
HandlePublicServers::HandlePublicServers(QObject *parent)
|
||||
: QObject(parent), nam(new QNetworkAccessManager(this)), reply(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
void HandlePublicServers::downloadPublicServers()
|
||||
{
|
||||
QUrl url(QString(PUBLIC_SERVERS_JSON));
|
||||
reply = nam->get(QNetworkRequest(url));
|
||||
connect(reply, SIGNAL(finished()), this, SLOT(actFinishParsingDownloadedData()));
|
||||
}
|
||||
|
||||
void HandlePublicServers::actFinishParsingDownloadedData()
|
||||
{
|
||||
reply = dynamic_cast<QNetworkReply *>(sender());
|
||||
QNetworkReply::NetworkError errorCode = reply->error();
|
||||
|
||||
if (errorCode == QNetworkReply::NoError) {
|
||||
// Get current saved hosts
|
||||
UserConnection_Information uci;
|
||||
savedHostList = uci.getServerInfo();
|
||||
|
||||
// Downloaded data from GitHub
|
||||
QJsonParseError parseError{};
|
||||
QJsonDocument jsonResponse = QJsonDocument::fromJson(reply->readAll(), &parseError);
|
||||
if (parseError.error == QJsonParseError::NoError) {
|
||||
QVariantMap jsonMap = jsonResponse.toVariant().toMap();
|
||||
updateServerINISettings(jsonMap);
|
||||
} else {
|
||||
qDebug() << "[PUBLIC SERVER HANDLER]"
|
||||
<< "JSON Parsing Error:" << parseError.errorString();
|
||||
emit sigPublicServersDownloadedUnsuccessfully(errorCode);
|
||||
}
|
||||
} else {
|
||||
qDebug() << "[PUBLIC SERVER HANDLER]"
|
||||
<< "Error Downloading Public Servers" << errorCode;
|
||||
emit sigPublicServersDownloadedUnsuccessfully(errorCode);
|
||||
}
|
||||
|
||||
reply->deleteLater(); // After an emit() occurs, this object will be deleted
|
||||
}
|
||||
|
||||
void HandlePublicServers::updateServerINISettings(QMap<QString, QVariant> jsonMap)
|
||||
{
|
||||
// Servers available
|
||||
auto publicServersJSONList = jsonMap["servers"].toList();
|
||||
|
||||
for (const auto &server : publicServersJSONList) {
|
||||
// Data inside one server at a time
|
||||
// server: [{ ... }, ..., { ... }]
|
||||
const auto serverMap = server.toMap();
|
||||
|
||||
QString serverAddress = serverMap["host"].toString();
|
||||
|
||||
if (serverMap["isInactive"].toBool()) {
|
||||
publicServersToRemove.append(serverAddress);
|
||||
continue;
|
||||
}
|
||||
|
||||
QString serverName = serverMap["name"].toString();
|
||||
QString serverPort = serverMap["port"].toString();
|
||||
QString serverSite = serverMap["site"].toString();
|
||||
|
||||
if (serverMap.contains("websocketPort")) {
|
||||
serverPort = serverMap["websocketPort"].toString();
|
||||
}
|
||||
|
||||
bool serverFound = false;
|
||||
for (const auto &iter : savedHostList) {
|
||||
// If the URL/IP matches
|
||||
if (iter.second.getServer() == serverAddress) {
|
||||
serverFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (serverFound) {
|
||||
SettingsCache::instance().servers().updateExistingServerWithoutLoss(serverName, serverAddress, serverPort,
|
||||
serverSite);
|
||||
} else {
|
||||
SettingsCache::instance().servers().addNewServer(serverName, serverAddress, serverPort, "", "", false,
|
||||
serverSite);
|
||||
}
|
||||
}
|
||||
|
||||
// If a server was removed from the public list,
|
||||
// we will delete it from the local system.
|
||||
// Will not delete "unofficial" servers
|
||||
for (const auto &pair : savedHostList) {
|
||||
QString serverAddr = pair.first;
|
||||
|
||||
if (publicServersToRemove.indexOf(serverAddr) != -1) {
|
||||
SettingsCache::instance().servers().removeServer(serverAddr);
|
||||
}
|
||||
}
|
||||
|
||||
emit sigPublicServersDownloadedSuccessfully();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue