make custom proxy work for icon downloading too

This commit is contained in:
Martin Rotter 2021-01-21 14:04:55 +01:00
parent 8e95f8a5ec
commit dcf5f47661
3 changed files with 28 additions and 8 deletions

View File

@ -139,16 +139,24 @@ QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code)
}
}
QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList<QString>& urls, int timeout, QIcon& output) {
QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList<QString>& 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<QString>& 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;

View File

@ -33,7 +33,10 @@ class NetworkFactory {
// Performs SYNCHRONOUS download if favicon for the site,
// given URL belongs to.
static QNetworkReply::NetworkError downloadIcon(const QList<QString>& urls, int timeout, QIcon& output);
static QNetworkReply::NetworkError downloadIcon(const QList<QString>& urls,
int timeout,
QIcon& output,
const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy);
static Downloader* performAsyncNetworkOperation(const QString& url,
int timeout,
const QByteArray& input_data,

View File

@ -320,7 +320,8 @@ QPair<StandardFeed*, QNetworkReply::NetworkError> 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);
}