Act properly if OCS endpoint returned an error (OCS error)

For now pass it on to the gui. So at least they know something is wrong.
This commit is contained in:
Roeland Jago Douma 2015-10-29 16:56:23 +01:00
parent 8c0297f688
commit dd8d02b8ef
6 changed files with 65 additions and 59 deletions

View file

@ -105,9 +105,10 @@ bool OcsJob::finished()
<< Account::concatUrlPath(account()->url(), path())
<< _params
<< "has unexpected status code:" << statusCode << replyData;
emit ocsError(statusCode, message);
} else {
emit jobFinished(json);
}
emit jobFinished(json);
deleteLater();
return true;
}

View file

@ -108,6 +108,15 @@ signals:
*/
void jobFinished(QVariantMap reply);
/**
* The status code was not one of the expected (passing)
* status code for this command
*
* @param statusCode The actual status code
* @param message The message provided by the server
*/
void ocsError(int statusCode, const QString &message);
private slots:
virtual bool finished() Q_DECL_OVERRIDE;

View file

@ -48,21 +48,21 @@ int Share::getPermissions() const
void Share::deleteShare()
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotDeleted(QVariantMap)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotDeleted()));
connect(job, SIGNAL(ocsError(int, const QString &)), SLOT(slotOcsError(int, const QString &)));
job->deleteShare(getId());
}
void Share::slotDeleted(const QVariantMap &reply)
void Share::slotDeleted()
{
QString message;
int code = OcsShareJob::getJsonReturnCode(reply, message);
if (code != 100) {
//emit error!
}
emit shareDeleted();
}
void Share::slotOcsError(int statusCode, const QString &message)
{
emit serverError(statusCode, message);
}
QUrl LinkShare::getLink() const
{
return _url;
@ -103,21 +103,13 @@ bool LinkShare::getPublicUpload()
void LinkShare::setPublicUpload(bool publicUpload)
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPublicUploadSet(QVariantMap, QVariant)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
job->setPublicUpload(getId(), publicUpload);
}
void LinkShare::slotPublicUploadSet(const QVariantMap &reply, const QVariant &value)
void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
{
qDebug() << Q_FUNC_INFO << reply;
qDebug() << Q_FUNC_INFO << value;
QString message;
int code = OcsShareJob::getJsonReturnCode(reply, message);
if (code != 100) {
//emit error
}
//TODO FIX permission with names
if (value.toBool()) {
_permissions = 7;
@ -131,18 +123,13 @@ void LinkShare::slotPublicUploadSet(const QVariantMap &reply, const QVariant &va
void LinkShare::setPassword(const QString &password)
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotPasswordSet(QVariantMap, QVariant)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPasswordSet(QVariantMap, QVariant)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
job->setPassword(getId(), password);
}
void LinkShare::slotPasswordSet(const QVariantMap &reply, const QVariant &value)
void LinkShare::slotPasswordSet(const QVariantMap&, const QVariant &value)
{
QString message;
int code = OcsShareJob::getJsonReturnCode(reply, message);
if (code != 100) {
//emit error
}
_passwordSet = value.toString() == "";
emit passwordSet();
}
@ -150,18 +137,13 @@ void LinkShare::slotPasswordSet(const QVariantMap &reply, const QVariant &value)
void LinkShare::setExpireDate(const QDate &date)
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), this, SLOT(slotExpireDateSet(QVariantMap, QVariant)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotExpireDateSet(QVariantMap, QVariant)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
job->setExpireDate(getId(), date);
}
void LinkShare::slotExpireDateSet(const QVariantMap &reply, const QVariant &value)
void LinkShare::slotExpireDateSet(const QVariantMap&, const QVariant &value)
{
QString message;
int code = OcsShareJob::getJsonReturnCode(reply, message);
if (code != 100) {
//emit error
}
_expireDate = value.toDate();
emit expireDateSet();
}
@ -177,7 +159,8 @@ void ShareManager::createLinkShare(const QString &path,
const QString &password)
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotLinkShareCreated(QVariantMap)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
job->createShare(path, OcsShareJob::ShareType::Link, password);
}
@ -193,9 +176,7 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
if (code == 403) {
emit linkShareRequiresPassword();
return;
} else if (code != 100) {
//emit error
}
}
//Parse share
auto data = reply.value("ocs").toMap().value("data").toMap();
@ -207,18 +188,13 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
void ShareManager::fetchShares(const QString &path)
{
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(jobFinished(QVariantMap)), this, SLOT(slotSharesFetched(QVariantMap)));
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotSharesFetched(QVariantMap)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
job->getShares(path);
}
void ShareManager::slotSharesFetched(const QVariantMap &reply)
{
QString message;
int code = OcsShareJob::getJsonReturnCode(reply, message);
if (code != 100 && code != 404) {
//emit error!
}
auto tmpShares = reply.value("ocs").toMap().value("data").toList();
const QString versionString = _account->serverVersion();
qDebug() << Q_FUNC_INFO << versionString << "Fetched" << tmpShares.count() << "shares";
@ -280,4 +256,9 @@ QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QVariantMap &data)
expireDate));
}
void ShareManager::slotOcsError(int statusCode, const QString &message)
{
emit serverError(statusCode, message);
}
}

