void Posterous::slotUpload(KJob *job) { QUrl localUrl = mUrlMap.take(job); if (job->error()) { qCritical() << "Job Error:" << job->errorString(); Q_EMIT uploadingFailed(localUrl, job->errorString()); return; } else { KIO::StoredTransferJob *stj = qobject_cast<KIO::StoredTransferJob *>(job); //qDebug() << stj->data(); const QJsonDocument json = QJsonDocument::fromJson(stj->data()); if (!json.isNull()) { const QVariantMap map = json.toVariant().toMap(); if (map.contains(QLatin1String("error"))) { Q_EMIT uploadingFailed(localUrl, map.value(QLatin1String("error")).toString()); } else { if (PosterousSettings::oauth()) { Q_EMIT mediumUploaded(localUrl, map.value(QLatin1String("url")).toString()); } if (PosterousSettings::basic()) { Q_EMIT mediumUploaded(localUrl, map.value(QLatin1String("full_url")).toString()); } } } else { Q_EMIT uploadingFailed(localUrl, i18n("Malformed response")); qWarning() << "Parse error:" << stj->data(); } } }
void MediaManager::uploadMedium(const KUrl& localUrl, const QString& pluginId) { QString pId = pluginId; if(pId.isEmpty()) pId = Choqok::BehaviorSettings::lastUsedUploaderPlugin(); if(pId.isEmpty()){ emit mediumUploadFailed(localUrl, i18n("No pluginId specified, And last used plugin is null.")); return; } if(!d->uploader){ Plugin *plugin = PluginManager::self()->loadPlugin(pId); d->uploader = qobject_cast<Uploader*>(plugin); } else if(d->uploader->pluginName() != pId) { // kDebug()<<"CREATING A NEW UPLOADER OBJECT"; PluginManager::self()->unloadPlugin(d->uploader->pluginName()); Plugin *plugin = PluginManager::self()->loadPlugin(pId); d->uploader = qobject_cast<Uploader*>(plugin); } if(!d->uploader) return; QByteArray picData; KIO::TransferJob *picJob = KIO::get( localUrl, KIO::Reload, KIO::HideProgressInfo); if( !KIO::NetAccess::synchronousRun(picJob, 0, &picData) ){ kError()<<"Job error: " << picJob->errorString(); KMessageBox::detailedError(UI::Global::mainWindow(), i18n( "Uploading medium failed: cannot read the medium file." ), picJob->errorString() ); return; } if ( picData.count() == 0 ) { kError() << "Cannot read the media file, please check if it exists."; KMessageBox::error( UI::Global::mainWindow(), i18n( "Uploading medium failed: cannot read the medium file." ) ); return; } QByteArray type = KMimeType::findByUrl( localUrl, 0, true )->name().toUtf8(); connect( d->uploader, SIGNAL(mediumUploaded(KUrl,QString)), this, SIGNAL(mediumUploaded(KUrl,QString)) ); connect( d->uploader, SIGNAL(uploadingFailed(KUrl,QString)), this, SIGNAL(mediumUploadFailed(KUrl,QString)) ); d->uploader->upload(localUrl, picData, type); }