bool GDTalker::addPhoto(const QString& imgPath, const GSPhoto& info, const QString& id, bool rescale, int maxDim, int imageQuality) { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); MPForm_GDrive form; form.addPair(QUrl::fromLocalFile(imgPath).fileName(),info.description,imgPath,id); QString path = imgPath; QMimeDatabase mimeDB; if (!mimeDB.mimeTypeForFile(path).name().startsWith(QLatin1String("video/"))) { QImage image; if (m_iface) { image = m_iface->preview(QUrl::fromLocalFile(imgPath)); } if (image.isNull()) { image.load(imgPath); } if (image.isNull()) { return false; } path = makeTemporaryDir("gs").filePath(QFileInfo(imgPath) .baseName().trimmed() + QLatin1String(".jpg")); int imgQualityToApply = 100; if (rescale) { if (image.width() > maxDim || image.height() > maxDim) image = image.scaled(maxDim,maxDim,Qt::KeepAspectRatio,Qt::SmoothTransformation); imgQualityToApply = imageQuality; } image.save(path,"JPEG",imgQualityToApply); if (m_iface) { QPointer<MetadataProcessor> meta = m_iface->createMetadataProcessor(); if (meta && meta->load(QUrl::fromLocalFile(imgPath))) { meta->setImageDimensions(image.size()); meta->setImageProgramId(QString::fromLatin1("Kipi-plugins"), kipipluginsVersion()); meta->save(QUrl::fromLocalFile(path), true); } } } if (!form.addFile(path)) { emit signalBusy(false); return false; } form.finish(); QUrl url(QString::fromLatin1("https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart")); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, form.contentType()); netRequest.setRawHeader("Authorization", m_bearer_access_token.toLatin1()); netRequest.setRawHeader("Host", "www.googleapis.com"); m_reply = m_netMngr->post(netRequest, form.formData()); qCDebug(KIPIPLUGINS_LOG) << "In add photo"; m_state = GD_ADDPHOTO; m_buffer.resize(0); emit signalBusy(true); return true; }
bool DBTalker::addPhoto(const QString& imgPath, const QString& uploadFolder, bool rescale, int maxDim, int imageQuality) { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); MPForm form; QImage image; if (m_iface) { image = m_iface->preview(QUrl::fromLocalFile(imgPath)); } if (image.isNull()) { return false; } QString path = makeTemporaryDir("dropbox").filePath(QFileInfo(imgPath) .baseName().trimmed() + QLatin1String(".jpg")); if (rescale && (image.width() > maxDim || image.height() > maxDim)) { image = image.scaled(maxDim,maxDim,Qt::KeepAspectRatio,Qt::SmoothTransformation); } image.save(path,"JPEG",imageQuality); if (m_meta->load(QUrl::fromLocalFile(imgPath))) { m_meta->setImageDimensions(image.size()); m_meta->setImageProgramId(QString::fromLatin1("Kipi-plugins"), kipipluginsVersion()); m_meta->save(QUrl::fromLocalFile(path)); } if (!form.addFile(path)) { emit signalBusy(false); return false; } QString uploadPath = uploadFolder + QUrl(imgPath).fileName(); QString m_url = QString::fromLatin1("https://api-content.dropbox.com/1/files_put/dropbox/") + QString::fromLatin1("/") + uploadPath; QUrl url(m_url); QUrlQuery q(url); q.addQueryItem(QString::fromLatin1("oauth_consumer_key"), m_oauth_consumer_key); q.addQueryItem(QString::fromLatin1("oauth_nonce"), m_nonce); q.addQueryItem(QString::fromLatin1("oauth_signature"), m_access_oauth_signature); q.addQueryItem(QString::fromLatin1("oauth_signature_method"), m_oauth_signature_method); q.addQueryItem(QString::fromLatin1("oauth_timestamp"), QString::number(m_timestamp)); q.addQueryItem(QString::fromLatin1("oauth_version"), m_oauth_version); q.addQueryItem(QString::fromLatin1("oauth_token"), m_oauthToken); q.addQueryItem(QString::fromLatin1("overwrite"), QString::fromLatin1("false")); url.setQuery(q); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("multipart/mixed")); m_reply = m_netMngr->post(netRequest, form.formData()); m_state = DB_ADDPHOTO; m_buffer.resize(0); emit signalBusy(true); return true; }