2023-08-05 22:14:05 -04:00
|
|
|
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2022-09-05 15:43:15 -04:00
|
|
|
#include "steamapi.h"
|
2025-05-04 16:57:29 -04:00
|
|
|
#include "encryptedarg.h"
|
2023-07-30 08:49:34 -04:00
|
|
|
#include "launchercore.h"
|
|
|
|
|
2025-05-04 16:57:29 -04:00
|
|
|
#include <QCoroNetwork>
|
|
|
|
|
2023-10-11 13:29:32 -04:00
|
|
|
SteamAPI::SteamAPI(QObject *parent)
|
2023-07-30 08:49:34 -04:00
|
|
|
: QObject(parent)
|
|
|
|
{
|
2023-10-08 17:55:13 -04:00
|
|
|
}
|
|
|
|
|
2025-05-04 19:18:29 -04:00
|
|
|
QCoro::Task<> SteamAPI::initialize(const bool freeTrial)
|
2025-05-04 16:57:29 -04:00
|
|
|
{
|
2025-05-04 19:18:29 -04:00
|
|
|
QUrlQuery query;
|
|
|
|
query.addQueryItem(QStringLiteral("ft"), QString::number(freeTrial ? 1 : 0));
|
|
|
|
|
2025-05-04 16:57:29 -04:00
|
|
|
QUrl url;
|
|
|
|
url.setScheme(QStringLiteral("http"));
|
|
|
|
url.setHost(QStringLiteral("127.0.0.1"));
|
|
|
|
url.setPort(50481);
|
|
|
|
url.setPath(QStringLiteral("/init"));
|
2025-05-04 19:18:29 -04:00
|
|
|
url.setQuery(query);
|
2025-05-04 16:57:29 -04:00
|
|
|
|
|
|
|
Q_UNUSED(co_await m_qnam.post(QNetworkRequest(url), QByteArray{}))
|
|
|
|
}
|
|
|
|
|
|
|
|
QCoro::Task<> SteamAPI::shutdown()
|
2023-07-30 08:49:34 -04:00
|
|
|
{
|
2025-05-04 16:57:29 -04:00
|
|
|
QUrl url;
|
|
|
|
url.setScheme(QStringLiteral("http"));
|
|
|
|
url.setHost(QStringLiteral("127.0.0.1"));
|
|
|
|
url.setPort(50481);
|
|
|
|
url.setPath(QStringLiteral("/shutdown"));
|
|
|
|
|
|
|
|
Q_UNUSED(co_await m_qnam.post(QNetworkRequest(url), QByteArray{}))
|
2022-09-06 11:00:53 -04:00
|
|
|
}
|
|
|
|
|
2025-05-04 16:57:29 -04:00
|
|
|
QCoro::Task<std::pair<QString, int>> SteamAPI::getTicket()
|
2023-07-30 08:49:34 -04:00
|
|
|
{
|
2025-05-04 16:57:29 -04:00
|
|
|
QUrl url;
|
|
|
|
url.setScheme(QStringLiteral("http"));
|
|
|
|
url.setHost(QStringLiteral("127.0.0.1"));
|
|
|
|
url.setPort(50481);
|
|
|
|
url.setPath(QStringLiteral("/ticket"));
|
|
|
|
|
|
|
|
const auto reply = co_await m_qnam.get(QNetworkRequest(url));
|
|
|
|
const auto ticketBytes = reply->readAll();
|
|
|
|
|
|
|
|
const QJsonDocument document = QJsonDocument::fromJson(ticketBytes);
|
|
|
|
|
|
|
|
co_return encryptSteamTicket(document[QStringLiteral("ticket")].toString(), document[QStringLiteral("time")].toInteger());
|
2022-09-06 11:00:53 -04:00
|
|
|
}
|