From dcf5f47661b8fcd9f5664ec6dab209d758f14115 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 21 Jan 2021 14:04:55 +0100 Subject: [PATCH] make custom proxy work for icon downloading too --- .../network-web/networkfactory.cpp | 28 +++++++++++++++---- src/librssguard/network-web/networkfactory.h | 5 +++- .../services/standard/standardfeed.cpp | 3 +- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/librssguard/network-web/networkfactory.cpp b/src/librssguard/network-web/networkfactory.cpp index 242794815..1ffc74539 100644 --- a/src/librssguard/network-web/networkfactory.cpp +++ b/src/librssguard/network-web/networkfactory.cpp @@ -139,16 +139,24 @@ QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code) } } -QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList& urls, int timeout, QIcon& output) { +QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList& urls, int timeout, QIcon& output, const QNetworkProxy& custom_proxy) { QNetworkReply::NetworkError network_result = QNetworkReply::UnknownNetworkError; for (const QString& url : urls) { QByteArray icon_data; - network_result = performNetworkOperation(url, timeout, QByteArray(), icon_data, - QNetworkAccessManager::GetOperation).first; + network_result = performNetworkOperation(url, + timeout, + QByteArray(), + icon_data, + QNetworkAccessManager::GetOperation, + {}, + false, + {}, + {}, + custom_proxy).first; - if (network_result == QNetworkReply::NoError) { + if (network_result == QNetworkReply::NetworkError::NoError) { QPixmap icon_pixmap; icon_pixmap.loadFromData(icon_data); @@ -167,8 +175,16 @@ QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList& u const QString google_s2_with_url = QString("http://www.google.com/s2/favicons?domain=%1").arg(host); - network_result = performNetworkOperation(google_s2_with_url, timeout, QByteArray(), icon_data, - QNetworkAccessManager::GetOperation).first; + network_result = performNetworkOperation(google_s2_with_url, + timeout, + QByteArray(), + icon_data, + QNetworkAccessManager::GetOperation, + {}, + false, + {}, + {}, + custom_proxy).first; if (network_result == QNetworkReply::NoError) { QPixmap icon_pixmap; diff --git a/src/librssguard/network-web/networkfactory.h b/src/librssguard/network-web/networkfactory.h index 2e5172ad1..10577185c 100644 --- a/src/librssguard/network-web/networkfactory.h +++ b/src/librssguard/network-web/networkfactory.h @@ -33,7 +33,10 @@ class NetworkFactory { // Performs SYNCHRONOUS download if favicon for the site, // given URL belongs to. - static QNetworkReply::NetworkError downloadIcon(const QList& urls, int timeout, QIcon& output); + static QNetworkReply::NetworkError downloadIcon(const QList& urls, + int timeout, + QIcon& output, + const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy); static Downloader* performAsyncNetworkOperation(const QString& url, int timeout, const QByteArray& input_data, diff --git a/src/librssguard/services/standard/standardfeed.cpp b/src/librssguard/services/standard/standardfeed.cpp index bd1e347a3..4d3d86b16 100644 --- a/src/librssguard/services/standard/standardfeed.cpp +++ b/src/librssguard/services/standard/standardfeed.cpp @@ -320,7 +320,8 @@ QPair StandardFeed::guessFeed(const if ((result.second = NetworkFactory::downloadIcon(icon_possible_locations, DOWNLOAD_TIMEOUT, - icon_data)) == QNetworkReply::NoError) { + icon_data, + custom_proxy)) == QNetworkReply::NoError) { // Icon for feed was downloaded and is stored now in _icon_data. result.first->setIcon(icon_data); }