You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
screengrab-packaging/src/modules/uploader/imgur/uploader_imgur.cpp

104 lines
3.8 KiB

/***************************************************************************
* Copyright (C) 2009 - 2013 by Artem 'DOOMer' Galichkin *
* doomer3d@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; either version 2 of the License, or *
* (at your option) any later version. *
* *
* 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 <http://www.gnu.org/licenses/>. *
***************************************************************************/
#include "uploader_imgur.h"
#include <QDebug>
Uploader_ImgUr::Uploader_ImgUr(QObject* parent): Uploader(parent)
{
qDebug() << " create Imgur uploader";
}
Uploader_ImgUr::~Uploader_ImgUr()
{
qDebug() << " kill Imgur uploader";
}
/*!
* Start upload process
*/
void Uploader_ImgUr::startUploading()
{
createData();
createRequest(imageData, apiUrl());
_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
Uploader::startUploading();
}
/*!
* Return url for upload image
*/
QUrl Uploader_ImgUr::apiUrl()
{
return QUrl("http://api.imgur.com/2/upload");
}
/*!
* Prepare image data for uploading
*/
void Uploader_ImgUr::createData(bool inBase64)
{
inBase64 = true;
Uploader::createData(inBase64);
// create data for upload
QByteArray uploadData;
uploadData.append(QString("key=").toUtf8());
uploadData.append(QUrl::toPercentEncoding("6920a141451d125b3e1357ce0e432409"));
uploadData.append(QString("&image=").toUtf8());
uploadData.append(QUrl::toPercentEncoding(this->imageData));
this->imageData = uploadData;
}
/*!
* Process server reply data
*/
void Uploader_ImgUr::replyFinished(QNetworkReply* reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QByteArray replyXmalText = reply->readAll();
// creating list of element names
QVector<QByteArray> listXmlNodes;
listXmlNodes << "original" << "imgur_page" << "large_thumbnail" << "small_square" << "delete_page";
QMap<QByteArray, QByteArray> replyXmlMap = parseResultStrings(listXmlNodes, replyXmalText);
_uploadedStrings[UL_DIRECT_LINK].first = replyXmlMap["original"];
_uploadedStrings[UL_HTML_CODE].first = "<img src=\"" + replyXmlMap["original"] + "\" />";
_uploadedStrings[UL_BB_CODE].first = "[img]" + replyXmlMap["original"] +"[/img]";
_uploadedStrings[UL_HTML_CODE_THUMB].first = "<a href=\"" + replyXmlMap["original"] + "\"><img src=\"" + replyXmlMap["small_square"] + "\" /></a>";
_uploadedStrings[UL_BB_CODE_THUMB].first = "[url=" + replyXmlMap["original"] + "][img]"+ replyXmlMap["small_square"] +"[/img][/url]";
_uploadedStrings[UL_DELETE_URL].first = replyXmlMap["delete_page"];
qDebug() << "done" << _uploadedStrings[UL_DIRECT_LINK].first;
Q_EMIT uploadDoneStr(_uploadedStrings[UL_DIRECT_LINK].first);
Q_EMIT uploadDone();
}
else
{
Q_EMIT uploadFail(reply->errorString().toLatin1());
}
reply->deleteLater();
}