remove duplicate code from net folder

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2024-07-07 02:49:27 +03:00
parent 330c95e55b
commit c07260e836
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
28 changed files with 72 additions and 189 deletions

View File

@ -138,7 +138,6 @@ set(NET_SOURCES
net/HeaderProxy.h net/HeaderProxy.h
net/RawHeaderProxy.h net/RawHeaderProxy.h
net/ApiHeaderProxy.h net/ApiHeaderProxy.h
net/StaticHeaderProxy.h
net/ApiDownload.h net/ApiDownload.h
net/ApiDownload.cpp net/ApiDownload.cpp
net/ApiUpload.cpp net/ApiUpload.cpp

View File

@ -10,7 +10,7 @@
#include "Logging.h" #include "Logging.h"
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/Download.h" #include "net/Download.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
#include "tasks/Task.h" #include "tasks/Task.h"
EntitlementsStep::EntitlementsStep(AccountData* data) : AuthStep(data) {} EntitlementsStep::EntitlementsStep(AccountData* data) : AuthStep(data) {}
@ -32,7 +32,7 @@ void EntitlementsStep::perform()
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Download::makeByteArray(url, m_response); m_task = Net::Download::makeByteArray(url, m_response);
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &EntitlementsStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &EntitlementsStep::onRequestDone);

View File

@ -7,7 +7,7 @@
#include "Logging.h" #include "Logging.h"
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h" #include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
#include "net/Upload.h" #include "net/Upload.h"
LauncherLoginStep::LauncherLoginStep(AccountData* data) : AuthStep(data) {} LauncherLoginStep::LauncherLoginStep(AccountData* data) : AuthStep(data) {}
@ -38,7 +38,7 @@ void LauncherLoginStep::perform()
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Upload::makeByteArray(url, m_response, requestBody.toUtf8()); m_task = Net::Upload::makeByteArray(url, m_response, requestBody.toUtf8());
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &LauncherLoginStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &LauncherLoginStep::onRequestDone);

View File

@ -40,7 +40,7 @@
#include "Application.h" #include "Application.h"
#include "Json.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 // https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-device-code
MSADeviceCodeStep::MSADeviceCodeStep(AccountData* data) : AuthStep(data) MSADeviceCodeStep::MSADeviceCodeStep(AccountData* data) : AuthStep(data)
@ -68,7 +68,7 @@ void MSADeviceCodeStep::perform()
}; };
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Upload::makeByteArray(url, m_response, payload); m_task = Net::Upload::makeByteArray(url, m_response, payload);
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::deviceAutorizationFinished); connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::deviceAutorizationFinished);
@ -180,7 +180,7 @@ void MSADeviceCodeStep::authenticateUser()
}; };
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Upload::makeByteArray(url, m_response, payload); m_task = Net::Upload::makeByteArray(url, m_response, payload);
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::authenticationFinished); connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::authenticationFinished);

View File

@ -5,7 +5,7 @@
#include "Application.h" #include "Application.h"
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h" #include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
MinecraftProfileStep::MinecraftProfileStep(AccountData* data) : AuthStep(data) {} MinecraftProfileStep::MinecraftProfileStep(AccountData* data) : AuthStep(data) {}
@ -23,7 +23,7 @@ void MinecraftProfileStep::perform()
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Download::makeByteArray(url, m_response); m_task = Net::Download::makeByteArray(url, m_response);
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &MinecraftProfileStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &MinecraftProfileStep::onRequestDone);

View File

@ -8,7 +8,7 @@
#include "Logging.h" #include "Logging.h"
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h" #include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
#include "net/Upload.h" #include "net/Upload.h"
XboxAuthorizationStep::XboxAuthorizationStep(AccountData* data, Token* token, QString relyingParty, QString authorizationKind) XboxAuthorizationStep::XboxAuthorizationStep(AccountData* data, Token* token, QString relyingParty, QString authorizationKind)
@ -43,7 +43,7 @@ void XboxAuthorizationStep::perform()
}; };
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8()); m_task = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8());
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &XboxAuthorizationStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &XboxAuthorizationStep::onRequestDone);

