Skip to content

Commit

Permalink
Merge pull request PrismLauncher#2617 from Trial97/clean_net
Browse files Browse the repository at this point in the history
remove duplicate code from net folder
  • Loading branch information
Trial97 authored Aug 5, 2024
2 parents e4967f8 + 4928706 commit 9d684dc
Show file tree
Hide file tree
Showing 29 changed files with 73 additions and 189 deletions.
1 change: 0 additions & 1 deletion launcher/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,6 @@ set(NET_SOURCES
net/HeaderProxy.h
net/RawHeaderProxy.h
net/ApiHeaderProxy.h
net/StaticHeaderProxy.h
net/ApiDownload.h
net/ApiDownload.cpp
net/ApiUpload.cpp
Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/EntitlementsStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "minecraft/auth/Parsers.h"
#include "net/Download.h"
#include "net/NetJob.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"
#include "tasks/Task.h"

EntitlementsStep::EntitlementsStep(AccountData* data) : AuthStep(data) {}
Expand All @@ -33,7 +33,7 @@ void EntitlementsStep::perform()

m_response.reset(new QByteArray());
m_request = Net::Download::makeByteArray(url, m_response);
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("EntitlementsStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/LauncherLoginStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include "Logging.h"
#include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"
#include "net/Upload.h"

LauncherLoginStep::LauncherLoginStep(AccountData* data) : AuthStep(data) {}
Expand Down Expand Up @@ -38,7 +38,7 @@ void LauncherLoginStep::perform()

m_response.reset(new QByteArray());
m_request = Net::Upload::makeByteArray(url, m_response, requestBody.toUtf8());
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("LauncherLoginStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
8 changes: 3 additions & 5 deletions launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

#include "Application.h"
#include "Json.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

// https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-device-code
MSADeviceCodeStep::MSADeviceCodeStep(AccountData* data) : AuthStep(data)
Expand Down Expand Up @@ -68,14 +68,12 @@ void MSADeviceCodeStep::perform()
};
m_response.reset(new QByteArray());
m_request = Net::Upload::makeByteArray(url, m_response, payload);
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("MSADeviceCodeStep", APPLICATION->network()));
m_task->setAskRetry(false);
m_task->addNetAction(m_request);

connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::deviceAutorizationFinished);

m_task->start();
}

Expand Down Expand Up @@ -183,7 +181,7 @@ void MSADeviceCodeStep::authenticateUser()
};
m_response.reset(new QByteArray());
m_request = Net::Upload::makeByteArray(url, m_response, payload);
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

connect(m_request.get(), &Task::finished, this, &MSADeviceCodeStep::authenticationFinished);

Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/MinecraftProfileStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include "Application.h"
#include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

MinecraftProfileStep::MinecraftProfileStep(AccountData* data) : AuthStep(data) {}

Expand All @@ -23,7 +23,7 @@ void MinecraftProfileStep::perform()

m_response.reset(new QByteArray());
m_request = Net::Download::makeByteArray(url, m_response);
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("MinecraftProfileStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "Logging.h"
#include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"
#include "net/Upload.h"

XboxAuthorizationStep::XboxAuthorizationStep(AccountData* data, Token* token, QString relyingParty, QString authorizationKind)
Expand Down Expand Up @@ -43,7 +43,7 @@ void XboxAuthorizationStep::perform()
};
m_response.reset(new QByteArray());
m_request = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8());
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("XboxAuthorizationStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/XboxProfileStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "Application.h"
#include "Logging.h"
#include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

XboxProfileStep::XboxProfileStep(AccountData* data) : AuthStep(data) {}

Expand Down Expand Up @@ -35,7 +35,7 @@ void XboxProfileStep::perform()

m_response.reset(new QByteArray());
m_request = Net::Download::makeByteArray(url, m_response);
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("XboxProfileStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
4 changes: 2 additions & 2 deletions launcher/minecraft/auth/steps/XboxUserStep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include "Application.h"
#include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

XboxUserStep::XboxUserStep(AccountData* data) : AuthStep(data) {}

Expand Down Expand Up @@ -39,7 +39,7 @@ void XboxUserStep::perform()
};
m_response.reset(new QByteArray());
m_request = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8());
m_request->addHeaderProxy(new Net::StaticHeaderProxy(headers));
m_request->addHeaderProxy(new Net::RawHeaderProxy(headers));

