diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index aca063294..370b129ea 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -26,7 +26,7 @@
https://github.com/sponsors/martinrotter
-
+
none
diff --git a/src/librssguard/network-web/networkfactory.cpp b/src/librssguard/network-web/networkfactory.cpp
index 1390fb19e..76e107c89 100644
--- a/src/librssguard/network-web/networkfactory.cpp
+++ b/src/librssguard/network-web/networkfactory.cpp
@@ -144,8 +144,11 @@ QString NetworkFactory::sanitizeUrl(const QString& url) {
{});
}
-QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList>& urls, int timeout,
- QIcon& output, const QNetworkProxy& custom_proxy) {
+QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList>& urls,
+ int timeout,
+ QIcon& output,
+ const QList>& additional_headers,
+ const QNetworkProxy& custom_proxy) {
QNetworkReply::NetworkError network_result = QNetworkReply::NetworkError::UnknownNetworkError;
for (const auto& url : urls) {
@@ -162,7 +165,7 @@ QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList>& urls,
int timeout,
QIcon& output,
+ const QList>& additional_headers,
const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy);
static NetworkResult performNetworkOperation(const QString& url, int timeout,
const QByteArray& input_data,
diff --git a/src/librssguard/services/feedly/feedlynetwork.cpp b/src/librssguard/services/feedly/feedlynetwork.cpp
index f8b2e95a6..0fe87ea26 100644
--- a/src/librssguard/services/feedly/feedlynetwork.cpp
+++ b/src/librssguard/services/feedly/feedlynetwork.cpp
@@ -376,6 +376,7 @@ RootItem* FeedlyNetwork::decodeCollections(const QByteArray& json, bool obtain_i
{ fee_obj[QSL("logo")].toString(), true } },
timeout,
icon,
+ {},
proxy);
if (result == QNetworkReply::NetworkError::NoError && !icon.isNull()) {
diff --git a/src/librssguard/services/greader/greadernetwork.cpp b/src/librssguard/services/greader/greadernetwork.cpp
index c607fceb4..adb785f3e 100644
--- a/src/librssguard/services/greader/greadernetwork.cpp
+++ b/src/librssguard/services/greader/greadernetwork.cpp
@@ -784,6 +784,7 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
if (NetworkFactory::downloadIcon(icon_urls,
1000,
icon,
+ {},
proxy) == QNetworkReply::NetworkError::NoError) {
feed->setIcon(icon);
}
diff --git a/src/librssguard/services/standard/standardfeed.cpp b/src/librssguard/services/standard/standardfeed.cpp
index 3786b8b97..49abf3f68 100644
--- a/src/librssguard/services/standard/standardfeed.cpp
+++ b/src/librssguard/services/standard/standardfeed.cpp
@@ -448,6 +448,7 @@ StandardFeed* StandardFeed::guessFeed(StandardFeed::SourceType source_type,
if (NetworkFactory::downloadIcon(icon_possible_locations,
DOWNLOAD_TIMEOUT,
icon_data,
+ {},
custom_proxy) == QNetworkReply::NetworkError::NoError) {
// Icon for feed was downloaded and is stored now in _icon_data.
feed->setIcon(icon_data);
diff --git a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
index f32676a54..b10bda856 100644
--- a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
+++ b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
@@ -677,7 +677,10 @@ TtRssGetFeedsCategoriesResponse::TtRssGetFeedsCategoriesResponse(const QString&
TtRssGetFeedsCategoriesResponse::~TtRssGetFeedsCategoriesResponse() = default;
-RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, const QNetworkProxy& proxy, const QString& base_address) const {
+RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(TtRssNetworkFactory* network,
+ bool obtain_icons,
+ const QNetworkProxy& proxy,
+ const QString& base_address) const {
auto* parent = new RootItem();
// Chop the "api/" from the end of the address.
@@ -740,9 +743,17 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, co
// Chop the "api/" suffix out and append
QString full_icon_address = base_address + QL1C('/') + icon_path;
QIcon icon;
+ QList> headers;
+
+ if (network->authIsUsed()) {
+ headers << NetworkFactory::generateBasicAuthHeader(network->authUsername(),
+ network->authPassword());
+ }
+
auto res = NetworkFactory::downloadIcon({ { full_icon_address, true } },
DOWNLOAD_TIMEOUT,
icon,
+ headers,
proxy);
if (res == QNetworkReply::NoError) {
diff --git a/src/librssguard/services/tt-rss/ttrssnetworkfactory.h b/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
index 95cf0e46b..cea35045d 100644
--- a/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
+++ b/src/librssguard/services/tt-rss/ttrssnetworkfactory.h
@@ -48,6 +48,8 @@ class TtRssGetLabelsResponse : public TtRssResponse {
QList labels() const;
};
+class TtRssNetworkFactory;
+
class TtRssGetFeedsCategoriesResponse : public TtRssResponse {
public:
explicit TtRssGetFeedsCategoriesResponse(const QString& raw_content = QString());
@@ -56,7 +58,8 @@ class TtRssGetFeedsCategoriesResponse : public TtRssResponse {
// Returns tree of feeds/categories.
// Top-level root of the tree is not needed here.
// Returned items do not have primary IDs assigned.
- RootItem* feedsCategories(bool obtain_icons, const QNetworkProxy& proxy, const QString& base_address = QString()) const;
+ RootItem* feedsCategories(TtRssNetworkFactory* network, bool obtain_icons,
+ const QNetworkProxy& proxy, const QString& base_address = QString()) const;
};
class ServiceRoot;
diff --git a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
index fd60e63ff..a15653822 100644
--- a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
+++ b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp
@@ -275,7 +275,7 @@ RootItem* TtRssServiceRoot::obtainNewTreeForSyncIn() const {
TtRssGetLabelsResponse labels = m_network->getLabels(networkProxy());
if (m_network->lastError() == QNetworkReply::NoError) {
- auto* tree = feed_cats.feedsCategories(true, networkProxy(), m_network->url());
+ auto* tree = feed_cats.feedsCategories(m_network, true, networkProxy(), m_network->url());
auto* lblroot = new LabelsNode(tree);
lblroot->setChildItems(labels.labels());