void DBTalker::parseResponseAddPhoto(const QByteArray& data) { QJsonDocument doc = QJsonDocument::fromJson(data); QJsonObject jsonObject = doc.object(); bool success = jsonObject.contains(QString::fromLatin1("bytes")); emit signalBusy(false); if (!success) { emit signalAddPhotoFailed(i18n("Failed to upload photo")); } else { emit signalAddPhotoSucceeded(); } }
/** Starts authentication by opening the browser */ void Authorize::doOAuth() { KUrl url("https://accounts.google.com/o/oauth2/auth"); url.addQueryItem("scope",m_scope); url.addQueryItem("redirect_uri",m_redirect_uri); url.addQueryItem("response_type",m_response_type); url.addQueryItem("client_id",m_client_id); url.addQueryItem("access_type","offline"); kDebug() << "OAuth URL: " << url; KToolInvocation::invokeBrowser(url.url()); emit signalBusy(false); KDialog* const window = new KDialog(kapp->activeWindow(),0); window->setModal(true); window->setWindowTitle(i18n("Google Drive Authorization")); window->setButtons(KDialog::Ok | KDialog::Cancel); QWidget* const main = new QWidget(window,0); QLineEdit* const textbox = new QLineEdit(); QPlainTextEdit* const infobox = new QPlainTextEdit(i18n("Please follow the instructions in the browser. " "After logging in and authorizing the application, " "copy the code from the browser, paste it in the " "textbox below, and click OK.")); infobox->setReadOnly(true); QVBoxLayout* const layout = new QVBoxLayout; layout->addWidget(infobox); layout->addWidget(textbox); main->setLayout(layout); window->setMainWidget(main); if(window->exec() == QDialog::Accepted && !(textbox->text().isEmpty())) { kDebug() << "1"; m_code = textbox->text(); } if(textbox->text().isEmpty()) { kDebug() << "3"; emit signalTextBoxEmpty(); } if(m_code != "0") { getAccessToken(); } }
void GDTalker::slotFinished(QNetworkReply* reply) { if (reply != m_reply) { return; } m_reply = 0; if (reply->error() != QNetworkReply::NoError) { emit signalBusy(false); QMessageBox::critical(QApplication::activeWindow(), i18n("Error"), reply->errorString()); reply->deleteLater(); return; } m_buffer.append(reply->readAll()); switch (m_state) { case (GD_LOGOUT): break; case (GD_LISTFOLDERS): qCDebug(KIPIPLUGINS_LOG) << "In GD_LISTFOLDERS"; parseResponseListFolders(m_buffer); break; case (GD_CREATEFOLDER): qCDebug(KIPIPLUGINS_LOG) << "In GD_CREATEFOLDER"; parseResponseCreateFolder(m_buffer); break; case (GD_ADDPHOTO): qCDebug(KIPIPLUGINS_LOG) << "In GD_ADDPHOTO"; // << m_buffer; parseResponseAddPhoto(m_buffer); break; case (GD_USERNAME): qCDebug(KIPIPLUGINS_LOG) << "In GD_USERNAME"; // << m_buffer; parseResponseUserName(m_buffer); break; default: break; } reply->deleteLater(); }
void ImageshackWindow::authenticate() { emit signalBusy(true); m_widget->progressBar()->show(); m_widget->m_progressBar->setValue(0); m_widget->m_progressBar->setMaximum(4); m_widget->progressBar()->setFormat(i18n("Authenticating...")); KIPIPlugins::KPLoginDialog* const dlg = new KIPIPlugins::KPLoginDialog(this, QString::fromLatin1("ImageShack")); if (dlg->exec() == QDialog::Accepted) { m_imageshack->setEmail(dlg->login()); m_imageshack->setPassword(dlg->password()); m_talker->authenticate(); } }
/** Ask for authorization and login by opening browser */ void DBTalker::doOAuth() { QUrl url(QString::fromLatin1("https://api.dropbox.com/1/oauth/authorize")); qCDebug(KIPIPLUGINS_LOG) << "in doOAuth()" << m_oauthToken; QUrlQuery q(url); q.addQueryItem(QString::fromLatin1("oauth_token"), m_oauthToken); url.setQuery(q); qCDebug(KIPIPLUGINS_LOG) << "OAuth URL: " << url; QDesktopServices::openUrl(url); emit signalBusy(false); m_dialog = new QDialog(QApplication::activeWindow(), 0); m_dialog->setModal(true); m_dialog->setWindowTitle(i18n("Authorize Dropbox")); QDialogButtonBox* const buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, m_dialog); buttons->button(QDialogButtonBox::Ok)->setDefault(true); m_dialog->connect(buttons, SIGNAL(accepted()), this, SLOT(slotAccept())); m_dialog->connect(buttons, SIGNAL(rejected()), this, SLOT(slotReject())); QPlainTextEdit* const infobox = new QPlainTextEdit(i18n("Please follow the instructions in the browser. " "After logging in and authorizing the application, press OK.")); infobox->setReadOnly(true); QVBoxLayout* const vbx = new QVBoxLayout(m_dialog); vbx->addWidget(infobox); vbx->addWidget(buttons); m_dialog->setLayout(vbx); m_dialog->exec(); if (m_dialog->result() == QDialog::Accepted) { getAccessToken(); } else { return; } }
void SmugTalker::parseResponseCreateAlbum(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc(QString::fromLatin1("createalbum")); if (!doc.setContent(data)) return; qCDebug(KIPIPLUGINS_LOG) << "Parse Create Album response:" << endl << data; int newAlbumID = -1; QString newAlbumKey; QDomElement e = doc.documentElement(); for (QDomNode node = e.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; e = node.toElement(); if (e.tagName() == QString::fromLatin1("Album")) { newAlbumID = e.attribute(QString::fromLatin1("id")).toLongLong(); newAlbumKey = e.attribute(QString::fromLatin1("Key")); qCDebug(KIPIPLUGINS_LOG) << "AlbumID: " << newAlbumID; qCDebug(KIPIPLUGINS_LOG) << "Key: " << newAlbumKey; errCode = 0; } else if (e.tagName() == QString::fromLatin1("err")) { errCode = e.attribute(QString::fromLatin1("code")).toInt(); errMsg = e.attribute(QString::fromLatin1("msg")); qCDebug(KIPIPLUGINS_LOG) << "Error:" << errCode << errMsg; } } emit signalBusy(false); emit signalCreateAlbumDone(errCode, errorToText(errCode, errMsg), newAlbumID, newAlbumKey); }
void SmugTalker::login(const QString& email, const QString& password) { if (m_job) { m_job->kill(); m_job = 0; } emit signalBusy(true); emit signalLoginProgress(1, 4, i18n("Logging in to SmugMug service...")); KUrl url(m_apiURL); if (email.isEmpty()) { url.addQueryItem("method", "smugmug.login.anonymously"); url.addQueryItem("APIKey", m_apiKey); } else { url.addQueryItem("method", "smugmug.login.withPassword"); url.addQueryItem("APIKey", m_apiKey); url.addQueryItem("EmailAddress", email); url.addQueryItem("Password", password); } QByteArray tmp; KIO::TransferJob* job = KIO::http_post(url, tmp, KIO::HideProgressInfo); job->addMetaData("UserAgent", m_userAgent); job->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded"); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); m_state = SMUG_LOGIN; m_job = job; m_buffer.resize(0); m_user.email = email; }
void SmugTalker::getPhoto(const QString& imgPath) { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); QNetworkRequest netRequest(QUrl::fromLocalFile(imgPath)); netRequest.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent); netRequest.setRawHeader("X-Smug-SessionID", m_sessionID.toLatin1()); netRequest.setRawHeader("X-Smug-Version", m_apiVersion.toLatin1()); m_reply = m_netMngr->get(netRequest); m_state = SMUG_GETPHOTO; m_buffer.resize(0); }
bool ImgurTalker::imageRemove(const QString& delete_hash) { // @TODO : make sure it works MPForm form; KUrl removeUrl = KUrl("http://api.imgur.com/2/delete/"); removeUrl.addPath(delete_hash + ".json"); form.finish(); KIO::TransferJob* job = KIO::http_post(removeUrl, form.formData(), KIO::HideProgressInfo); job->addMetaData("content-type", form.contentType()); job->addMetaData("UserAgent", m_userAgent); m_state = IE_REMOVEPHOTO; emit signalBusy(true); return true; }
void DBTalker::parseResponseUserName(const QByteArray& data) { QJson::Parser parser; bool ok; QVariant result = parser.parse(data,&ok); QVariantMap rmap = result.toMap(); QList<QString> keys = rmap.uniqueKeys(); QString temp; for(int i=0;i<rmap.size();i++) { if(keys[i] == "display_name") { temp = rmap[keys[i]].value<QString>(); } } emit signalBusy(false); emit signalSetUserName(temp); }
void FbTalker::getUserInfo(const QString& userIDs) { if (m_job) { m_job->kill(); m_job = 0; } if (userIDs.isEmpty()) { emit signalBusy(true); emit signalLoginProgress(6); } QMap<QString, QString> args; args["access_token"] = m_accessToken; if (userIDs.isEmpty()) args["uids"] = QString::number(m_user.id); else args["uids"] = userIDs; args["fields"] = "name,profile_url"; QByteArray tmp(getCallString(args).toUtf8()); KIO::TransferJob* job = KIO::http_post(KUrl(m_apiURL,"users.getInfo"), tmp, KIO::HideProgressInfo); job->addMetaData("UserAgent", m_userAgent); job->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded"); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); if (userIDs.isEmpty()) m_state = FB_GETUSERINFO; else m_state = FB_GETUSERINFO_FRIENDS; m_job = job; m_buffer.resize(0); }
/** Ask for authorization and login by opening browser */ void DBTalker::doOAuth() { KUrl url("https://api.dropbox.com/1/oauth/authorize"); kDebug() << "in doOAuth()" << m_oauthToken; url.addQueryItem("oauth_token",m_oauthToken); kDebug() << "OAuth URL: " << url; KToolInvocation::invokeBrowser(url.url()); emit signalBusy(false); KDialog* const dialog = new KDialog(kapp->activeWindow(),0); dialog->setModal(true); dialog->setWindowTitle(i18n("Authorize Dropbox")); dialog->setButtons(KDialog::Ok | KDialog::Cancel); //dialog->setButtonText(0x00000004,"Authorize"); QWidget* const mainWidget = new QWidget(dialog,0); QPlainTextEdit* const infobox = new QPlainTextEdit( i18n( "Please follow the instructions in the browser. " "After logging in and authorizing the application, press OK." )); infobox->setReadOnly(true); QVBoxLayout* const layout = new QVBoxLayout; layout->addWidget(infobox); mainWidget->setLayout(layout); dialog->setMainWidget(mainWidget); if(dialog->exec() == QDialog::Accepted) { getAccessToken(); } else { return; } }
void SmugTalker::login(const QString& email, const QString& password) { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); emit signalLoginProgress(1, 4, i18n("Logging in to SmugMug service...")); QUrl url(m_apiURL); QUrlQuery q; if (email.isEmpty()) { q.addQueryItem(QString::fromLatin1("method"), QString::fromLatin1("smugmug.login.anonymously")); q.addQueryItem(QString::fromLatin1("APIKey"), m_apiKey); } else { q.addQueryItem(QString::fromLatin1("method"), QString::fromLatin1("smugmug.login.withPassword")); q.addQueryItem(QString::fromLatin1("APIKey"), m_apiKey); q.addQueryItem(QString::fromLatin1("EmailAddress"), email); q.addQueryItem(QString::fromLatin1("Password"), password); } url.setQuery(q); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/x-www-form-urlencoded")); netRequest.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent); m_reply = m_netMngr->get(netRequest); m_state = SMUG_LOGIN; m_buffer.resize(0); m_user.email = email; }
void SmugTalker::parseResponseLogout(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc(QString::fromLatin1("logout")); if (!doc.setContent(data)) return; qCDebug(KIPIPLUGINS_LOG) << "Parse Logout response:" << endl << data; QDomElement e = doc.documentElement(); for (QDomNode node = e.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; e = node.toElement(); if (e.tagName() == QString::fromLatin1("Logout")) { errCode = 0; } else if (e.tagName() == QString::fromLatin1("err")) { errCode = e.attribute(QString::fromLatin1("code")).toInt(); errMsg = e.attribute(QString::fromLatin1("msg")); qCDebug(KIPIPLUGINS_LOG) << "Error:" << errCode << errMsg; } } // consider we are logged out in any case m_sessionID.clear(); m_user.clear(); emit signalBusy(false); }
/** Get username of dropbox user */ void DBTalker::getUserName() { QUrl url(QString::fromLatin1("https://api.dropbox.com/1/account/info")); 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); url.setQuery(q); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/x-www-form-urlencoded")); m_reply = m_netMngr->post(netRequest, QByteArray()); m_state = DB_USERNAME; m_buffer.resize(0); emit signalBusy(true); }
void FbTalker::getPhoto(const QString& imgPath) { if (m_job) { m_job->kill(); m_job = 0; } emit signalBusy(true); KIO::TransferJob* job = KIO::get(imgPath, KIO::Reload, KIO::HideProgressInfo); job->addMetaData("UserAgent", m_userAgent); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); m_state = FB_GETPHOTO; m_job = job; m_buffer.resize(0); }
/** Gets access token from refresh token for handling login of user across digikam sessions */ void Authorize::getAccessTokenFromRefreshToken(const QString& msg) { QUrl url(QString::fromLatin1("https://accounts.google.com/o/oauth2/token")); QByteArray postData; postData = "&client_id="; postData += m_client_id.toLatin1(); postData += "&client_secret="; postData += m_client_secret.toLatin1(); postData += "&refresh_token="; postData += msg.toLatin1(); postData += "&grant_type=refresh_token"; QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/x-www-form-urlencoded")); m_reply = m_netMngr->post(netRequest, postData); m_Authstate = GD_REFRESHTOKEN; m_buffer.resize(0); emit signalBusy(true); }
void GalleryTalker::listPhotos(const QString& albumName) { m_job = 0; m_state = GE_LISTPHOTOS; m_talker_buffer.resize(0); GalleryMPForm form; form.addPair("cmd", "fetch-album-images"); form.addPair("protocol_version", "2.11"); form.addPair("set_albumName", albumName); form.finish(); m_job = KIO::http_post(m_url, form.formData(), KIO::HideProgressInfo); m_job->addMetaData("content-type", form.contentType()); m_job->addMetaData("cookies", "manual"); m_job->addMetaData("setcookies", m_cookie); connect(m_job, SIGNAL(data(KIO::Job*, const QByteArray&)), this, SLOT(slotTalkerData(KIO::Job*, const QByteArray&))); connect(m_job, SIGNAL(result(KJob *)), this, SLOT(slotResult(KJob *))); emit signalBusy(true); }
void SmugTalker::listPhotos(const qint64 albumID, const QString& albumKey, const QString& albumPassword, const QString& sitePassword) { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); QUrl url(m_apiURL); QUrlQuery q; q.addQueryItem(QString::fromLatin1("method"), QString::fromLatin1("smugmug.images.get")); q.addQueryItem(QString::fromLatin1("SessionID"), m_sessionID); q.addQueryItem(QString::fromLatin1("AlbumID"), QString::number(albumID)); q.addQueryItem(QString::fromLatin1("AlbumKey"), albumKey); q.addQueryItem(QString::fromLatin1("Heavy"), QString::fromLatin1("1")); if (!albumPassword.isEmpty()) q.addQueryItem(QString::fromLatin1("Password"), albumPassword); if (!sitePassword.isEmpty()) q.addQueryItem(QString::fromLatin1("SitePassword"), sitePassword); url.setQuery(q); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/x-www-form-urlencoded")); netRequest.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent); m_reply = m_netMngr->get(netRequest); m_state = SMUG_LISTPHOTOS; m_buffer.resize(0); }
void DBTalker::parseResponseListFolders(const QByteArray& data) { QJsonParseError err; QJsonDocument doc = QJsonDocument::fromJson(data, &err); if (err.error != QJsonParseError::NoError) { emit signalBusy(false); emit signalListAlbumsFailed(i18n("Failed to list folders")); return; } QJsonObject jsonObject = doc.object(); QJsonArray jsonArray = jsonObject[QString::fromLatin1("contents")].toArray(); QList<QPair<QString, QString> > list; list.clear(); list.append(qMakePair(QString::fromLatin1("/"), QString::fromLatin1("root"))); foreach (const QJsonValue& value, jsonArray) { QString path(QString::fromLatin1("")); bool isDir; QJsonObject obj = value.toObject(); path = obj[QString::fromLatin1("path")].toString(); isDir = obj[QString::fromLatin1("is_dir")].toBool(); qCDebug(KIPIPLUGINS_LOG) << "Path is "<<path<<" Is Dir "<<isDir; if(isDir) { qCDebug(KIPIPLUGINS_LOG) << "Path is "<<path<<" Is Dir "<<isDir; QString name = path.section(QLatin1Char('/'), -2); qCDebug(KIPIPLUGINS_LOG) << "str " << name; list.append(qMakePair(path,name)); m_queue.enqueue(path); } }
void ImageshackTalker::parseAddPhotoToGalleryDone(QByteArray data) { //int errCode = -1; QString errMsg = QString::fromLatin1(""); QDomDocument domDoc(QString::fromLatin1("galleryXML")); qCDebug(KIPIPLUGINS_LOG) << data; if (!domDoc.setContent(data)) return; QDomElement rootElem = domDoc.documentElement(); if (rootElem.isNull() || rootElem.tagName() != QString::fromLatin1("gallery")) { // TODO error cheking } else { emit signalBusy(false); emit signalAddPhotoDone(0, QString::fromLatin1("")); } }
/** Get list of folders by parsing json sent by dropbox */ void DBTalker::listFolders(const QString& path) { QString make_url = QString::fromLatin1("https://api.dropbox.com/1/metadata/dropbox/") + path; QUrl url(make_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); url.setQuery(q); QNetworkRequest netRequest(url); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/x-www-form-urlencoded")); m_reply = m_netMngr->get(netRequest); m_state = DB_LISTFOLDERS; m_buffer.resize(0); emit signalBusy(true); }
void ImageshackTalker::getGalleries() { if (m_reply) { m_reply->abort(); m_reply = 0; } emit signalBusy(true); emit signalJobInProgress(3, 4, i18n("Getting galleries from server")); QUrl gUrl(m_galleryUrl); QUrlQuery q(gUrl); q.addQueryItem(QString::fromLatin1("action"), QString::fromLatin1("gallery_list")); q.addQueryItem(QString::fromLatin1("user"), m_imageshack->username()); gUrl.setQuery(q); m_reply = m_netMngr->get(QNetworkRequest(gUrl)); m_state = IMGHCK_GETGALLERIES; m_buffer.resize(0); }
void SmugTalker::listPhotos(int albumID, const QString& albumPassword, const QString& sitePassword) { if (m_job) { m_job->kill(); m_job = 0; } emit signalBusy(true); KUrl url(m_apiURL); url.addQueryItem("method", "smugmug.images.get"); url.addQueryItem("SessionID", m_sessionID); url.addQueryItem("AlbumID", QString::number(albumID)); url.addQueryItem("Heavy", "1"); if (!albumPassword.isEmpty()) url.addQueryItem("Password", albumPassword); if (!sitePassword.isEmpty()) url.addQueryItem("SitePassword", sitePassword); QByteArray tmp; KIO::TransferJob* job = KIO::http_post(url, tmp, KIO::HideProgressInfo); job->addMetaData("UserAgent", m_userAgent); job->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded"); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); m_state = SMUG_LISTPHOTOS; m_job = job; m_buffer.resize(0); }
void FbTalker::parseResponseCreateAlbum(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("createalbum"); if (!doc.setContent(data)) return; kDebug() << "Parse Create Album response:" << endl << data; QString newAlbumID; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "photos_createAlbum_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "aid") { newAlbumID = node.toElement().text(); kDebug() << "newAID: " << newAlbumID; } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } emit signalBusy(false); emit signalCreateAlbumDone(errCode, errorToText(errCode, errMsg), newAlbumID); }
bool ImgurTalker::imageUpload(const KUrl& filePath) { kDebug() << "Upload image" << filePath; m_currentUrl = filePath; MPForm form; KUrl exportUrl = KUrl("http://api.imgur.com/2/upload.json"); exportUrl.addQueryItem("key", m_apiKey); exportUrl.addQueryItem("name", filePath.fileName()); exportUrl.addQueryItem("title", filePath.fileName()); // this should be replaced with something the user submits // exportUrl.addQueryItem("caption", ""); // this should be replaced with something the user submits exportUrl.addQueryItem("type", "file"); form.addFile("image", filePath.path()); form.finish(); KIO::TransferJob* job = KIO::http_post(exportUrl, form.formData(), KIO::HideProgressInfo); job->addMetaData("content-type", form.contentType()); job->addMetaData("content-length", QString("Content-Length: %1").arg(form.formData().length())); job->addMetaData("UserAgent", m_userAgent); connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)), this, SLOT(slotData(KIO::Job*, const QByteArray&))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); m_state = IE_ADDPHOTO; emit signalUploadStart(filePath); emit signalBusy(true); return true; }
void GalleryTalker::listAlbums() { m_job = 0; m_state = GE_LISTALBUMS; m_talker_buffer.resize(0); GalleryMPForm form; if (s_using_gallery2) form.addPair("cmd", "fetch-albums-prune"); else form.addPair("cmd", "fetch-albums"); form.addPair("protocol_version", "2.11"); form.finish(); m_job = KIO::http_post(m_url, form.formData(), KIO::HideProgressInfo); m_job->addMetaData("content-type", form.contentType()); m_job->addMetaData("cookies", "manual"); m_job->addMetaData("setcookies", m_cookie); connect(m_job, SIGNAL(data(KIO::Job*, const QByteArray&)), this, SLOT(slotTalkerData(KIO::Job*, const QByteArray&))); connect(m_job, SIGNAL(result(KJob *)), this, SLOT(slotResult(KJob *))); emit signalBusy(true); }
bool DsTalker::addScreenshot(const QString& imgPath, const QString& packageName, const QString& packageVersion, const QString& description) { kDebug() << "Adding screenshot " << imgPath << " to package " << packageName << " " << packageVersion<< " using description '" << description << "'"; if (m_job) { m_job->kill(); m_job = 0; } emit signalBusy(true); MPForm form; form.addPair("packagename", packageName); form.addPair("version", packageVersion); form.addPair("description", description); form.addFile(imgPath, imgPath, "file"); form.finish(); kDebug() << "FORM: " << endl << form.formData(); KIO::TransferJob* job = KIO::http_post(m_uploadUrl, form.formData(), KIO::HideProgressInfo); job->addMetaData("UserAgent", m_userAgent); job->addMetaData("content-type", form.contentType()); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); m_job = job; m_buffer.resize(0); return true; }
void GalleryTalker::login(const KUrl& url, const QString& name, const QString& passwd) { m_job = 0; m_url = url; m_state = GE_LOGIN; m_talker_buffer.resize(0); GalleryMPForm form; form.addPair("cmd", "login"); form.addPair("protocol_version", "2.11"); form.addPair("uname", name); form.addPair("password", passwd); form.finish(); m_job = KIO::http_post(m_url, form.formData(), KIO::HideProgressInfo); m_job->addMetaData("content-type", form.contentType()); m_job->addMetaData("cookies", "manual"); connect(m_job, SIGNAL(data(KIO::Job*, const QByteArray&)), this, SLOT(slotTalkerData(KIO::Job*, const QByteArray&))); connect(m_job, SIGNAL(result(KJob *)), this, SLOT(slotResult(KJob *))); emit signalBusy(true); }
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; }