made skin upload more generic

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2023-09-08 19:50:46 +03:00
parent 8c8e4329d7
commit 6ec1cf6e49
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
3 changed files with 10 additions and 10 deletions

View File

@ -42,7 +42,7 @@
#include "net/ByteArraySink.h" #include "net/ByteArraySink.h"
#include "net/StaticHeaderProxy.h" #include "net/StaticHeaderProxy.h"
SkinUpload::SkinUpload(QString token, SkinModel* skin) : NetRequest(), m_skin(skin), m_token(token) SkinUpload::SkinUpload(QString token, QString path, QString variant) : NetRequest(), m_token(token), m_path(path), m_variant(variant)
{ {
logCat = taskMCSkinsLogC; logCat = taskMCSkinsLogC;
} }
@ -55,11 +55,11 @@ QNetworkReply* SkinUpload::getReply(QNetworkRequest& request)
skin.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png")); skin.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png"));
skin.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"skin.png\"")); skin.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"skin.png\""));
skin.setBody(FS::read(m_skin->getPath())); skin.setBody(FS::read(m_path));
QHttpPart model; QHttpPart model;
model.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"variant\"")); model.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"variant\""));
model.setBody(m_skin->getModelString().toUtf8()); model.setBody(m_variant.toUtf8());
multiPart->append(skin); multiPart->append(skin);
multiPart->append(model); multiPart->append(model);
@ -74,9 +74,9 @@ void SkinUpload::init()
})); }));
} }
SkinUpload::Ptr SkinUpload::make(QString token, SkinModel* skin) SkinUpload::Ptr SkinUpload::make(QString token, QString path, QString variant)
{ {
auto up = makeShared<SkinUpload>(token, skin); auto up = makeShared<SkinUpload>(token, 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>()));

View File

@ -18,7 +18,6 @@
#pragma once #pragma once
#include "minecraft/skins/SkinModel.h"
#include "net/NetRequest.h" #include "net/NetRequest.h"
class SkinUpload : public Net::NetRequest { class SkinUpload : public Net::NetRequest {
@ -27,16 +26,17 @@ 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, SkinModel* skin); SkinUpload(QString token, QString path, QString variant);
virtual ~SkinUpload() = default; virtual ~SkinUpload() = default;
static SkinUpload::Ptr make(QString token, SkinModel* skin); static SkinUpload::Ptr make(QString token, QString path, QString variant);
void init() override; void init() override;
protected: protected:
virtual QNetworkReply* getReply(QNetworkRequest&) override; virtual QNetworkReply* getReply(QNetworkRequest&) override;
private: private:
SkinModel* m_skin;
QString m_token; QString m_token;
QString m_path;
QString m_variant;
}; };

View File

@ -242,7 +242,7 @@ void SkinManageDialog::accept()
return; return;
} }
skinUpload->addNetAction(SkinUpload::make(m_acct->accessToken(), skin)); skinUpload->addNetAction(SkinUpload::make(m_acct->accessToken(), skin->getPath(), skin->getModelString()));
auto selectedCape = skin->getCapeId(); auto selectedCape = skin->getCapeId();
if (selectedCape != m_acct->accountData()->minecraftProfile.currentCape) { if (selectedCape != m_acct->accountData()->minecraftProfile.currentCape) {