Esempio n. 1
0
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)));
}
Esempio n. 2
0
void WFileUpload::setFormData(const FormData& formData)
{
  setFiles(formData.files);

  LOG_DEBUG("setFormData() : " << formData.files.size() << " file(s)");

  if (!formData.files.empty())
    uploaded().emit();
}
Esempio n. 3
0
  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();
  }
Esempio n. 4
0
  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;
    }*/
  }
Esempio n. 5
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);
    }
}
Esempio n. 6
0
  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();
  }
Esempio n. 7
0
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);
}
Esempio n. 8
0
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();
        }
    });
}