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.
138 lines
4.2 KiB
138 lines
4.2 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_mediacrush.h"
|
|
|
|
#include <QStringList>
|
|
#include <QtNetwork/QHttpMultiPart>
|
|
#include <QtNetwork/QHttpPart>
|
|
|
|
#include "uploaderconfig.h"
|
|
|
|
#include <QDebug>
|
|
|
|
Uploader_MediaCrush::Uploader_MediaCrush(const QString& format, QObject* parent): Uploader(parent)
|
|
{
|
|
_host = "mediacru.sh";
|
|
qDebug() << " create MediaCrush uploader";
|
|
UpdateUploadedStrList();
|
|
setCurrentFormat(format);
|
|
}
|
|
|
|
Uploader_MediaCrush::~Uploader_MediaCrush()
|
|
{
|
|
qDebug() << " kill MediaCrush uploader";
|
|
}
|
|
|
|
/*!
|
|
* Start upload process
|
|
*/
|
|
void Uploader_MediaCrush::startUploading()
|
|
{
|
|
createData();
|
|
createRequest(imageData, apiUrl());
|
|
|
|
_request.setRawHeader("Host", _host);
|
|
Uploader::startUploading();
|
|
}
|
|
|
|
/*!
|
|
* Set type of uploading image, for generate right direct link on it.
|
|
*/
|
|
void Uploader_MediaCrush::setCurrentFormat(const QString& format)
|
|
{
|
|
_currentFormat = format.toLatin1();
|
|
}
|
|
|
|
/*!
|
|
* Return url for upload image
|
|
*/
|
|
QUrl Uploader_MediaCrush::apiUrl()
|
|
{
|
|
UploaderConfig config;
|
|
// QUrl("https://mediacru.sh/api/upload/file")
|
|
|
|
return config.loadSingleParam("mediacru.sh", KEY_MCSH_URL).toUrl();
|
|
}
|
|
|
|
/*!
|
|
* Prepare image data for uploading
|
|
*/
|
|
void Uploader_MediaCrush::createData(bool inBase64)
|
|
{
|
|
Uploader::createData(inBase64);
|
|
|
|
_multipartData = new QHttpMultiPart(QHttpMultiPart::FormDataType);
|
|
|
|
QHttpPart imagePart;
|
|
if (_formatString == "jpg")
|
|
{
|
|
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
|
|
}
|
|
else
|
|
{
|
|
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/" + _formatString));
|
|
}
|
|
QByteArray disposition = "form-data; name=\"file\"; filename='"+ _uploadFilename.toLatin1() +"'";
|
|
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(disposition));
|
|
imagePart.setBody(imageData);
|
|
|
|
_multipartData->append(imagePart);
|
|
|
|
imageData.clear();
|
|
}
|
|
|
|
/*!
|
|
* Process server reply data
|
|
*/
|
|
void Uploader_MediaCrush::replyFinished(QNetworkReply* reply)
|
|
{
|
|
if (reply->error() == QNetworkReply::NoError)
|
|
{
|
|
QByteArray response = reply->readAll();
|
|
|
|
if (response.split(':').count() >= 2)
|
|
{
|
|
response = response.split(':').at(1);
|
|
response = response.mid(2, 12);
|
|
}
|
|
|
|
_uploadedStrings[UL_DIRECT_LINK].first = "https://" + _host + "/" + response + "." + _currentFormat;
|
|
_uploadedStrings[UL_DELETE_URL].first = "https://" + _host + "/" + response + "/delete";
|
|
|
|
Q_EMIT uploadDoneStr(_uploadedStrings[UL_DIRECT_LINK].first);
|
|
Q_EMIT uploadDone();
|
|
}
|
|
else
|
|
{
|
|
Q_EMIT uploadFail(reply->errorString().toLatin1());
|
|
}
|
|
|
|
reply->deleteLater();
|
|
}
|
|
|
|
void Uploader_MediaCrush::UpdateUploadedStrList()
|
|
{
|
|
QStringList nonUsed = QStringList() << UL_BB_CODE << UL_BB_CODE_THUMB << UL_HTML_CODE << UL_HTML_CODE_THUMB;
|
|
|
|
for (int i =0; i < nonUsed.count(); ++i)
|
|
{
|
|
_uploadedStrings.remove(nonUsed.at(i).toLatin1());
|
|
}
|
|
}
|