1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-25 13:57:45 +00:00
astra/launcher/core/src/sapphirelauncher.cpp

56 lines
2.2 KiB
C++
Raw Normal View History

2021-11-01 09:54:58 -04:00
#include "sapphirelauncher.h"
#include <QJsonDocument>
2022-08-15 11:14:37 -04:00
#include <QJsonObject>
2021-11-01 09:54:58 -04:00
#include <QMessageBox>
#include <QNetworkReply>
2022-08-15 11:14:37 -04:00
SapphireLauncher::SapphireLauncher(LauncherCore& window) : window(window), QObject(&window) {}
2021-11-01 09:54:58 -04:00
2022-09-05 17:26:26 -04:00
void SapphireLauncher::login(const QString& lobbyUrl, const LoginInformation& info) {
2022-08-15 11:14:37 -04:00
QJsonObject data{{"username", info.username}, {"pass", info.password}};
2021-11-01 09:54:58 -04:00
QUrl url(lobbyUrl + "/sapphire-api/lobby/login");
2021-11-01 09:54:58 -04:00
QNetworkRequest request(url);
2022-08-15 11:14:37 -04:00
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
2021-11-01 09:54:58 -04:00
auto reply = window.mgr->post(request, QJsonDocument(data).toJson(QJsonDocument::JsonFormat::Compact));
connect(reply, &QNetworkReply::finished, [&] {
2021-11-01 09:54:58 -04:00
QJsonDocument document = QJsonDocument::fromJson(reply->readAll());
2022-08-15 11:14:37 -04:00
if (!document.isEmpty()) {
2021-11-01 09:54:58 -04:00
LoginAuth auth;
auth.SID = document["sId"].toString();
auth.lobbyhost = document["lobbyHost"].toString();
auth.frontierHost = document["frontierHost"].toString();
auth.region = 3;
window.launchGame(*info.settings, auth);
2021-11-01 09:54:58 -04:00
} else {
2022-08-15 11:14:37 -04:00
auto messageBox =
new QMessageBox(QMessageBox::Icon::Critical, "Failed to Login", "Invalid username/password.");
2021-11-01 09:54:58 -04:00
messageBox->show();
}
});
}
2022-09-05 17:26:26 -04:00
void SapphireLauncher::registerAccount(const QString& lobbyUrl, const LoginInformation& info) {
2022-08-15 11:14:37 -04:00
QJsonObject data{{"username", info.username}, {"pass", info.password}};
QUrl url(lobbyUrl + "/sapphire-api/lobby/createAccount");
2021-11-01 09:54:58 -04:00
QNetworkRequest request(url);
2022-08-15 11:14:37 -04:00
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
2021-11-01 09:54:58 -04:00
auto reply = window.mgr->post(request, QJsonDocument(data).toJson(QJsonDocument::JsonFormat::Compact));
connect(reply, &QNetworkReply::finished, [&] {
2021-11-01 09:54:58 -04:00
QJsonDocument document = QJsonDocument::fromJson(reply->readAll());
LoginAuth auth;
auth.SID = document["sId"].toString();
auth.lobbyhost = document["lobbyHost"].toString();
auth.frontierHost = document["frontierHost"].toString();
auth.region = 3;
window.launchGame(*info.settings, auth);
2021-11-01 09:54:58 -04:00
});
}