File indexing completed on 2024-04-28 03:53:56
0001 /* 0002 SPDX-FileCopyrightText: 2010 Tobias Koenig <tokoe@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "davmanager_p.h" 0008 0009 #include "protocols/caldavprotocol_p.h" 0010 #include "protocols/carddavprotocol_p.h" 0011 #include "protocols/groupdavprotocol_p.h" 0012 0013 #include <KIO/DavJob> 0014 0015 #include "libkdav_debug.h" 0016 0017 #include <QUrl> 0018 0019 using namespace KDAV; 0020 0021 DavManager::DavManager() = default; 0022 DavManager::~DavManager() = default; 0023 0024 DavManager *DavManager::self() 0025 { 0026 static DavManager sSelf; 0027 return &sSelf; 0028 } 0029 0030 KIO::DavJob *DavManager::createPropFindJob(const QUrl &url, const QString &document, const QString &depth) const 0031 { 0032 KIO::DavJob *job = KIO::davPropFind(url, document, depth, KIO::HideProgressInfo | KIO::DefaultFlags); 0033 0034 job->addMetaData(QStringLiteral("cookies"), QStringLiteral("none")); 0035 job->addMetaData(QStringLiteral("no-auth-prompt"), QStringLiteral("true")); 0036 job->setProperty("davDepth", QVariant::fromValue(depth)); 0037 0038 return job; 0039 } 0040 0041 KIO::DavJob *DavManager::createReportJob(const QUrl &url, const QString &document, const QString &depth) const 0042 { 0043 KIO::DavJob *job = KIO::davReport(url, document, depth, KIO::HideProgressInfo | KIO::DefaultFlags); 0044 0045 job->addMetaData(QStringLiteral("cookies"), QStringLiteral("none")); 0046 job->addMetaData(QStringLiteral("no-auth-prompt"), QStringLiteral("true")); 0047 job->setProperty("davDepth", QVariant::fromValue(depth)); 0048 0049 return job; 0050 } 0051 0052 KIO::DavJob *DavManager::createPropPatchJob(const QUrl &url, const QString &document) const 0053 { 0054 KIO::DavJob *job = KIO::davPropPatch(url, document, KIO::HideProgressInfo | KIO::DefaultFlags); 0055 const QString header = QStringLiteral("Content-Type: text/xml"); 0056 job->addMetaData(QStringLiteral("customHTTPHeader"), header); 0057 job->addMetaData(QStringLiteral("cookies"), QStringLiteral("none")); 0058 job->addMetaData(QStringLiteral("no-auth-prompt"), QStringLiteral("true")); 0059 return job; 0060 } 0061 0062 const DavProtocolBase *DavManager::davProtocol(Protocol protocol) 0063 { 0064 const auto d = DavManager::self(); 0065 if (!d->mProtocols[protocol]) { 0066 switch (protocol) { 0067 case KDAV::CalDav: 0068 d->mProtocols[KDAV::CalDav].reset(new CaldavProtocol()); 0069 break; 0070 case KDAV::CardDav: 0071 d->mProtocols[KDAV::CardDav].reset(new CarddavProtocol()); 0072 break; 0073 case KDAV::GroupDav: 0074 d->mProtocols[KDAV::GroupDav].reset(new GroupdavProtocol()); 0075 break; 0076 default: 0077 qCCritical(KDAV_LOG) << "Unknown protocol: " << static_cast<int>(protocol); 0078 return nullptr; 0079 } 0080 } 0081 0082 return d->mProtocols[protocol].get(); 0083 }