View File

@ -6,7 +6,7 @@
#include "Application.h" #include "Application.h"
#include "Logging.h" #include "Logging.h"
#include "net/NetUtils.h" #include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
XboxProfileStep::XboxProfileStep(AccountData* data) : AuthStep(data) {} XboxProfileStep::XboxProfileStep(AccountData* data) : AuthStep(data) {}
@ -35,7 +35,7 @@ void XboxProfileStep::perform()
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Download::makeByteArray(url, m_response); m_task = Net::Download::makeByteArray(url, m_response);
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &XboxProfileStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &XboxProfileStep::onRequestDone);

View File

@ -5,7 +5,7 @@
#include "Application.h" #include "Application.h"
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/NetUtils.h" #include "net/NetUtils.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
XboxUserStep::XboxUserStep(AccountData* data) : AuthStep(data) {} XboxUserStep::XboxUserStep(AccountData* data) : AuthStep(data) {}
@ -39,7 +39,7 @@ void XboxUserStep::perform()
}; };
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
m_task = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8()); m_task = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8());
m_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_task.get(), &Task::finished, this, &XboxUserStep::onRequestDone); connect(m_task.get(), &Task::finished, this, &XboxUserStep::onRequestDone);

View File

@ -39,9 +39,9 @@
#include <memory> #include <memory>
#include "net/ByteArraySink.h" #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; logCat = taskMCSkinsLogC;
} }
@ -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) 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->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/capes/active");
up->setObjectName(QString("BYTES:") + up->m_url.toString()); up->setObjectName(QString("BYTES:") + up->m_url.toString());
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>())); 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; return up;
} }

View File

@ -24,16 +24,14 @@ class CapeChange : public Net::NetRequest {
Q_OBJECT Q_OBJECT
public: public:
using Ptr = shared_qobject_ptr<CapeChange>; using Ptr = shared_qobject_ptr<CapeChange>;
CapeChange(QString token, QString capeId); CapeChange(QString capeId);
virtual ~CapeChange() = default; virtual ~CapeChange() = default;
static CapeChange::Ptr make(QString token, QString capeId); static CapeChange::Ptr make(QString token, QString capeId);
void init() override;
protected: protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override; virtual QNetworkReply* getReply(QNetworkRequest&) override;
private: private:
QString m_capeId; QString m_capeId;
QString m_token;
}; };

View File

@ -37,9 +37,9 @@
#include "SkinDelete.h" #include "SkinDelete.h"
#include "net/ByteArraySink.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; logCat = taskMCSkinsLogC;
} }
@ -50,17 +50,13 @@ QNetworkReply* SkinDelete::getReply(QNetworkRequest& request)
return m_network->deleteResource(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) 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_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins/active");
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>())); 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; return up;
} }

View File

@ -24,15 +24,11 @@ class SkinDelete : public Net::NetRequest {
Q_OBJECT Q_OBJECT
public: public:
using Ptr = shared_qobject_ptr<SkinDelete>; using Ptr = shared_qobject_ptr<SkinDelete>;
SkinDelete(QString token); SkinDelete();
virtual ~SkinDelete() = default; virtual ~SkinDelete() = default;
static SkinDelete::Ptr make(QString token); static SkinDelete::Ptr make(QString token);
void init() override;
protected: protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override; virtual QNetworkReply* getReply(QNetworkRequest&) override;
private:
QString m_token;
}; };

View File

@ -40,9 +40,9 @@
#include "FileSystem.h" #include "FileSystem.h"
#include "net/ByteArraySink.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; logCat = taskMCSkinsLogC;
} }
@ -67,18 +67,14 @@ QNetworkReply* SkinUpload::getReply(QNetworkRequest& request)
return m_network->post(request, multiPart); 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) 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->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins");
up->setObjectName(QString("BYTES:") + up->m_url.toString()); up->setObjectName(QString("BYTES:") + up->m_url.toString());
up->m_sink.reset(new Net::ByteArraySink(std::make_shared<QByteArray>())); 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; return up;
} }

