[Pkg-owncloud-commits] [owncloud-client] 243/484: [Sharing] Add setpermission to sharing code

Sandro Knauß hefee-guest at moszumanska.debian.org
Wed Dec 16 00:37:47 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 37098c96f932babe1270d74a93e82e3916af4575
Author: Roeland Jago Douma <rullzer at owncloud.com>
Date:   Sat Oct 31 13:39:08 2015 +0100

    [Sharing] Add setpermission to sharing code
    
    For user/group/remote shares we were just missing the setPermissions
    functionality
---
 src/gui/ocssharejob.cpp | 36 ++++++++++++++++++++++++-----
 src/gui/ocssharejob.h   | 26 ++++++++++++++++++---
 src/gui/share.cpp       | 61 +++++++++++++++++++++++++++++++++++++++++--------
 src/gui/share.h         | 34 +++++++++++++++++++++++----
 4 files changed, 134 insertions(+), 23 deletions(-)

diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp
index fe6afa6..37ca5aa 100644
--- a/src/gui/ocssharejob.cpp
+++ b/src/gui/ocssharejob.cpp
@@ -83,26 +83,50 @@ void OcsShareJob::setPublicUpload(const QString &shareId, bool publicUpload)
     start();
 }
 
-void OcsShareJob::createShare(const QString &path, Share::ShareType shareType, const QString &password, const QDate &date)
+void OcsShareJob::setPermissions(const QString &shareId, 
+                                 const Share::Permissions permissions)
+{
+    appendPath(shareId);
+    setVerb("PUT");
+
+    addParam(QString::fromLatin1("permissions"), QString::number(permissions));
+    _value = (int)permissions;
+
+    start();
+}
+
+void OcsShareJob::createLinkShare(const QString &path, 
+                                  const QString &password)
 {
     setVerb("POST");
 
     addParam(QString::fromLatin1("path"), path);
-    addParam(QString::fromLatin1("shareType"), QString::number(static_cast<int>(shareType)));
+    addParam(QString::fromLatin1("shareType"), QString::number(Share::TypeLink));
 
     if (!password.isEmpty()) {
         addParam(QString::fromLatin1("password"), password);
     }
 
-    if (date.isValid()) {
-        addParam(QString::fromLatin1("expireDate"), date.toString("yyyy-MM-dd"));
-    }
-
     addPassStatusCode(403);
 
     start();
 }
 
