From 4a7242c8f9d99700c5f64ee3aba6b29d025339f0 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 6 Oct 2015 09:07:45 +0200 Subject: [PATCH] Extended capabilities API * Naming of capabilities is now a bit more consistent --- src/gui/sharedialog.cpp | 8 ++++---- src/libsync/capabilities.cpp | 26 +++++++++++++++++++++++--- src/libsync/capabilities.h | 9 ++++++--- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index bcfe1694f..f1775fedf 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -143,15 +143,15 @@ ShareDialog::ShareDialog(AccountPtr account, const QString &sharePath, const QSt // Parse capabilities // If password is enforced then don't allow users to disable it - if (_account->capabilities().publicLinkEnforcePassword()) { + if (_account->capabilities().sharePublicLinkEnforcePassword()) { _ui->checkBox_password->setEnabled(false); } // If expiredate is enforced do not allow disable and set max days - if (_account->capabilities().publicLinkEnforceExpireDate()) { + if (_account->capabilities().sharePublicLinkEnforceExpireDate()) { _ui->checkBox_expire->setEnabled(false); _ui->calendar->setMaximumDate(QDate::currentDate().addDays( - _account->capabilities().publicLinkExpireDateDays() + _account->capabilities().sharePublicLinkExpireDateDays() )); } } @@ -466,7 +466,7 @@ void ShareDialog::slotCheckBoxShareLinkClicked() * Check the capabilities if the server requires a password for a share * Ask for it directly */ - if (_account->capabilities().publicLinkEnforcePassword()) { + if (_account->capabilities().sharePublicLinkEnforcePassword()) { _pi_link->stopAnimation(); _ui->checkBox_password->setChecked(true); _ui->checkBox_password->setEnabled(false); diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index 5b826d7ff..e477b9f43 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -23,21 +23,41 @@ Capabilities::Capabilities(const QVariantMap &capabilities) { } -bool Capabilities::publicLinkEnforcePassword() const +bool Capabilities::shareAPI() const +{ + if (_capabilities["files_sharing"].toMap().contains("api_enabled")) { + return _capabilities["files_sharing"].toMap()["api_enabled"].toBool(); + } else { + // This was later added so if it is not present just assume the API is enabled. + return true; + } +} + +bool Capabilities::sharePublicLink() const +{ + return _capabilities["files_sharing"].toMap()["public"].toMap()["enabled"].toBool(); +} + +bool Capabilities::sharePublicLinkEnforcePassword() const { return _capabilities["files_sharing"].toMap()["public"].toMap()["password"].toMap()["enforced"].toBool(); } -bool Capabilities::publicLinkEnforceExpireDate() const +bool Capabilities::sharePublicLinkEnforceExpireDate() const { return _capabilities["files_sharing"].toMap()["public"].toMap()["expire_date"].toMap()["enforced"].toBool(); } -int Capabilities::publicLinkExpireDateDays() const +int Capabilities::sharePublicLinkExpireDateDays() const { return _capabilities["files_sharing"].toMap()["public"].toMap()["expire_date"].toMap()["days"].toInt(); } +bool Capabilities::shareResharing() const +{ + return _capabilities["files_sharing"].toMap()["resharing"].toBool(); +} + QStringList Capabilities::supportedChecksumTypes() const { return QStringList(); diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h index eb385721e..51fb8e7b7 100644 --- a/src/libsync/capabilities.h +++ b/src/libsync/capabilities.h @@ -32,9 +32,12 @@ class OWNCLOUDSYNC_EXPORT Capabilities { public: Capabilities(const QVariantMap &capabilities); - bool publicLinkEnforcePassword() const; - bool publicLinkEnforceExpireDate() const; - int publicLinkExpireDateDays() const; + bool shareAPI() const; + bool sharePublicLink() const; + bool sharePublicLinkEnforcePassword() const; + bool sharePublicLinkEnforceExpireDate() const; + int sharePublicLinkExpireDateDays() const; + bool shareResharing() const; QStringList supportedChecksumTypes() const; private: -- 2.30.2