QString Posterous::getAuthToken(const QUrl &localUrl) { QUrl url(QLatin1String("http://posterous.com/api/2/auth/token")); QString login = PosterousSettings::login(); QString pass = Choqok::PasswordManager::self()->readPassword(QStringLiteral("posterous_%1").arg(PosterousSettings::login())); KIO::StoredTransferJob *job = KIO::storedGet(url, KIO::Reload, KIO::HideProgressInfo); job->addMetaData(QLatin1String("customHTTPHeader"), QLatin1String("Authorization: Basic ") + QLatin1String(QStringLiteral("%1:%2").arg(login).arg(pass).toUtf8().toBase64())); job->exec(); if (!job->error()) { const QByteArray data = job->data(); const QJsonDocument json = QJsonDocument::fromJson(data); if (!json.isNull()) { QVariantMap map = json.toVariant().toMap(); if (map.contains(QLatin1String("api_token"))) { QString tkn = map.value(QLatin1String("api_token")).toString(); return tkn; } else { Q_EMIT uploadingFailed(localUrl, map.value(QLatin1String("error")).toString()); qWarning() << "Parse error:" << data; } } } else { qCritical() << "Job error:" << job->errorString(); } return QString(); }
void HTTPTracker::onAnnounceResult(KIO::Job* j) { if (j->error()) { KIO::StoredTransferJob* st = (KIO::StoredTransferJob*)j; KURL u = st->url(); active_job = 0; Out(SYS_TRK|LOG_IMPORTANT) << "Error : " << st->errorString() << endl; if (u.queryItem("event") != "stopped") { failures++; requestFailed(j->errorString()); } else { stopDone(); } } else { KIO::StoredTransferJob* st = (KIO::StoredTransferJob*)j; KURL u = st->url(); active_job = 0; if (u.queryItem("event") != "stopped") { try { if (updateData(st->data())) { failures = 0; peersReady(this); requestOK(); if (u.queryItem("event") == "started") started = true; } } catch (bt::Error & err) { failures++; requestFailed(i18n("Invalid response from tracker")); } event = QString::null; } else { failures = 0; stopDone(); } } doAnnounceQueue(); }
void Core::downloadFinishedSilently(KJob* job) { KIO::StoredTransferJob* j = (KIO::StoredTransferJob*)job; int err = j->error(); if (err == KIO::ERR_USER_CANCELED) { // do nothing } else if (err) { canNotLoadSilently(j->errorString()); } else { QString dir; if (custom_save_locations.contains(j)) { // we have a custom save location so save to that dir = custom_save_locations[j].toLocalFile(); custom_save_locations.remove(j); } else if (!Settings::useSaveDir()) { // incase save dir is not set, use home director Out(SYS_GEN | LOG_NOTICE) << "Cannot load " << j->url() << " silently, default save location not set !" << endl; Out(SYS_GEN | LOG_NOTICE) << "Using home directory instead !" << endl; dir = QDir::homePath(); } else { dir = Settings::saveDir().toLocalFile(); } QString group; QMap<KUrl, QString>::iterator i = add_to_groups.find(j->url()); if (i != add_to_groups.end()) { group = i.value(); add_to_groups.erase(i); } if (dir != QString::null) loadFromData(j->data(), dir, group, true, j->url()); } }
bool Editor::openFile(const QUrl &_url) { QUrl url = _url; if (maybeSave()) { if (url.isEmpty()) { url = QFileDialog::getOpenFileUrl(this, i18n("Open"), QUrl(), QString("%1 (*.turtle);;%2 (*)").arg(i18n("Turtle code files")).arg(i18n("All files")) ); } if (!url.isEmpty()) { KIO::StoredTransferJob *job = KIO::storedGet(url); if (job->exec()) { QByteArray data = job->data(); QBuffer buffer(&data); if (!buffer.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; // can't happen } QTextStream in(&buffer); // check for our magic identifier QString s; s = in.readLine(); if (s != KTURTLE_MAGIC_1_0) { KMessageBox::error(this, i18n("The file you try to open is not a valid KTurtle script, or is incompatible with this version of KTurtle.\nCannot open %1", url.toDisplayString(QUrl::PreferLocalFile))); return false; } QString localizedScript = Translator::instance()->localizeScript(in.readAll()); setContent(localizedScript); setCurrentUrl(url); editor->document()->setModified(false); emit fileOpened(url); return true; } else { KMessageBox::error(this, job->errorString()); return false; } } } // statusbar "Nothing opened" return false; }
void Bit_ly_Config::slotValidate() { ui.validate_button->setEnabled(false); ui.validate_button->setText(i18n("Checking...")); QString login = QLatin1String("choqok"); QString apiKey = QLatin1String("R_bdd1ae8b6191dd36e13fc77ca1d4f27f"); QUrl reqUrl(QLatin1String("http://api.bit.ly/v3/validate")); QUrlQuery reqQuery; reqQuery.addQueryItem(QLatin1String("x_login"), ui.kcfg_login->text()); reqQuery.addQueryItem(QLatin1String("x_apiKey"), ui.kcfg_api_key->text()); if (Bit_ly_Settings::domain() == QLatin1String("j.mp")) { //bit.ly is default domain reqQuery.addQueryItem(QLatin1String("domain"), QLatin1String("j.mp")); } reqQuery.addQueryItem(QLatin1String("login"), QLatin1String(login.toUtf8())); reqQuery.addQueryItem(QLatin1String("apiKey"), QLatin1String(apiKey.toUtf8())); reqQuery.addQueryItem(QLatin1String("format"), QLatin1String("txt")); reqUrl.setQuery(reqQuery); KIO::StoredTransferJob *job = KIO::storedGet(reqUrl, KIO::Reload, KIO::HideProgressInfo); job->exec(); if (!job->error()) { QString output(QLatin1String(job->data())); if (output.startsWith(QLatin1Char('0'))) KMessageBox::error(this, i18nc("The your_api_key part of the URL is a fixed part of the URL " "and should probably not be changed in localization.", "Provided data is invalid. Try another login or API key.\n" "You can find it on http://bit.ly/a/your_api_key")); if (output.startsWith(QLatin1Char('1'))) { KMessageBox::information(this, i18n("You entered valid information.")); } } else { Choqok::NotifyManager::error(job->errorString(), i18n("bit.ly Config Error")); } ui.validate_button->setEnabled(true); ui.validate_button->setText(i18n("Validate")); }
void TwitterMicroBlog::createPostWithAttachment(Choqok::Account *theAccount, Choqok::Post *post, const QString &mediumToAttach) { if (mediumToAttach.isEmpty()) { TwitterApiMicroBlog::createPost(theAccount, post); } else { const QUrl picUrl = QUrl::fromUserInput(mediumToAttach); KIO::StoredTransferJob *picJob = KIO::storedGet(picUrl, KIO::Reload, KIO::HideProgressInfo); picJob->exec(); if (picJob->error()) { qCCritical(CHOQOK) << "Job error:" << picJob->errorString(); KMessageBox::detailedError(Choqok::UI::Global::mainWindow(), i18n("Uploading medium failed: cannot read the medium file."), picJob->errorString()); return; } const QByteArray picData = picJob->data(); if (picData.count() == 0) { qCCritical(CHOQOK) << "Cannot read the media file, please check if it exists."; KMessageBox::error(Choqok::UI::Global::mainWindow(), i18n("Uploading medium failed: cannot read the medium file.")); return; } TwitterAccount *account = qobject_cast<TwitterAccount *>(theAccount); QUrl url = account->uploadUrl(); url.setPath(url.path() + QStringLiteral("/statuses/update_with_media.%1").arg(format)); const QMimeDatabase db; QByteArray fileContentType = db.mimeTypeForUrl(picUrl).name().toUtf8(); QMap<QString, QByteArray> formdata; formdata[QLatin1String("status")] = post->content.toUtf8(); if (!post->replyToPostId.isEmpty()) { formdata[QLatin1String("in_reply_to_status_id")] = post->replyToPostId.toLatin1(); } formdata[QLatin1String("source")] = QCoreApplication::applicationName().toLatin1(); QMap<QString, QByteArray> mediafile; mediafile[QLatin1String("name")] = "media[]"; mediafile[QLatin1String("filename")] = picUrl.fileName().toUtf8(); mediafile[QLatin1String("mediumType")] = fileContentType; mediafile[QLatin1String("medium")] = picData; QList< QMap<QString, QByteArray> > listMediafiles; listMediafiles.append(mediafile); QByteArray data = Choqok::MediaManager::createMultipartFormData(formdata, listMediafiles); KIO::StoredTransferJob *job = KIO::storedHttpPost(data, url, KIO::HideProgressInfo) ; if (!job) { qCCritical(CHOQOK) << "Cannot create a http POST request!"; return; } job->addMetaData(QStringLiteral("content-type"), QStringLiteral("Content-Type: multipart/form-data; boundary=AaB03x")); job->addMetaData(QStringLiteral("customHTTPHeader"), QStringLiteral("Authorization: ") + QLatin1String(authorizationHeader(account, url, QOAuth::POST))); mCreatePostMap[ job ] = post; mJobsAccount[job] = theAccount; connect(job, SIGNAL(result(KJob*)), SLOT(slotCreatePost(KJob*))); job->start(); } }