File indexing completed on 2024-05-05 05:13:02
0001 /* 0002 This file is part of Akregator. 0003 0004 SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil@kde.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0007 */ 0008 0009 #include "feedretriever.h" 0010 #include "akregator-version.h" 0011 #include "akregatorconfig.h" 0012 0013 #include <KIO/StoredTransferJob> 0014 0015 #include <QUrl> 0016 0017 using namespace Akregator; 0018 0019 FeedRetriever::FeedRetriever() 0020 : Syndication::DataRetriever() 0021 { 0022 } 0023 0024 void FeedRetriever::retrieveData(const QUrl &url) 0025 { 0026 QString userAgent = QStringLiteral("Akregator/%1; syndication").arg(QStringLiteral(AKREGATOR_VERSION)); 0027 if (!Settings::customUserAgent().isEmpty()) { 0028 userAgent = Settings::customUserAgent(); 0029 } 0030 bool useCache = Settings::useHTMLCache(); 0031 0032 auto job = KIO::storedGet(url, KIO::NoReload, KIO::HideProgressInfo); 0033 job->addMetaData(QStringLiteral("UserAgent"), userAgent); 0034 job->addMetaData(QStringLiteral("accept"), QStringLiteral("application/rss+xml;q=0.9, application/atom+xml;q=0.9, text/*;q=0.8, */*;q=0.7")); 0035 job->addMetaData(QStringLiteral("cache"), useCache ? QStringLiteral("refresh") : QStringLiteral("reload")); 0036 connect(job, &KJob::result, this, &FeedRetriever::getFinished); 0037 mJob = job; 0038 mJob->start(); 0039 } 0040 0041 int FeedRetriever::errorCode() const 0042 { 0043 return mError; 0044 } 0045 0046 void FeedRetriever::abort() 0047 { 0048 if (mJob) { 0049 mJob->kill(); 0050 mJob = nullptr; 0051 } 0052 } 0053 0054 void FeedRetriever::getFinished(KJob *job) 0055 { 0056 if (job->error()) { 0057 mError = job->error(); 0058 Q_EMIT dataRetrieved({}, false); 0059 return; 0060 } 0061 0062 Q_EMIT dataRetrieved(static_cast<KIO::StoredTransferJob *>(job)->data(), true); 0063 } 0064 0065 #include "moc_feedretriever.cpp"