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 "parentreferencedeletejob.h"
0010 #include "driveservice.h"
0011 #include "parentreference.h"
0012 
0013 #include <QNetworkRequest>
0014 
0015 using namespace KGAPI2;
0016 using namespace KGAPI2::Drive;
0017 
0018 class Q_DECL_HIDDEN ParentReferenceDeleteJob::Private
0019 {
0020 public:
0021     QString fileId;
0022     QStringList referencesIds;
0023 };
0024 
0025 ParentReferenceDeleteJob::ParentReferenceDeleteJob(const QString &fileId, const QString &referenceId, const AccountPtr &account, QObject *parent)
0026     : DeleteJob(account, parent)
0027     , d(new Private)
0028 {
0029     d->fileId = fileId;
0030     d->referencesIds << referenceId;
0031 }
0032 
0033 ParentReferenceDeleteJob::ParentReferenceDeleteJob(const QString &fileId, const QStringList &referencesIds, const AccountPtr &account, QObject *parent)
0034     : DeleteJob(account, parent)
0035     , d(new Private)
0036 {
0037     d->fileId = fileId;
0038     d->referencesIds << referencesIds;
0039 }
0040 
0041 ParentReferenceDeleteJob::ParentReferenceDeleteJob(const QString &fileId, const ParentReferencePtr &reference, const AccountPtr &account, QObject *parent)
0042     : DeleteJob(account, parent)
0043     , d(new Private)
0044 {
0045     d->fileId = fileId;
0046     d->referencesIds << reference->id();
0047 }
0048 
0049 ParentReferenceDeleteJob::ParentReferenceDeleteJob(const QString &fileId, const ParentReferencesList &references, const AccountPtr &account, QObject *parent)
0050     : DeleteJob(account, parent)
0051     , d(new Private)
0052 {
0053     d->fileId = fileId;
0054     for (const ParentReferencePtr &reference : references) {
0055         d->referencesIds << reference->id();
0056     }
0057 }
0058 
0059 ParentReferenceDeleteJob::~ParentReferenceDeleteJob()
0060 {
0061     delete d;
0062 }
0063 
0064 void ParentReferenceDeleteJob::start()
0065 {
0066     if (d->referencesIds.isEmpty()) {
0067         emitFinished();
0068         return;
0069     }
0070 
0071     const QString referenceId = d->referencesIds.takeFirst();
0072     const QUrl url = DriveService::deleteParentReferenceUrl(d->fileId, referenceId);
0073 
0074     QNetworkRequest request(url);
0075 
0076     enqueueRequest(request);
0077 }
0078 
0079 #include "moc_parentreferencedeletejob.cpp"