Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2022-01-31 13:57:20 +0300
committerHannah von Reth <vonreth@kde.org>2022-02-04 13:53:42 +0300
commitc370712d8245bda4a901f1d9ff8760a9826b4604 (patch)
treef84876a9da1b5a20d101bef3f1e67ff55026ffb8 /src/gui/sharemanager.cpp
parent322d9d28bb2bbfeeaa84e46c8544e3c845db4356 (diff)
Replace ocsjob with JsonApiJob
Diffstat (limited to 'src/gui/sharemanager.cpp')
-rw-r--r--src/gui/sharemanager.cpp273
1 files changed, 125 insertions, 148 deletions
diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp
index 126bec9f9..7d5899096 100644
--- a/src/gui/sharemanager.cpp
+++ b/src/gui/sharemanager.cpp
@@ -90,16 +90,16 @@ QSharedPointer<Sharee> Share::getShareWith() const
void Share::setPermissions(Permissions permissions)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &Share::slotPermissionsSet);
- connect(job, &OcsJob::ocsError, this, &Share::slotOcsError);
- job->setPermissions(getId(), permissions);
-}
-
-void Share::slotPermissionsSet(const QJsonDocument &, const QVariant &value)
-{
- _permissions = (Permissions)value.toInt();
- emit permissionsSet();
+ auto *job = OcsShareJob::setPermissions(_account, this, getId(), permissions);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, permissions, this] {
+ if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ _permissions = permissions;
+ emit permissionsSet();
+ }
+ });
+ job->start();
}
Share::Permissions Share::getPermissions() const
@@ -109,22 +109,16 @@ Share::Permissions Share::getPermissions() const
void Share::deleteShare()
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &Share::slotDeleted);
- connect(job, &OcsJob::ocsError, this, &Share::slotOcsError);
- job->deleteShare(getId());
-}
-
-void Share::slotDeleted()
-{
- emit shareDeleted();
-
- updateFolder(_account, _path);
-}
-
-void Share::slotOcsError(int statusCode, const QString &message)
-{
- emit serverError(statusCode, message);
+ auto *job = OcsShareJob::deleteShare(_account, this, getId());
+ connect(job, &JsonApiJob::finishedSignal, this, [job, this] {
+ if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ emit shareDeleted();
+ updateFolder(_account, _path);
+ }
+ });
+ job->start();
}
QUrl LinkShare::getLink() const
@@ -184,10 +178,16 @@ QString LinkShare::getName() const
void LinkShare::setName(const QString &name)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotNameSet);
- connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
- job->setName(getId(), name);
+ auto *job = OcsShareJob::setName(_account, this, getId(), name);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, name, this] {
+ if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ _name = name;
+ emit nameSet();
+ }
+ });
+ job->start();
}
QString LinkShare::getToken() const
@@ -197,51 +197,39 @@ QString LinkShare::getToken() const
void LinkShare::setPassword(const QString &password)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotPasswordSet);
- connect(job, &OcsJob::ocsError, this, &LinkShare::slotSetPasswordError);
- job->setPassword(getId(), password);
-}
-
-void LinkShare::slotPasswordSet(const QJsonDocument &, const QVariant &value)
-{
- _passwordSet = value.toString() != "";
- emit passwordSet();
+ auto *job = OcsShareJob::setPassword(_account, this, getId(), password);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, password, this] {
+ if (!job->ocsSuccess()) {
+ emit passwordSetError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ _passwordSet = !password.isEmpty();
+ emit passwordSet();
+ }
+ });
+ job->start();
}
void LinkShare::setExpireDate(const QDate &date)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotExpireDateSet);
- connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
- job->setExpireDate(getId(), date);
-}
-
-void LinkShare::slotExpireDateSet(const QJsonDocument &reply, const QVariant &value)
-{
- auto data = reply.object().value("ocs").toObject().value("data").toObject();
-
- /*
- * If the reply provides a data back (more REST style)
- * they use this date.
- */
- if (data.value("expiration").isString()) {
- _expireDate = QDate::fromString(data.value("expiration").toString(), "yyyy-MM-dd 00:00:00");
- } else {
- _expireDate = value.toDate();
- }
- emit expireDateSet();
-}
-
-void LinkShare::slotSetPasswordError(int statusCode, const QString &message)
-{
- emit passwordSetError(statusCode, message);
-}
-
-void LinkShare::slotNameSet(const QJsonDocument &, const QVariant &value)
-{
- _name = value.toString();
- emit nameSet();
+ auto *job = OcsShareJob::setExpireDate(_account, this, getId(), date);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, date, this] {
+ if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ auto data = job->data().value("ocs").toObject().value("data").toObject();
+ /*
+ * If the reply provides a data back (more REST style)
+ * they use this date.
+ */
+ if (data.value("expiration").isString()) {
+ _expireDate = QDate::fromString(data.value("expiration").toString(), "yyyy-MM-dd 00:00:00");
+ } else {
+ _expireDate = date;
+ }
+ emit expireDateSet();
+ }
+ });
+ job->start();
}
ShareManager::ShareManager(AccountPtr account, QObject *parent)
@@ -256,53 +244,48 @@ void ShareManager::createLinkShare(const QString &path,
const QDate &expireDate,
const Share::Permissions permissions)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotLinkShareCreated);
- connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
- job->createLinkShare(path, name, password, expireDate, permissions);
-}
-
-void ShareManager::slotLinkShareCreated(const QJsonDocument &reply)
-{
- QString message;
- int code = OcsShareJob::getJsonReturnCode(reply, message);
-
- // A 403 generally means some of the settings for the share are not allowed.
- // Maybe a password is required, or the expire date isn't acceptable.
- if (code == 403) {
- emit linkShareCreationForbidden(message);
- return;
- }
-
- //Parse share
- auto data = reply.object().value("ocs").toObject().value("data").toObject();
- QSharedPointer<LinkShare> share(parseLinkShare(data));
+ auto *job = OcsShareJob::createLinkShare(_account, this, path, name, password, expireDate, permissions);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, password, this] {
+ if (job->ocsStatus() == 403) {
+ // A 403 generally means some of the settings for the share are not allowed.
+ // Maybe a password is required, or the expire date isn't acceptable.
+ emit linkShareCreationForbidden(job->ocsMessage());
+ } else if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ // Parse share
+ auto data = job->data().value("ocs").toObject().value("data").toObject();
+ QSharedPointer<LinkShare> share(parseLinkShare(data));
- emit linkShareCreated(share);
+ emit linkShareCreated(share);
- updateFolder(_account, share->path());
+ updateFolder(_account, share->path());
+ }
+ });
+ job->start();
}
-
void ShareManager::createShare(const QString &path,
const Share::ShareType shareType,
- const QString shareWith,
+ const QString &shareWith,
const Share::Permissions desiredPermissions)
{
- auto job = new OcsShareJob(_account);
- connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
- connect(job, &OcsShareJob::shareJobFinished, this,
- [=](const QJsonDocument &reply) {
+ auto *job = OcsShareJob::getSharedWithMe(_account, this);
+ connect(job, &JsonApiJob::finishedSignal, this, [=] {
+ if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
// Note: The following code attempts to determine if the item was shared with
// the user and what the permissions were. It doesn't do a good job at it since
// the == path comparison will mean it doesn't work for subitems of shared
// folders. Also, it's nicer if the calling code determines the share-permissions
// (see maxSharingPermissions) via a PropFind and passes in valid permissions.
// Remove this code for >= 2.7.0.
+ // TODO: sigh
// Find existing share permissions (if this was shared with us)
Share::Permissions existingPermissions = SharePermissionDefault;
- const auto &array = reply.object()[QLatin1String("ocs")].toObject()[QLatin1String("data")].toArray();
+ const auto &array = job->data()[QLatin1String("ocs")].toObject()[QLatin1String("data")].toArray();
for (const auto &element : array) {
auto map = element.toObject();
if (map["file_target"] == path)
@@ -319,60 +302,59 @@ void ShareManager::createShare(const QString &path,
validPermissions &= existingPermissions;
}
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotShareCreated);
- connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
- job->createShare(path, shareType, shareWith, validPermissions);
- });
- job->getSharedWithMe();
-}
+ auto *job2 = OcsShareJob::createShare(_account, this, path, shareType, shareWith, validPermissions);
+ connect(job2, &JsonApiJob::finishedSignal, this, [job2, this] {
+ if (!job2->ocsSuccess()) {
+ emit serverError(job2->ocsStatus(), job2->ocsMessage());
+ } else {
+ //Parse share
+ auto data = job2->data().value("ocs").toObject().value("data").toObject();
+ QSharedPointer<Share> share(parseShare(data));
+ emit shareCreated(share);
+ updateFolder(_account, share->path());
-void ShareManager::slotShareCreated(const QJsonDocument &reply)
-{
- //Parse share
- auto data = reply.object().value("ocs").toObject().value("data").toObject();
- QSharedPointer<Share> share(parseShare(data));
-
- emit shareCreated(share);
-
- updateFolder(_account, share->path());
+ } });
+ job2->start();
+ }
+ });
+ job->start();
}
void ShareManager::fetchShares(const QString &path)
{
- OcsShareJob *job = new OcsShareJob(_account);
- connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotSharesFetched);
- connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
- job->getShares(path);
-}
-
-void ShareManager::slotSharesFetched(const QJsonDocument &reply)
-{
- const auto &tmpShares = reply.object().value(QLatin1String("ocs")).toObject().value(QLatin1String("data")).toArray();
- const QString versionString = _account->serverVersion();
- qCDebug(lcSharing) << versionString << "Fetched" << tmpShares.count() << "shares";
+ auto *job = OcsShareJob::getShares(_account, this, path);
+ connect(job, &JsonApiJob::finishedSignal, this, [job, path, this] {
+ // 404 seems to be ok according to refactored code
+ if (job->ocsStatus() == 404) {
+ emit sharesFetched({});
+ } else if (!job->ocsSuccess()) {
+ emit serverError(job->ocsStatus(), job->ocsMessage());
+ } else {
+ const auto &tmpShares = job->data().value(QLatin1String("ocs")).toObject().value(QLatin1String("data")).toArray();
+ qCDebug(lcSharing) << _account->serverVersion() << "Fetched" << tmpShares.count() << "shares";
- QList<QSharedPointer<Share>> shares;
+ QList<QSharedPointer<Share>> shares;
- for (const auto &share : tmpShares) {
- auto data = share.toObject();
+ for (const auto &share : tmpShares) {
+ auto data = share.toObject();
- auto shareType = data.value("share_type").toInt();
+ auto shareType = data.value("share_type").toInt();
- QSharedPointer<Share> newShare;
+ QSharedPointer<Share> newShare;
- if (shareType == Share::TypeLink) {
- newShare = parseLinkShare(data);
- } else {
- newShare = parseShare(data);
+ if (shareType == Share::TypeLink) {
+ newShare = parseLinkShare(data);
+ } else {
+ newShare = parseShare(data);
+ }
+ shares.append(QSharedPointer<Share>(newShare));
+ }
+ qCDebug(lcSharing) << "Sending " << shares.count() << "shares";
+ emit sharesFetched(shares);
}
-
- shares.append(QSharedPointer<Share>(newShare));
- }
-
- qCDebug(lcSharing) << "Sending " << shares.count() << "shares";
- emit sharesFetched(shares);
+ });
+ job->start();
}
QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QJsonObject &data)
@@ -421,9 +403,4 @@ QSharedPointer<Share> ShareManager::parseShare(const QJsonObject &data)
(Share::Permissions)data.value("permissions").toInt(),
sharee));
}
-
-void ShareManager::slotOcsError(int statusCode, const QString &message)
-{
- emit serverError(statusCode, message);
-}
}