Uploader::Uploader(QObject *parent) : QObject(parent), mProgressSent(0), mProgressTotal(0) { mImgur = new QtImgur("6920a141451d125b3e1357ce0e432409", this); connect(mImgur, SIGNAL(uploaded(QString, QString, QString)), this, SLOT(uploaded(QString, QString, QString))); connect(mImgur, SIGNAL(error(QString, QtImgur::Error)) , this, SLOT(imgurError(QString, QtImgur::Error))); connect(mImgur, SIGNAL(uploadProgress(qint64,qint64)) , this, SLOT(reportProgress(qint64, qint64))); }
void WFileUpload::setFormData(const FormData& formData) { setFiles(formData.files); LOG_DEBUG("setFormData() : " << formData.files.size() << " file(s)"); if (!formData.files.empty()) uploaded().emit(); }
bool Dataset::upload() { assert(width != 0 && height != 0 && slices != 0 && bytes_elem != 0 && data != NULL); if(tex_id == 0) tex_id = knl::io::transfer::Alloc3DTex(bytes_elem); assert(tex_id != 0); uploaded(knl::io::transfer::Upload3DData(width, height, slices, bytes_elem, data, tex_id)); return isUploaded(); }
Dataset::~Dataset() { if(data != NULL) { memset(data, 0, width * height * slices * bytes_elem); free(data); data = NULL; } width = height = slices = bytes_elem = 0; loaded(false); uploaded(false); /*if(!tex_id) { glDeleteTextures(1, &tex_id); tex_id = 0; }*/ }
void ImgurUploader::finished() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); reply->deleteLater(); QString fileName = reply->property("fileName").toString(); if (reply->error() != QNetworkReply::NoError) { if (reply->error() == QNetworkReply::OperationCanceledError) { emit error(ImageUploader::CancelError, "", fileName); } else if (reply->error() == QNetworkReply::ContentOperationNotPermittedError || reply->error() == QNetworkReply::AuthenticationRequiredError) { refreshAuthorization(mSettings["refresh_token"].toString(), [&](bool result) { if (result) { QTimer::singleShot(50, this, &ImgurUploader::retry); } else { cancel(); emit error(ImageUploader::AuthorizationError, tr("Imgur user authentication failed"), fileName); } }); } else { emit error(ImageUploader::NetworkError, reply->errorString(), fileName); } return; } if (reply->rawHeader("X-RateLimit-Remaining") == "0") { emit error(ImageUploader::HostError, tr("Imgur upload limit reached"), fileName); return; } QJsonObject imgurResponse = QJsonDocument::fromJson(reply->readAll()).object(); if (imgurResponse.value("success").toBool() == true && imgurResponse.value("status").toInt() == 200) { QJsonObject imageData = imgurResponse.value("data").toObject(); emit uploaded(fileName, imageData["link"].toString(), imageData["deletehash"].toString()); } else { emit error(ImageUploader::HostError, tr("Imgur error"), fileName); } }
bool Dataset::load(std::string path) { assert(!path.empty()); if(isLoaded()) { memset(data, 0, width * height * slices * bytes_elem); free(data); data = NULL; loaded(false); } if(isUploaded()) { //FIXME: Destroy the texture data here. uploaded(false); } data = calloc(width * height * slices, bytes_elem); loaded(io::LoadBinary(path, width * height * slices, bytes_elem, data)); return isLoaded(); }
void WFileUpload::create() { // NOTE: this is broken on konqueror: you cannot target a form anymore bool methodIframe = WApplication::instance()->environment().ajax(); if (methodIframe) { fileUploadTarget_ = new WFileUploadResource(this); fileUploadTarget_->setUploadProgress(true); fileUploadTarget_->dataReceived().connect(this, &WFileUpload::onData); setJavaScriptMember(WT_RESIZE_JS, "function(self, w, h) {" """if (w >= 0) " "" "$(self).find('input').width(w);" "}"); } else fileUploadTarget_ = 0; setFormObject(!fileUploadTarget_); uploaded().connect(this, &WFileUpload::onUploaded); fileTooLarge().connect(this, &WFileUpload::onUploaded); }
void PomfUploader::upload(const QString &fileName) { QString pomfUrl = mSettings["pomf_url"].toString(); if (pomfUrl.isEmpty()) { emit error(ImageUploader::HostError, tr("Invalid pomf uploader URL!"), fileName); return; } QUrl url = QUrl::fromUserInput(pomfUrl + "/upload.php"); QFile *file = new QFile(fileName); if (!file->open(QIODevice::ReadOnly)) { emit error(ImageUploader::FileError, tr("Unable to read screenshot file"), fileName); file->deleteLater(); return; } QNetworkRequest request(url); QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QMimeDatabase().mimeTypeForFile(fileName, QMimeDatabase::MatchExtension).name()); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"files[]\"; filename=\"%1\"").arg(QFileInfo(fileName).fileName())); imagePart.setBodyDevice(file); file->setParent(multiPart); multiPart->append(imagePart); QNetworkReply *reply = Uploader::network()->post(request, multiPart); this->setProperty("fileName", fileName); multiPart->setParent(reply); connect(this , &PomfUploader::cancelRequest, reply, &QNetworkReply::abort); connect(this , &PomfUploader::cancelRequest, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::uploadProgress, this, [&](qint64 bytesSent, qint64 bytesTotal) { float b = (float) bytesSent / bytesTotal; int p = qRound(b * 100); setProgress(p); }); connect(reply, &QNetworkReply::finished, this, [&, reply, fileName] { const QJsonObject pomfResponse = QJsonDocument::fromJson(reply->readAll()).object(); if (reply->error() != QNetworkReply::NoError && pomfResponse.isEmpty()) { emit error(ImageUploader::NetworkError, tr("Error reaching uploader"), fileName); return; } if (!pomfResponse.contains("success") || !pomfResponse.contains("files")) { emit error(ImageUploader::HostError, tr("Invalid response from uploader"), fileName); return; } if (pomfResponse["success"].toBool()) { emit uploaded(fileName, pomfResponse["files"].toArray().at(0).toObject()["url"].toString(), ""); } else { QString description; if (pomfResponse.contains("description")) { description = pomfResponse["description"].toString(); } if (description.isEmpty()) { description = tr("Host error"); } emit error(ImageUploader::HostError, description, fileName); } }); connect(reply, &QNetworkReply::sslErrors, [reply](const QList<QSslError> &errors) { Q_UNUSED(errors); if (QSysInfo::WindowsVersion == QSysInfo::WV_XP) { reply->ignoreSslErrors(); } }); }