View File

@ -26,17 +26,15 @@ class SkinUpload : public Net::NetRequest {
using Ptr = shared_qobject_ptr<SkinUpload>; using Ptr = shared_qobject_ptr<SkinUpload>;
// Note this class takes ownership of the file. // Note this class takes ownership of the file.
SkinUpload(QString token, QString path, QString variant); SkinUpload(QString path, QString variant);
virtual ~SkinUpload() = default; virtual ~SkinUpload() = default;
static SkinUpload::Ptr make(QString token, QString path, QString variant); static SkinUpload::Ptr make(QString token, QString path, QString variant);
void init() override;
protected: protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override; virtual QNetworkReply* getReply(QNetworkRequest&) override;
private: private:
QString m_token;
QString m_path; QString m_path;
QString m_variant; QString m_variant;
}; };

View File

@ -103,7 +103,7 @@ void Flame::FileResolvingTask::netJobFinished()
auto url = QString("https://api.modrinth.com/v2/version_file/%1?algorithm=sha1").arg(hash); auto url = QString("https://api.modrinth.com/v2/version_file/%1?algorithm=sha1").arg(hash);
auto output = std::make_shared<QByteArray>(); auto output = std::make_shared<QByteArray>();
auto dl = Net::ApiDownload::makeByteArray(QUrl(url), output); 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); m_checkJob->addNetAction(dl);
blockedProjects.insert(&out, output); blockedProjects.insert(&out, output);
@ -175,7 +175,7 @@ void Flame::FileResolvingTask::modrinthCheckFinished()
auto url = QString("https://api.curseforge.com/v1/mods/%1").arg(projectId); auto url = QString("https://api.curseforge.com/v1/mods/%1").arg(projectId);
auto dl = Net::ApiDownload::makeByteArray(url, output); auto dl = Net::ApiDownload::makeByteArray(url, output);
qDebug() << "Fetching url slug for file:" << mod->fileName; 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 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 json = QJsonDocument::fromJson(*output);
auto base = auto base =

View File

@ -18,48 +18,29 @@
*/ */
#include "net/ApiDownload.h" #include "net/ApiDownload.h"
#include "ByteArraySink.h" #include "net/ApiHeaderProxy.h"
#include "ChecksumValidator.h"
#include "MetaCacheSink.h"
namespace Net { 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>(); auto dl = Download::makeCached(url, entry, options);
dl->m_url = url; dl->addHeaderProxy(new ApiHeaderProxy());
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);
return dl; 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>(); auto dl = Download::makeByteArray(url, output, options);
dl->m_url = url; dl->addHeaderProxy(new ApiHeaderProxy());
dl->setObjectName(QString("BYTES:") + url.toString());
dl->m_options = options;
dl->m_sink.reset(new ByteArraySink(output));
return dl; 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>(); auto dl = Download::makeFile(url, path, options);
dl->m_url = url; dl->addHeaderProxy(new ApiHeaderProxy());
dl->setObjectName(QString("FILE:") + url.toString());
dl->m_options = options;
dl->m_sink.reset(new FileSink(path));
return dl; return dl;
} }
void ApiDownload::init()
{
qDebug() << "Setting up api download";
auto api_headers = new ApiHeaderProxy();
addHeaderProxy(api_headers);
}
} // namespace Net } // namespace Net

View File

@ -19,20 +19,14 @@
#pragma once #pragma once
#include "ApiHeaderProxy.h"
#include "Download.h" #include "Download.h"
namespace Net { namespace Net {
class ApiDownload : public Download { namespace ApiDownload {
public: Download::Ptr makeCached(QUrl url, MetaEntryPtr entry, Download::Options options = Download::Option::NoOptions);
virtual ~ApiDownload() = default; Download::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Download::Options options = Download::Option::NoOptions);
Download::Ptr makeFile(QUrl url, QString path, Download::Options options = Download::Option::NoOptions);
static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr; }; // namespace ApiDownload
static auto makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options = Option::NoOptions) -> Download::Ptr;
static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr;
void init() override;
};
} // namespace Net } // namespace Net

