diff options
Diffstat (limited to 'logic/net')
-rw-r--r-- | logic/net/PasteUpload.cpp | 31 | ||||
-rw-r--r-- | logic/net/PasteUpload.h | 15 |
2 files changed, 32 insertions, 14 deletions
diff --git a/logic/net/PasteUpload.cpp b/logic/net/PasteUpload.cpp index cfbc561d..4b671d6f 100644 --- a/logic/net/PasteUpload.cpp +++ b/logic/net/PasteUpload.cpp @@ -4,33 +4,44 @@ #include <QJsonObject> #include <QJsonDocument> -PasteUpload::PasteUpload(QWidget *window, QString text) : m_window(window) +PasteUpload::PasteUpload(QWidget *window, QString text, QString key) : m_window(window) { - m_text = text.toUtf8(); - m_text.replace('\n', "\r\n"); + m_key = key; + QByteArray temp; + temp = text.toUtf8(); + temp.replace('\n', "\r\n"); + m_textSize = temp.size(); + m_text = "key=" + m_key.toLatin1() + "&description=MultiMC5+Log+File&language=plain&format=json&expire=2592000&paste=" + temp.toPercentEncoding(); + buf = new QBuffer(&m_text); +} + +PasteUpload::~PasteUpload() +{ + if(buf) + { + delete buf; + } } bool PasteUpload::validateText() { - return m_text.size() <= maxSize(); + return m_textSize <= maxSize(); } void PasteUpload::executeTask() { QNetworkRequest request(QUrl("http://paste.ee/api")); request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)"); - QByteArray content( - "key=public&description=MultiMC5+Log+File&language=plain&format=json&expire=2592000&paste=" + - m_text.toPercentEncoding()); + request.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); - request.setRawHeader("Content-Length", QByteArray::number(content.size())); + request.setRawHeader("Content-Length", QByteArray::number(m_text.size())); auto worker = ENV.qnam(); - QNetworkReply *rep = worker->post(request, content); + QNetworkReply *rep = worker->post(request, buf); m_reply = std::shared_ptr<QNetworkReply>(rep); setStatus(tr("Uploading to paste.ee")); - connect(rep, &QNetworkReply::downloadProgress, this, &Task::setProgress); + connect(rep, &QNetworkReply::uploadProgress, this, &Task::setProgress); connect(rep, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(downloadError(QNetworkReply::NetworkError))); connect(rep, SIGNAL(finished()), this, SLOT(downloadFinished())); } diff --git a/logic/net/PasteUpload.h b/logic/net/PasteUpload.h index 11850c71..5bc3d276 100644 --- a/logic/net/PasteUpload.h +++ b/logic/net/PasteUpload.h @@ -2,6 +2,7 @@ #include "tasks/Task.h" #include <QMessageBox> #include <QNetworkReply> +#include <QBuffer> #include <memory> #include "multimc_logic_export.h" @@ -10,8 +11,8 @@ class MULTIMC_LOGIC_EXPORT PasteUpload : public Task { Q_OBJECT public: - PasteUpload(QWidget *window, QString text); - virtual ~PasteUpload(){}; + PasteUpload(QWidget *window, QString text, QString key = "public"); + virtual ~PasteUpload(); QString pasteLink() { return m_pasteLink; @@ -22,8 +23,11 @@ public: } uint32_t maxSize() { - // 2MB for paste.ee - return 1024*1024*2; + // 2MB for paste.ee - public + if(m_key == "public") + return 1024*1024*2; + // 12MB for paste.ee - with actual key + return 1024*1024*12; } bool validateText(); protected: @@ -36,6 +40,9 @@ private: QWidget *m_window; QString m_pasteID; QString m_pasteLink; + QString m_key; + int m_textSize = 0; + QBuffer * buf = nullptr; std::shared_ptr<QNetworkReply> m_reply; public slots: |