m_task.reset(new NetJob("XboxUserStep", APPLICATION->network()));
m_task->setAskRetry(false);
Expand Down
16 changes: 6 additions & 10 deletions launcher/minecraft/skins/CapeChange.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
#include <memory>

#include "net/ByteArraySink.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

CapeChange::CapeChange(QString token, QString cape) : NetRequest(), m_capeId(cape), m_token(token)
CapeChange::CapeChange(QString cape) : NetRequest(), m_capeId(cape)
{
logCat = taskMCSkinsLogC;
}
Expand All @@ -57,18 +57,14 @@ QNetworkReply* CapeChange::getReply(QNetworkRequest& request)
}
}

void CapeChange::init()
{
addHeaderProxy(new Net::StaticHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(m_token).toLocal8Bit() },
}));
}

CapeChange::Ptr CapeChange::make(QString token, QString capeId)
{
auto up = makeShared<CapeChange>(token, capeId);
auto up = makeShared<CapeChange>(capeId);
up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/capes/active");
up->setObjectName(QString("BYTES:") + up->m_url.toString());
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>()));
up->addHeaderProxy(new Net::RawHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() },
}));
return up;
}
4 changes: 1 addition & 3 deletions launcher/minecraft/skins/CapeChange.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,14 @@ class CapeChange : public Net::NetRequest {
Q_OBJECT
public:
using Ptr = shared_qobject_ptr<CapeChange>;
CapeChange(QString token, QString capeId);
CapeChange(QString capeId);
virtual ~CapeChange() = default;

static CapeChange::Ptr make(QString token, QString capeId);
void init() override;

protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override;

private:
QString m_capeId;
QString m_token;
};
16 changes: 6 additions & 10 deletions launcher/minecraft/skins/SkinDelete.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
#include "SkinDelete.h"

#include "net/ByteArraySink.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

SkinDelete::SkinDelete(QString token) : NetRequest(), m_token(token)
SkinDelete::SkinDelete() : NetRequest()
{
logCat = taskMCSkinsLogC;
}
Expand All @@ -50,17 +50,13 @@ QNetworkReply* SkinDelete::getReply(QNetworkRequest& request)
return m_network->deleteResource(request);
}

void SkinDelete::init()
{
addHeaderProxy(new Net::StaticHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(m_token).toLocal8Bit() },
}));
}

SkinDelete::Ptr SkinDelete::make(QString token)
{
auto up = makeShared<SkinDelete>(token);
auto up = makeShared<SkinDelete>();
up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins/active");
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>()));
up->addHeaderProxy(new Net::RawHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() },
}));
return up;
}
6 changes: 1 addition & 5 deletions launcher/minecraft/skins/SkinDelete.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,11 @@ class SkinDelete : public Net::NetRequest {
Q_OBJECT
public:
using Ptr = shared_qobject_ptr<SkinDelete>;
SkinDelete(QString token);
SkinDelete();
virtual ~SkinDelete() = default;

static SkinDelete::Ptr make(QString token);
void init() override;

protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override;

private:
QString m_token;
};
16 changes: 6 additions & 10 deletions launcher/minecraft/skins/SkinUpload.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@

#include "FileSystem.h"
#include "net/ByteArraySink.h"
#include "net/StaticHeaderProxy.h"
#include "net/RawHeaderProxy.h"

SkinUpload::SkinUpload(QString token, QString path, QString variant) : NetRequest(), m_token(token), m_path(path), m_variant(variant)
SkinUpload::SkinUpload(QString path, QString variant) : NetRequest(), m_path(path), m_variant(variant)
{
logCat = taskMCSkinsLogC;
}
Expand All @@ -67,18 +67,14 @@ QNetworkReply* SkinUpload::getReply(QNetworkRequest& request)
return m_network->post(request, multiPart);
}

void SkinUpload::init()
{
addHeaderProxy(new Net::StaticHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(m_token).toLocal8Bit() },
}));
}