View File

@ -18,23 +18,15 @@
*/ */
#include "net/ApiUpload.h" #include "net/ApiUpload.h"
#include "ByteArraySink.h" #include "net/ApiHeaderProxy.h"
namespace Net { namespace Net {
Upload::Ptr ApiUpload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data) Upload::Ptr ApiUpload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data)
{ {
auto up = makeShared<ApiUpload>(); auto up = Upload::makeByteArray(url, output, m_post_data);
up->m_url = std::move(url); up->addHeaderProxy(new ApiHeaderProxy());
up->m_sink.reset(new ByteArraySink(output));
up->m_post_data = std::move(m_post_data);
return up; return up;
} }
void ApiUpload::init()
{
qDebug() << "Setting up api upload";
auto api_headers = new ApiHeaderProxy();
addHeaderProxy(api_headers);
}
} // namespace Net } // namespace Net

View File

@ -19,18 +19,12 @@
#pragma once #pragma once
#include "ApiHeaderProxy.h"
#include "Upload.h" #include "Upload.h"
namespace Net { namespace Net {
class ApiUpload : public Upload { namespace ApiUpload {
public: Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data);
virtual ~ApiUpload() = default;
static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data);
void init() override;
}; };
} // namespace Net } // namespace Net

View File

@ -62,8 +62,6 @@ void NetRequest::addValidator(Validator* v)
void NetRequest::executeTask() void NetRequest::executeTask()
{ {
init();
setStatus(tr("Requesting %1").arg(StringUtils::truncateUrlHumanFriendly(m_url, 80))); setStatus(tr("Requesting %1").arg(StringUtils::truncateUrlHumanFriendly(m_url, 80)));
if (getState() == Task::State::AbortedByUser) { if (getState() == Task::State::AbortedByUser) {

View File

@ -72,8 +72,6 @@ class NetRequest : public Task {
void setNetwork(shared_qobject_ptr<QNetworkAccessManager> network) { m_network = network; } void setNetwork(shared_qobject_ptr<QNetworkAccessManager> network) { m_network = network; }
void addHeaderProxy(Net::HeaderProxy* proxy) { m_headerProxies.push_back(std::shared_ptr<Net::HeaderProxy>(proxy)); } void addHeaderProxy(Net::HeaderProxy* proxy) { m_headerProxies.push_back(std::shared_ptr<Net::HeaderProxy>(proxy)); }
virtual void init() {}
QUrl url() const; QUrl url() const;
void setUrl(QUrl url) { m_url = url; } void setUrl(QUrl url) { m_url = url; }
int replyStatusCode() const; int replyStatusCode() const;

View File

@ -4,6 +4,7 @@
* Copyright (c) 2022 flowln <flowlnlnln@gmail.com> * Copyright (c) 2022 flowln <flowlnlnln@gmail.com>
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2023 Rachel Powers <508861+Ryex@users.noreply.github.com> * Copyright (C) 2023 Rachel Powers <508861+Ryex@users.noreply.github.com>
* Copyright (c) 2023 Trial97 <alexandru.tripon97@gmail.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -27,7 +28,7 @@ namespace Net {
class RawHeaderProxy : public HeaderProxy { class RawHeaderProxy : public HeaderProxy {
public: public:
RawHeaderProxy() : HeaderProxy() {} RawHeaderProxy(QList<HeaderPair> headers = {}) : HeaderProxy(), m_headers(headers) {};
virtual ~RawHeaderProxy() = default; virtual ~RawHeaderProxy() = default;
public: public:
@ -36,6 +37,7 @@ class RawHeaderProxy : public HeaderProxy {
void addHeader(const HeaderPair& header) { m_headers.append(header); } void addHeader(const HeaderPair& header) { m_headers.append(header); }
void addHeader(const QByteArray& headerName, const QByteArray& headerValue) { m_headers.append({ headerName, headerValue }); } void addHeader(const QByteArray& headerName, const QByteArray& headerValue) { m_headers.append({ headerName, headerValue }); }
void addHeaders(const QList<HeaderPair>& headers) { m_headers.append(headers); } void addHeaders(const QList<HeaderPair>& headers) { m_headers.append(headers); }
void setHeaders(QList<HeaderPair> headers) { m_headers = headers; };
private: private:
QList<HeaderPair> m_headers; QList<HeaderPair> m_headers;

View File

@ -1,39 +0,0 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (c) 2023 Trial97 <alexandru.tripon97@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include "net/HeaderProxy.h"
namespace Net {
class StaticHeaderProxy : public HeaderProxy {
public:
StaticHeaderProxy(QList<HeaderPair> hdrs = {}) : HeaderProxy(), m_hdrs(hdrs) {};
virtual ~StaticHeaderProxy() = default;
public:
virtual QList<HeaderPair> headers(const QNetworkRequest&) const override { return m_hdrs; };
void setHeaders(QList<HeaderPair> hdrs) { m_hdrs = hdrs; };
private:
QList<HeaderPair> m_hdrs;
};
} // namespace Net

View File

@ -46,7 +46,7 @@
#include <memory> #include <memory>
#include "BuildConfig.h" #include "BuildConfig.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
Net::NetRequest::Ptr ImgurAlbumCreation::make(std::shared_ptr<ImgurAlbumCreation::Result> output, QList<ScreenShot::Ptr> screenshots) Net::NetRequest::Ptr ImgurAlbumCreation::make(std::shared_ptr<ImgurAlbumCreation::Result> output, QList<ScreenShot::Ptr> screenshots)
{ {
@ -54,6 +54,10 @@ Net::NetRequest::Ptr ImgurAlbumCreation::make(std::shared_ptr<ImgurAlbumCreation
up->m_url = BuildConfig.IMGUR_BASE_URL + "album"; up->m_url = BuildConfig.IMGUR_BASE_URL + "album";
up->m_sink.reset(new Sink(output)); up->m_sink.reset(new Sink(output));
up->m_screenshots = screenshots; up->m_screenshots = screenshots;
up->addHeaderProxy(new Net::RawHeaderProxy(
QList<Net::HeaderPair>{ { "Content-Type", "application/x-www-form-urlencoded" },
{ "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() },
{ "Accept", "application/json" } }));
return up; return up;
} }
@ -67,16 +71,6 @@ QNetworkReply* ImgurAlbumCreation::getReply(QNetworkRequest& request)
return m_network->post(request, data); return m_network->post(request, data);
}; };
void ImgurAlbumCreation::init()
{
qDebug() << "Setting up imgur upload";
auto api_headers = new Net::StaticHeaderProxy(
QList<Net::HeaderPair>{ { "Content-Type", "application/x-www-form-urlencoded" },
{ "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() },
{ "Accept", "application/json" } });
addHeaderProxy(api_headers);
}
auto ImgurAlbumCreation::Sink::init(QNetworkRequest& request) -> Task::State auto ImgurAlbumCreation::Sink::init(QNetworkRequest& request) -> Task::State
{ {
m_output.clear(); m_output.clear();

View File

@ -67,8 +67,6 @@ class ImgurAlbumCreation : public Net::NetRequest {
static NetRequest::Ptr make(std::shared_ptr<Result> output, QList<ScreenShot::Ptr> screenshots); static NetRequest::Ptr make(std::shared_ptr<Result> output, QList<ScreenShot::Ptr> screenshots);
QNetworkReply* getReply(QNetworkRequest& request) override; QNetworkReply* getReply(QNetworkRequest& request) override;
void init() override;
private: private:
QList<ScreenShot::Ptr> m_screenshots; QList<ScreenShot::Ptr> m_screenshots;
}; };

View File

@ -36,7 +36,7 @@
#include "ImgurUpload.h" #include "ImgurUpload.h"
#include "BuildConfig.h" #include "BuildConfig.h"
#include "net/StaticHeaderProxy.h" #include "net/RawHeaderProxy.h"
#include <QDebug> #include <QDebug>
#include <QFile> #include <QFile>
@ -47,14 +47,6 @@
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QUrl> #include <QUrl>
void ImgurUpload::init()
{
qDebug() << "Setting up imgur upload";
auto api_headers = new Net::StaticHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() }, { "Accept", "application/json" } });
addHeaderProxy(api_headers);
}
QNetworkReply* ImgurUpload::getReply(QNetworkRequest& request) QNetworkReply* ImgurUpload::getReply(QNetworkRequest& request)
{ {
auto file = new QFile(m_fileInfo.absoluteFilePath(), this); auto file = new QFile(m_fileInfo.absoluteFilePath(), this);
@ -125,5 +117,7 @@ Net::NetRequest::Ptr ImgurUpload::make(ScreenShot::Ptr m_shot)
auto up = makeShared<ImgurUpload>(m_shot->m_file); auto up = makeShared<ImgurUpload>(m_shot->m_file);
up->m_url = std::move(BuildConfig.IMGUR_BASE_URL + "image"); up->m_url = std::move(BuildConfig.IMGUR_BASE_URL + "image");
up->m_sink.reset(new Sink(m_shot)); up->m_sink.reset(new Sink(m_shot));
up->addHeaderProxy(new Net::RawHeaderProxy(QList<Net::HeaderPair>{
{ "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() }, { "Accept", "application/json" } }));
return up; return up;
} }

View File

@ -62,8 +62,6 @@ class ImgurUpload : public Net::NetRequest {
static NetRequest::Ptr make(ScreenShot::Ptr m_shot); static NetRequest::Ptr make(ScreenShot::Ptr m_shot);
void init() override;
private: private:
virtual QNetworkReply* getReply(QNetworkRequest&) override; virtual QNetworkReply* getReply(QNetworkRequest&) override;
const QFileInfo m_fileInfo; const QFileInfo m_fileInfo;

View File

@ -34,6 +34,7 @@
*/ */
#include "ProfileSetupDialog.h" #include "ProfileSetupDialog.h"
#include "net/RawHeaderProxy.h"
#include "ui_ProfileSetupDialog.h" #include "ui_ProfileSetupDialog.h"
#include <QAction> #include <QAction>
@ -46,7 +47,6 @@
#include <Application.h> #include <Application.h>
#include "minecraft/auth/Parsers.h" #include "minecraft/auth/Parsers.h"
#include "net/StaticHeaderProxy.h"
#include "net/Upload.h" #include "net/Upload.h"
ProfileSetupDialog::ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget* parent) ProfileSetupDialog::ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidget* parent)
@ -160,7 +160,7 @@ void ProfileSetupDialog::checkName(const QString& name)
if (m_check_task) if (m_check_task)
disconnect(m_check_task.get(), nullptr, this, nullptr); disconnect(m_check_task.get(), nullptr, this, nullptr);
m_check_task = Net::Download::makeByteArray(url, m_check_response); m_check_task = Net::Download::makeByteArray(url, m_check_response);
m_check_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_check_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_check_task.get(), &Task::finished, this, &ProfileSetupDialog::checkFinished); connect(m_check_task.get(), &Task::finished, this, &ProfileSetupDialog::checkFinished);
@ -204,7 +204,7 @@ void ProfileSetupDialog::setupProfile(const QString& profileName)
m_profile_response.reset(new QByteArray()); m_profile_response.reset(new QByteArray());
m_profile_task = Net::Upload::makeByteArray(url, m_profile_response, payloadTemplate.arg(profileName).toUtf8()); m_profile_task = Net::Upload::makeByteArray(url, m_profile_response, payloadTemplate.arg(profileName).toUtf8());
m_profile_task->addHeaderProxy(new Net::StaticHeaderProxy(headers)); m_profile_task->addHeaderProxy(new Net::RawHeaderProxy(headers));
connect(m_profile_task.get(), &Task::finished, this, &ProfileSetupDialog::setupProfileFinished); connect(m_profile_task.get(), &Task::finished, this, &ProfileSetupDialog::setupProfileFinished);