File indexing completed on 2024-05-12 05:22:21
0001 /* 0002 * This file is part of LibKGAPI library 0003 * 0004 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "permissiondeletejob.h" 0010 #include "driveservice.h" 0011 #include "permission.h" 0012 #include "utils.h" 0013 0014 #include <QNetworkRequest> 0015 #include <QUrlQuery> 0016 0017 using namespace KGAPI2; 0018 using namespace KGAPI2::Drive; 0019 0020 namespace 0021 { 0022 static constexpr bool useDomainAdminAccessDefault = false; 0023 } 0024 0025 class Q_DECL_HIDDEN PermissionDeleteJob::Private 0026 { 0027 public: 0028 QString fileId; 0029 QStringList permissionsIds; 0030 bool supportsAllDrives; 0031 bool useDomainAdminAccess; 0032 }; 0033 0034 PermissionDeleteJob::PermissionDeleteJob(const QString &fileId, const PermissionPtr &permission, const AccountPtr &account, QObject *parent) 0035 : DeleteJob(account, parent) 0036 , d(new Private) 0037 { 0038 d->supportsAllDrives = true; 0039 d->useDomainAdminAccess = useDomainAdminAccessDefault; 0040 d->fileId = fileId; 0041 d->permissionsIds << permission->id(); 0042 } 0043 0044 PermissionDeleteJob::PermissionDeleteJob(const QString &fileId, const QString &permissionId, const AccountPtr &account, QObject *parent) 0045 : DeleteJob(account, parent) 0046 , d(new Private) 0047 { 0048 d->supportsAllDrives = true; 0049 d->useDomainAdminAccess = useDomainAdminAccessDefault; 0050 d->fileId = fileId; 0051 d->permissionsIds << permissionId; 0052 } 0053 0054 PermissionDeleteJob::PermissionDeleteJob(const QString &fileId, const PermissionsList &permissions, const AccountPtr &account, QObject *parent) 0055 : DeleteJob(account, parent) 0056 , d(new Private) 0057 { 0058 d->supportsAllDrives = true; 0059 d->useDomainAdminAccess = useDomainAdminAccessDefault; 0060 d->fileId = fileId; 0061 for (const PermissionPtr &permission : std::as_const(permissions)) { 0062 d->permissionsIds << permission->id(); 0063 } 0064 } 0065 0066 PermissionDeleteJob::PermissionDeleteJob(const QString &fileId, const QStringList &permissionsIds, const AccountPtr &account, QObject *parent) 0067 : DeleteJob(account, parent) 0068 , d(new Private) 0069 { 0070 d->supportsAllDrives = true; 0071 d->useDomainAdminAccess = useDomainAdminAccessDefault; 0072 d->fileId = fileId; 0073 d->permissionsIds << permissionsIds; 0074 } 0075 0076 PermissionDeleteJob::~PermissionDeleteJob() = default; 0077 0078 bool PermissionDeleteJob::supportsAllDrives() const 0079 { 0080 return d->supportsAllDrives; 0081 } 0082 0083 void PermissionDeleteJob::setSupportsAllDrives(bool supportsAllDrives) 0084 { 0085 d->supportsAllDrives = supportsAllDrives; 0086 } 0087 0088 bool PermissionDeleteJob::useDomainAdminAccess() const 0089 { 0090 return d->useDomainAdminAccess; 0091 } 0092 0093 void PermissionDeleteJob::setUseDomainAdminAccess(bool useDomainAdminAccess) 0094 { 0095 d->useDomainAdminAccess = useDomainAdminAccess; 0096 } 0097 0098 void PermissionDeleteJob::start() 0099 { 0100 if (d->permissionsIds.isEmpty()) { 0101 emitFinished(); 0102 return; 0103 } 0104 0105 const QString permissionId = d->permissionsIds.takeFirst(); 0106 QUrl url = DriveService::deletePermissionUrl(d->fileId, permissionId); 0107 QUrlQuery query(url); 0108 query.addQueryItem(QStringLiteral("supportsAllDrives"), Utils::bool2Str(d->supportsAllDrives)); 0109 if (d->useDomainAdminAccess != useDomainAdminAccessDefault) { 0110 query.addQueryItem(QStringLiteral("useDomainAdminAccess"), Utils::bool2Str(d->useDomainAdminAccess)); 0111 } 0112 url.setQuery(query); 0113 QNetworkRequest request(url); 0114 0115 enqueueRequest(request); 0116 } 0117 0118 #include "moc_permissiondeletejob.cpp"