1 #include "ytjsnamfactory.h"
3 YTJSDiskCache::YTJSDiskCache(QObject *parent) : QNetworkDiskCache(parent) {}
5 void YTJSDiskCache::updateMetaData(const QNetworkCacheMetaData &meta) {
6 auto meta2 = fixMetadata(meta);
7 QNetworkDiskCache::updateMetaData(meta2);
10 QIODevice *YTJSDiskCache::prepare(const QNetworkCacheMetaData &meta) {
11 auto meta2 = fixMetadata(meta);
12 return QNetworkDiskCache::prepare(meta2);
15 QNetworkCacheMetaData YTJSDiskCache::fixMetadata(const QNetworkCacheMetaData &meta) {
18 auto now = QDateTime::currentDateTimeUtc();
19 if (meta2.expirationDate() < now) {
20 meta2.setExpirationDate(now.addSecs(3600));
23 // Remove caching headers
24 auto headers = meta2.rawHeaders();
25 for (auto i = headers.begin(); i != headers.end(); ++i) {
26 // qDebug() << i->first << i->second;
27 if (i->first == "Cache-Control" || i->first == "Expires") {
28 qDebug() << "Removing" << i->first << i->second;
32 meta2.setRawHeaders(headers);
37 YTJSNAM::YTJSNAM(QObject *parent) : QNetworkAccessManager(parent) {
38 auto cache = new YTJSDiskCache(this);
39 cache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) +
42 setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
45 QNetworkReply *YTJSNAM::createRequest(QNetworkAccessManager::Operation op,
46 const QNetworkRequest &request,
47 QIODevice *outgoingData) {
49 req2.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
50 qDebug() << req2.url();
51 return QNetworkAccessManager::createRequest(op, req2, outgoingData);
54 QNetworkAccessManager *YTJSNAMFactory::create(QObject *parent) {
55 qDebug() << "Creating NAM";
56 return new YTJSNAM(parent);