GH-719 implement paste.ee API keys
This commit is contained in:
		| @@ -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())); | ||||
| } | ||||
|   | ||||
| @@ -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: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user