File indexing completed on 2024-04-28 03:53:54

0001 /*
0002     SPDX-FileCopyrightText: 2010 Grégory Oestreicher <greg@kamago.net>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "davcollectiondeletejob.h"
0008 #include "davjobbase_p.h"
0009 
0010 #include "daverror.h"
0011 
0012 #include <KIO/DeleteJob>
0013 #include <KIO/Job>
0014 
0015 using namespace KDAV;
0016 
0017 namespace KDAV
0018 {
0019 class DavCollectionDeleteJobPrivate : public DavJobBasePrivate
0020 {
0021 public:
0022     void davJobFinished(KJob *job);
0023 
0024     DavUrl mUrl;
0025 };
0026 }
0027 
0028 DavCollectionDeleteJob::DavCollectionDeleteJob(const DavUrl &url, QObject *parent)
0029     : DavJobBase(new DavCollectionDeleteJobPrivate, parent)
0030 {
0031     Q_D(DavCollectionDeleteJob);
0032     d->mUrl = url;
0033 }
0034 
0035 void DavCollectionDeleteJob::start()
0036 {
0037     Q_D(DavCollectionDeleteJob);
0038     KIO::DeleteJob *job = KIO::del(d->mUrl.url(), KIO::HideProgressInfo | KIO::DefaultFlags);
0039     job->addMetaData(QStringLiteral("PropagateHttpHeader"), QStringLiteral("true"));
0040     job->addMetaData(QStringLiteral("cookies"), QStringLiteral("none"));
0041     job->addMetaData(QStringLiteral("no-auth-prompt"), QStringLiteral("true"));
0042 
0043     connect(job, &KIO::DeleteJob::result, this, [d](KJob *job) {
0044         d->davJobFinished(job);
0045     });
0046 }
0047 
0048 void DavCollectionDeleteJobPrivate::davJobFinished(KJob *job)
0049 {
0050     KIO::DeleteJob *deleteJob = qobject_cast<KIO::DeleteJob *>(job);
0051 
0052     if (deleteJob->error() && deleteJob->error() != KIO::ERR_NO_CONTENT) {
0053         const int responseCode = deleteJob->queryMetaData(QStringLiteral("responsecode")).isEmpty() //
0054             ? 0
0055             : deleteJob->queryMetaData(QStringLiteral("responsecode")).toInt();
0056 
0057         setLatestResponseCode(responseCode);
0058         setError(ERR_COLLECTIONDELETE);
0059         setJobErrorText(deleteJob->errorText());
0060         setJobError(deleteJob->error());
0061         setErrorTextFromDavError();
0062     }
0063 
0064     emitResult();
0065 }
0066 
0067 #include "moc_davcollectiondeletejob.cpp"