+void OcsShareJob::createShare(const QString& path, 
+                              const Share::ShareType shareType,
+                              const QString& shareWith,
+                              const Share::Permissions permissions)
+{
+    setVerb("POST");
+
+    addParam(QString::fromLatin1("path"), path);
+    addParam(QString::fromLatin1("shareType"), QString::number(shareType));
+    addParam(QString::fromLatin1("shareWith"), shareWith);
+    addParam(QString::fromLatin1("permissions"), QString::number(permissions));
+
+    start();
+}
+
 void OcsShareJob::jobDone(QVariantMap reply)
 {
     emit shareJobFinished(reply, _value);
diff --git a/src/gui/ocssharejob.h b/src/gui/ocssharejob.h
index c970df9..bc65b53 100644
--- a/src/gui/ocssharejob.h
+++ b/src/gui/ocssharejob.h
@@ -74,14 +74,34 @@ public:
     void setPublicUpload(const QString &shareId, bool publicUpload);
 
     /**
+     * Set the permissions
+     *
+     * @param permissions
+     */
+    void setPermissions(const QString &shareId, 
+                        const Share::Permissions permissions);
+
+    /**
+     * Create a new link share
+     *
+     * @param path The path of the file/folder to share
+     * @param password Optionally a password for the share
+     */
+    void createLinkShare(const QString& path, 
+                         const QString& password = "");
+
+    /**
      * Create a new share
      *
      * @param path The path of the file/folder to share
      * @param shareType The type of share (user/group/link/federated)
-     * @param password Optionally a password for the share
-     * @param date Optionally an expire date for the share
+     * @param shareWith The uid/gid/federated id to share with
+     * @param permissions The permissions the share will have
      */
-    void createShare(const QString& path, Share::ShareType shareType, const QString& password = "", const QDate& date = QDate());
+    void createShare(const QString& path, 
+                     const Share::ShareType shareType,
+                     const QString& shareWith = "",
+                     const Share::Permissions permissions = Share::PermissionRead);
 
 signals:
     /**
diff --git a/src/gui/share.cpp b/src/gui/share.cpp
index 7a62fe3..0af7425 100644
--- a/src/gui/share.cpp
+++ b/src/gui/share.cpp
@@ -22,13 +22,15 @@ namespace OCC {
 Share::Share(AccountPtr account, 
              const QString& id, 
              const QString& path, 
-             ShareType shareType,
-             Permissions permissions)
+             const ShareType shareType,
+             const Permissions permissions,
+             const QString shareWith)
 : _account(account),
   _id(id),
   _path(path),
   _shareType(shareType),
-  _permissions(permissions)
+  _permissions(permissions),
+  _shareWith(shareWith)
 {
 
 }
@@ -43,6 +45,20 @@ Share::ShareType Share::getShareType() const
     return _shareType;
 }
 
+void Share::setPermissions(Permissions permissions)
+{
+    OcsShareJob *job = new OcsShareJob(_account, this);
+    connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotPermissionsSet(QVariantMap, QVariant)));
+    connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
+    job->setPermissions(getId(), permissions);
+}
+
+void Share::slotPermissionsSet(const QVariantMap &, const QVariant &value)
+{
+    _permissions = (Permissions)value.toInt();
+    emit permissionsSet();
+}
+
 Share::Permissions Share::getPermissions() const
 {
     return _permissions;
@@ -112,7 +128,6 @@ void LinkShare::setPublicUpload(bool publicUpload)
 
 void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
 {
-    //TODO FIX permission with names
     if (value.toBool()) {
         _permissions = PermissionRead | PermissionUpdate | PermissionCreate;
     } else {
@@ -163,7 +178,7 @@ void ShareManager::createLinkShare(const QString &path,
     OcsShareJob *job = new OcsShareJob(_account, this);
     connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
     connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
-    job->createShare(path, Share::TypeLink, password);
+    job->createLinkShare(path, password);
 }
 
 void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
@@ -187,6 +202,26 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
     emit linkShareCreated(share);
 }
 
+void ShareManager::createShare(const QString& path,
+                               const Share::ShareType shareType,
+                               const QString shareWith,
+                               const Share::Permissions permissions)
+{
+    OcsShareJob *job = new OcsShareJob(_account, this);
+    connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotShareCreated(QVariantMap)));
+    connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
+    job->createShare(path, shareType, shareWith, permissions);
+}
+
+void ShareManager::slotShareCreated(const QVariantMap &reply)
+{
+    //Parse share
+    auto data = reply.value("ocs").toMap().value("data").toMap();
+    QSharedPointer<Share> share(parseShare(data));
+
+    emit shareCreated(share);
+}
+
 void ShareManager::fetchShares(const QString &path)
 {
     OcsShareJob *job = new OcsShareJob(_account, this);
@@ -213,11 +248,7 @@ void ShareManager::slotSharesFetched(const QVariantMap &reply)
         if (shareType == Share::TypeLink) {
             newShare = parseLinkShare(data);
         } else {
-            newShare = QSharedPointer<Share>(new Share(_account,
-                                                       data.value("id").toString(),
-                                                       data.value("path").toString(),
-                                                       (Share::ShareType)shareType,
-                                                       (Share::Permissions)data.value("permissions").toInt()));
+            newShare = parseShare(data);
         }
 
         shares.append(QSharedPointer<Share>(newShare));    
@@ -257,6 +288,16 @@ QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QVariantMap &data)
                                                    expireDate));
 }
 
+QSharedPointer<Share> ShareManager::parseShare(const QVariantMap &data) {
+
+    return QSharedPointer<Share>(new Share(_account,
+                                           data.value("id").toString(),
+                                           data.value("path").toString(),
+                                           (Share::ShareType)data.value("share_type").toInt(),
+                                           (Share::Permissions)data.value("permissions").toInt(),
+                                           data.value("share_with").toString()));
+}
+
 void ShareManager::slotOcsError(int statusCode, const QString &message)
 {
     emit serverError(statusCode, message);   
diff --git a/src/gui/share.h b/src/gui/share.h
index 41c7106..3962fca 100644
--- a/src/gui/share.h
+++ b/src/gui/share.h
@@ -59,8 +59,9 @@ public:
     explicit Share(AccountPtr account,
                    const QString& id,
                    const QString& path,
-                   ShareType shareType,
-                   Permissions permissions);
+                   const ShareType shareType,
+                   const Permissions permissions,
+                   const QString shareWith = "");
 
     /*
      * Get the id
@@ -73,6 +74,11 @@ public:
     ShareType getShareType() const;
 
     /*
+     * Get the shareWith
+     */
+    QString getShareWith() const;
+
+    /*
      * Get permissions
      */
     Permissions getPermissions() const;
@@ -83,7 +89,7 @@ public:
      * On success the permissionsSet signal is emitted
      * In case of a server error the serverError signal is emitted.
      */
-    void setPermissions(int permissions);
+    void setPermissions(Permissions permissions);
 
     /**
      * Deletes a share
@@ -104,12 +110,14 @@ protected:
     QString _path;
     ShareType _shareType;
     Permissions _permissions;
+    QString _shareWith;
 
 protected slots:
     void slotOcsError(int statusCode, const QString &message);
 
 private slots:
     void slotDeleted();
+    void slotPermissionsSet(const QVariantMap &, const QVariant &value);
 
 };
 
@@ -125,7 +133,7 @@ public:
     explicit LinkShare(AccountPtr account,
                        const QString& id,
                        const QString& path,
-                       Permissions permissions,
+                       const Permissions permissions,
                        bool passwordSet,
                        const QUrl& url,
                        const QDate& expireDate);
@@ -216,6 +224,21 @@ public:
                          const QString& password="");
 
     /**
+     * Tell the manager to create a new share
+     *
+     * @param path The path of the share relative to the user folder on the server
+     * @param shareType The type of share (TypeUser, TypeGroup, TypeRemote)
+     * @param Permissions The share permissions
+     *
+     * On success the signal shareCreated is emitted
+     * In case of a server error the serverError signal is emitted
+     */
+    void createShare(const QString& path,
+                     const Share::ShareType shareType,
+                     const QString shareWith,
+                     const Share::Permissions permissions);
+
+    /**
      * Fetch all the shares for path
      *
      * @param path The path to get the shares for relative to the users folder on the server
@@ -226,6 +249,7 @@ public:
     void fetchShares(const QString& path);
 
 signals:
+    void shareCreated(const QSharedPointer<Share> &share);
     void linkShareCreated(const QSharedPointer<LinkShare> &share);
     void linkShareRequiresPassword();
     void sharesFetched(const QList<QSharedPointer<Share>> &shares);
@@ -234,10 +258,12 @@ signals:
 private slots:
     void slotSharesFetched(const QVariantMap &reply);
     void slotLinkShareCreated(const QVariantMap &reply);
+    void slotShareCreated(const QVariantMap &reply);
     void slotOcsError(int statusCode, const QString &message);
 
 private:
     QSharedPointer<LinkShare> parseLinkShare(const QVariantMap &data);
+    QSharedPointer<Share> parseShare(const QVariantMap &data);
 
     AccountPtr _account;
 };

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list