SkinUpload::Ptr SkinUpload::make(QString token, QString path, QString variant)
{
auto up = makeShared<SkinUpload>(token, path, variant);
auto up = makeShared<SkinUpload>(path, variant);
up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins");
up->setObjectName(QString("BYTES:") + up->m_url.toString());
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>()));
up->addHeaderProxy(new Net::RawHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() },
}));
return up;
}
4 changes: 1 addition & 3 deletions launcher/minecraft/skins/SkinUpload.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,15 @@ class SkinUpload : public Net::NetRequest {
using Ptr = shared_qobject_ptr<SkinUpload>;

// Note this class takes ownership of the file.
SkinUpload(QString token, QString path, QString variant);
SkinUpload(QString path, QString variant);
virtual ~SkinUpload() = default;

static SkinUpload::Ptr make(QString token, QString path, QString variant);
void init() override;

protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override;

private:
QString m_token;
QString m_path;
QString m_variant;
};
4 changes: 2 additions & 2 deletions launcher/modplatform/flame/FileResolvingTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ void Flame::FileResolvingTask::netJobFinished()
auto url = QString("https://api.modrinth.com/v2/version_file/%1?algorithm=sha1").arg(hash);
auto output = std::make_shared<QByteArray>();
auto dl = Net::ApiDownload::makeByteArray(QUrl(url), output);
QObject::connect(dl.get(), &Net::ApiDownload::succeeded, [&out]() { out.resolved = true; });
QObject::connect(dl.get(), &Task::succeeded, [&out]() { out.resolved = true; });

m_checkJob->addNetAction(dl);
blockedProjects.insert(&out, output);
Expand Down Expand Up @@ -176,7 +176,7 @@ void Flame::FileResolvingTask::modrinthCheckFinished()
auto url = QString("https://api.curseforge.com/v1/mods/%1").arg(projectId);
auto dl = Net::ApiDownload::makeByteArray(url, output);
qDebug() << "Fetching url slug for file:" << mod->fileName;
QObject::connect(dl.get(), &Net::ApiDownload::succeeded, [block, index, output]() {
QObject::connect(dl.get(), &Task::succeeded, [block, index, output]() {
auto mod = block->at(index); // use the shared_ptr so it is captured and only freed when we are done
auto json = QJsonDocument::fromJson(*output);
auto base =
Expand Down
1 change: 1 addition & 0 deletions launcher/modplatform/flame/FlameCheckUpdate.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "FlameCheckUpdate.h"
#include "Application.h"
#include "FlameAPI.h"
#include "FlameModIndex.h"

Expand Down
38 changes: 10 additions & 28 deletions launcher/net/ApiDownload.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,47 +18,29 @@
*/

#include "net/ApiDownload.h"
#include "ByteArraySink.h"
#include "ChecksumValidator.h"
#include "MetaCacheSink.h"
#include "net/ApiHeaderProxy.h"

namespace Net {

auto ApiDownload::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> Download::Ptr
Download::Ptr ApiDownload::makeCached(QUrl url, MetaEntryPtr entry, Download::Options options)
{
auto dl = makeShared<ApiDownload>();
dl->m_url = url;
dl->setObjectName(QString("CACHE:") + url.toString());
dl->m_options = options;
auto md5Node = new ChecksumValidator(QCryptographicHash::Md5);
auto cachedNode = new MetaCacheSink(entry, md5Node, options.testFlag(Option::MakeEternal));
dl->m_sink.reset(cachedNode);
auto dl = Download::makeCached(url, entry, options);
dl->addHeaderProxy(new ApiHeaderProxy());
return dl;
}

auto ApiDownload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options) -> Download::Ptr
Download::Ptr ApiDownload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Download::Options options)
{
auto dl = makeShared<ApiDownload>();
dl->m_url = url;
dl->setObjectName(QString("BYTES:") + url.toString());
dl->m_options = options;
dl->m_sink.reset(new ByteArraySink(output));
auto dl = Download::makeByteArray(url, output, options);
dl->addHeaderProxy(new ApiHeaderProxy());
return dl;
}

auto ApiDownload::makeFile(QUrl url, QString path, Options options) -> Download::Ptr
Download::Ptr ApiDownload::makeFile(QUrl url, QString path, Download::Options options)
{
auto dl = makeShared<ApiDownload>();
dl->m_url = url;
dl->setObjectName(QString("FILE:") + url.toString());
dl->m_options = options;
dl->m_sink.reset(new FileSink(path));
auto dl = Download::makeFile(url, path, options);
dl->addHeaderProxy(new ApiHeaderProxy());
return dl;
}

void ApiDownload::init()
{
auto api_headers = new ApiHeaderProxy();
addHeaderProxy(api_headers);
}
} // namespace Net
Loading

0 comments on commit 9d684dc

Please sign in to comment.