[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