File indexing completed on 2024-05-12 05:22:25
0001 /* 0002 * This file is part of LibKGAPI library 0003 * 0004 * SPDX-FileCopyrightText: 2023 Claudio Cambra <claudio.cambra@kde.org> 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 * 0007 */ 0008 0009 #include "contactgroupdeletejob.h" 0010 #include "peopleservice.h" 0011 #include "private/queuehelper_p.h" 0012 0013 #include <QNetworkRequest> 0014 #include <QNetworkReply> 0015 #include <QUrlQuery> 0016 #include <QJsonDocument> 0017 #include <QJsonObject> 0018 #include <QJsonArray> 0019 0020 namespace KGAPI2::People 0021 { 0022 0023 class Q_DECL_HIDDEN ContactGroupDeleteJob::Private 0024 { 0025 public: 0026 explicit Private(ContactGroupDeleteJob *parent); 0027 void processNextContactGroup(); 0028 0029 QueueHelper<QString> groupResourceNames; 0030 QString lastGroupResourceName; 0031 0032 private: 0033 ContactGroupDeleteJob * const q; 0034 }; 0035 0036 ContactGroupDeleteJob::Private::Private(ContactGroupDeleteJob *parent) 0037 : q(parent) 0038 { 0039 } 0040 0041 void ContactGroupDeleteJob::Private::processNextContactGroup() 0042 { 0043 if (groupResourceNames.atEnd()) { 0044 q->emitFinished(); 0045 return; 0046 } 0047 0048 const auto groupResourceName = groupResourceNames.current(); 0049 const auto deleteUrl = PeopleService::deleteContactGroupUrl(groupResourceName, false); 0050 QNetworkRequest request(deleteUrl); 0051 request.setRawHeader("Host", "people.googleapis.com"); 0052 q->enqueueRequest(request); 0053 } 0054 0055 0056 ContactGroupDeleteJob::ContactGroupDeleteJob(const QStringList &contactGroupResourceNames, const AccountPtr& account, QObject* parent) 0057 : DeleteJob(account, parent) 0058 , d(std::make_unique<Private>(this)) 0059 { 0060 d->groupResourceNames = contactGroupResourceNames; 0061 } 0062 0063 ContactGroupDeleteJob::ContactGroupDeleteJob(const QString &contactGroupResourceName, const AccountPtr &account, QObject* parent) 0064 : DeleteJob(account, parent) 0065 , d(std::make_unique<Private>(this)) 0066 { 0067 d->groupResourceNames << contactGroupResourceName; 0068 } 0069 0070 ContactGroupDeleteJob::~ContactGroupDeleteJob() = default; 0071 0072 void ContactGroupDeleteJob::start() 0073 { 0074 d->processNextContactGroup(); 0075 } 0076 0077 void ContactGroupDeleteJob::handleReply(const QNetworkReply *reply, const QByteArray &rawData) 0078 { 0079 Q_UNUSED(reply); 0080 Q_UNUSED(rawData); 0081 0082 d->groupResourceNames.currentProcessed(); 0083 d->processNextContactGroup(); 0084 } 0085 0086 } 0087 0088 #include "moc_contactgroupdeletejob.cpp"