18#include "CachingNetworkManagerFactory.h"
20#include <QNetworkDiskCache>
21#include <QNetworkAccessManager>
22#include <QStandardPaths>
24CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
25 : QNetworkAccessManager(parent)
27 m_networkingStatus =
new connectivityqt::Connectivity(QDBusConnection::sessionBus(),
this);
30QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op,
const QNetworkRequest &request, QIODevice *outgoingData)
32 if (m_networkingStatus->status() != connectivityqt::Connectivity::Status::Online) {
33 qDebug() <<
"Not connected to the internet. Request for" << request.url().toString() <<
"will be served only from the cache.";
34 QNetworkRequest req(request);
35 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
36 return QNetworkAccessManager::createRequest(op, req, outgoingData);
39 return QNetworkAccessManager::createRequest(op, request, outgoingData);
42CachingNetworkManagerFactory::CachingNetworkManagerFactory()
46QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
47 QNetworkAccessManager *manager =
new CachingNetworkAccessManager(parent);
49 QNetworkDiskCache* cache =
new QNetworkDiskCache(manager);
50 cache->setCacheDirectory(QStringLiteral(
"%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
52 manager->setCache(cache);