Ejemplo n.º 1
0
	void DriveManager::handleUploadRequestFinished ()
	{
		QNetworkReply *reply = qobject_cast<QNetworkReply*> (sender ());
		if (!reply)
			return;

		reply->deleteLater ();
		QString path = Reply2FilePath_.take (reply);

		const int code = reply->
				attribute (QNetworkRequest::HttpStatusCodeAttribute).toInt ();
		if (code != 200)
		{
			qWarning () << Q_FUNC_INFO
					<< "upload initiating failed with code:"
					<< code;
			return;
		}

		emit uploadStatusChanged (tr ("Uploading..."), path);

		QFile *file = new QFile (path);
		if (!file->open (QIODevice::ReadOnly))
		{
			qWarning () << Q_FUNC_INFO
					<< "unable to open file: "
					<< file->errorString ();
			return;
		}

		QUrl url (reply->rawHeader ("Location"));
		QNetworkRequest request (url);
#ifdef HAVE_MAGIC
		request.setHeader (QNetworkRequest::ContentTypeHeader,
				magic_file (Magic_, path.toUtf8 ()));
#endif
		request.setHeader (QNetworkRequest::ContentLengthHeader,
				QString::number (QFileInfo (path).size ()).toUtf8 ());

		QNetworkReply *uploadReply = Core::Instance ().GetProxy ()->
				GetNetworkAccessManager ()->put (request, file);
		file->setParent (uploadReply);
		Reply2FilePath_ [uploadReply] = path;

		connect (uploadReply,
				SIGNAL (finished ()),
				this,
				SLOT (handleUploadFinished ()));
		connect (uploadReply,
				SIGNAL (error (QNetworkReply::NetworkError)),
				this,
				SLOT (handleUploadError (QNetworkReply::NetworkError)));
		connect (uploadReply,
				SIGNAL (uploadProgress (qint64, qint64)),
				this,
				SLOT (handleUploadProgress (qint64, qint64)));
	}
Ejemplo n.º 2
0
void FileTransfersPage::setUploadNetworkReply(QNetworkReply *networkReply)
{
    uploadNetworkReply = networkReply;

    connect(
        uploadNetworkReply,
        SIGNAL(uploadProgress(qint64, qint64)),
        SLOT(handleUploadProgress(qint64, qint64))
        );
}
Ejemplo n.º 3
0
	void FotoBilderAccount::UploadOneImage (const QByteArray& id,
			const UploadItem& item, const QString& challenge)
	{
		QFile file (item.FilePath_);
		if (!file.open (QIODevice::ReadOnly))
			return;

		auto content = file.readAll ();
		QByteArray md5 = QCryptographicHash::hash (content, QCryptographicHash::Md5);
		file.close ();
		auto reply = Proxy_->GetNetworkAccessManager ()->
				put (CreateRequest (Util::MakeMap<QByteArray, QByteArray> ({
							{ "X-FB-User", Login_.toUtf8 () },
							{ "X-FB-Mode", "UploadPic" },
							{ "X-FB-Auth", ("crp:" + challenge + ":" +
									GetHashedChallenge (GetPassword (), challenge))
										.toUtf8 () },
							{ "X-FB-AuthVerifier", "md5=" + md5 + "&mode=UploadPic" },
							{ "X-FB-UploadPic.ImageData", QDateTime::currentDateTime ()
									.toString (Qt::ISODate).toUtf8 () },
							{ "X-FB-UploadPic.MD5", md5 },
							//TODO access to images
							{ "X-FB-UploadPic.PicSec", "255" },
							{ "X-FB-UploadPic.Meta.Filename", QFileInfo (item.FilePath_)
									.fileName ().toUtf8 () },
							{ "X-FB-UploadPic.Meta.Title", QFileInfo (item.FilePath_)
									.fileName ().toUtf8 () },
							{ "X-FB-UploadPic.Meta.Description", item.Description_.toUtf8 () },
							{ "X-FB-UploadPic.Gallery._size", "1" },
							{ "X-FB-UploadPic.Gallery.0.GalID", id },
							{ "X-FB-UploadPic.ImageSize", QString::number (QFileInfo (item.FilePath_)
									.size ()).toUtf8 () } })),
						content);
		Reply2UploadItem_ [reply] = item;
		connect (reply,
				SIGNAL (finished ()),
				this,
				SLOT (handleImageUploaded ()));
		connect (reply,
				SIGNAL (uploadProgress (qint64, qint64)),
				this,
				SLOT (handleUploadProgress (qint64, qint64)));
		connect (reply,
				SIGNAL (error (QNetworkReply::NetworkError)),
				this,
				SLOT (handleNetworkError (QNetworkReply::NetworkError)));
	}
Ejemplo n.º 4
0
	BitcheesePending::BitcheesePending (const QString& filename, const ICoreProxy_ptr& proxy, QObject *parent)
	: PendingUploadBase { filename, proxy, parent }
	{
		const auto nam = proxy->GetNetworkAccessManager ();

		QNetworkRequest req { QUrl { "http://dump.bitcheese.net/upload-file" } };
		req.setRawHeader ("Referer", "http://dump.bitcheese.net/");

		const auto reply = nam->post (req, MakeStandardMultipart ());
		connect (reply,
				SIGNAL (finished ()),
				this,
				SLOT (handleFinished ()));
		connect (reply,
				SIGNAL (error (QNetworkReply::NetworkError)),
				this,
				SLOT (handleError ()));

		connect (reply,
				SIGNAL (uploadProgress (qint64, qint64)),
				this,
				SLOT (handleUploadProgress (qint64, qint64)));
	}