diff options
| author | Felix "xq" Queißner <git@masterq32.de> | 2021-11-20 15:02:03 +0100 |
|---|---|---|
| committer | Felix "xq" Queißner <git@masterq32.de> | 2021-11-20 15:02:03 +0100 |
| commit | 9dd660d66e23f02716d4b2bad84ac86764de71a6 (patch) | |
| tree | f958489dc64d8afb34702ebe89bf24a71067d1c4 /src/cachehandler.cpp | |
| parent | 9744a24ffbf4d5ea6ad8b418d740c90336ee33b8 (diff) | |
Improves caching api related to urls, implements fragment handling, fixes #237
Diffstat (limited to 'src/cachehandler.cpp')
| -rw-r--r-- | src/cachehandler.cpp | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/src/cachehandler.cpp b/src/cachehandler.cpp index 35447f9..fc23681 100644 --- a/src/cachehandler.cpp +++ b/src/cachehandler.cpp @@ -4,6 +4,11 @@ #include <QDebug> +QString CacheHandler::cleanUrl(QUrl const & url) +{ + return url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment); +} + void CacheHandler::push(const QUrl &url, const QByteArray &body, const MimeType &mime) { // Skip if this item is above the cached item size threshold @@ -20,48 +25,40 @@ void CacheHandler::push(const QUrl &url, const QByteArray &body, const MimeType this->popOldest(); } - QString urlstr = url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment); + QString urlstr = cleanUrl(url); - if (this->page_cache.find(urlstr) != this->page_cache.end()) + auto it = this->page_cache.find(urlstr); + if (it != this->page_cache.end()) { - qDebug() << "cache: updating page"; - auto pg = this->page_cache[urlstr]; + qDebug() << "cache: updating page" << urlstr; + auto pg = it->second; pg->body = body; pg->mime = mime; pg->time_cached = QDateTime::currentDateTime(); - return; } - - this->page_cache[urlstr] = std::make_shared<CachedPage>( - url, body, mime, QDateTime::currentDateTime()); - - qDebug() << "cache: pushing url " << url; - - return; -} - -std::shared_ptr<CachedPage> CacheHandler::find(const QString &url) -{ - if (this->page_cache.find(url) != this->page_cache.end()) + else { - return this->page_cache[url]; + this->page_cache.emplace(urlstr, std::make_shared<CachedPage>(url, body, mime, QDateTime::currentDateTime())); + qDebug() << "cache: pushing url " << urlstr; } - return nullptr; } + std::shared_ptr<CachedPage> CacheHandler::find(const QUrl &url) { - return this->find(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment)); -} + QString urltext = cleanUrl(url); -bool CacheHandler::contains(const QString &url) -{ - return this->page_cache.find(url) != this->page_cache.end(); + auto it = this->page_cache.find(urltext); + if(it != this->page_cache.end()) + { + return it->second; + } + return nullptr; } bool CacheHandler::contains(const QUrl &url) { - return this->contains(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment)); + return this->page_cache.find(cleanUrl(url)) != this->page_cache.end(); } int CacheHandler::size() |