View file

@ -82,8 +82,11 @@ protected:
int _shareType;
int _permissions;
protected slots:
void slotOcsError(int statusCode, const QString &message);
private slots:
void slotDeleted(const QVariantMap &reply);
void slotDeleted();
};
@ -156,9 +159,9 @@ signals:
void passwordSet();
private slots:
void slotPasswordSet(const QVariantMap &reply, const QVariant &value);
void slotPublicUploadSet(const QVariantMap &reply, const QVariant &value);
void slotExpireDateSet(const QVariantMap &reply, const QVariant &value);
void slotPasswordSet(const QVariantMap&, const QVariant &value);
void slotPublicUploadSet(const QVariantMap&, const QVariant &value);
void slotExpireDateSet(const QVariantMap&, const QVariant &value);
private:
bool _passwordSet;
@ -208,6 +211,7 @@ signals:
private slots:
void slotSharesFetched(const QVariantMap &reply);
void slotLinkShareCreated(const QVariantMap &reply);
void slotOcsError(int statusCode, const QString &message);
private:
QSharedPointer<LinkShare> parseLinkShare(const QVariantMap &data);

View file

@ -175,9 +175,10 @@ ShareDialog::ShareDialog(AccountPtr account, const QString &sharePath, const QSt
*/
_manager = new ShareManager(_account, this);
connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), this, SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
connect(_manager, SIGNAL(linkShareCreated(const QSharedPointer<LinkShare>)), this, SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
connect(_manager, SIGNAL(linkShareRequiresPassword()), this, SLOT(slotCreateShareRequiresPassword()));
connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
connect(_manager, SIGNAL(linkShareCreated(QSharedPointer<LinkShare>)), SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
connect(_manager, SIGNAL(linkShareRequiresPassword()), SLOT(slotCreateShareRequiresPassword()));
connect(_manager, SIGNAL(serverError(int, QString)), SLOT(displayError(int, QString)));
}
void ShareDialog::done( int r ) {
@ -320,10 +321,11 @@ void ShareDialog::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
_ui->pushButton_copy->setEnabled(true);
// Connect all shares signals to gui slots
connect(_share.data(), SIGNAL(expireDateSet()), this, SLOT(slotExpireSet()));
connect(_share.data(), SIGNAL(publicUploadSet()), this, SLOT(slotPublicUploadSet()));
connect(_share.data(), SIGNAL(passwordSet()), this, SLOT(slotPasswordSet()));
connect(_share.data(), SIGNAL(shareDeleted()), this, SLOT(slotDeleteShareFetched()));
connect(_share.data(), SIGNAL(expireDateSet()), SLOT(slotExpireSet()));
connect(_share.data(), SIGNAL(publicUploadSet()), SLOT(slotPublicUploadSet()));
connect(_share.data(), SIGNAL(passwordSet()), SLOT(slotPasswordSet()));
connect(_share.data(), SIGNAL(shareDeleted()), SLOT(slotDeleteShareFetched()));
connect(_share.data(), SIGNAL(serverError(int, QString)), SLOT(displayError(int, QString)));
break;
}
@ -545,6 +547,13 @@ void ShareDialog::setShareCheckBoxTitle(bool haveShares)
}
void ShareDialog::displayError(int code, const QString &message)
{
const QString arg = QString("%1, %2").arg(code).arg(message);
const QString errMsg = tr("OCS API error code: %1").arg(arg);
displayError(errMsg);
}
void ShareDialog::displayError(const QString& errMsg)
{
_ui->errorLabel->setText( errMsg );

View file

@ -66,6 +66,8 @@ private slots:
void slotCheckBoxEditingClicked();
void slotPublicUploadSet();
void displayError(int code, const QString &message);
void done( int r );
private:
void setShareCheckBoxTitle(bool haveShares);