diff --git a/src/librssguard/network-web/networkfactory.cpp b/src/librssguard/network-web/networkfactory.cpp index 7e73a76fa..a3b7e03cf 100644 --- a/src/librssguard/network-web/networkfactory.cpp +++ b/src/librssguard/network-web/networkfactory.cpp @@ -201,25 +201,6 @@ QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList& u return network_result; } -Downloader* NetworkFactory::performAsyncNetworkOperation(const QString& url, int timeout, const QByteArray& input_data, - QNetworkAccessManager::Operation operation, - QList> additional_headers, - bool protected_contents, const QString& username, - const QString& password) { - auto* downloader = new Downloader(); - - QObject::connect(downloader, &Downloader::completed, downloader, &Downloader::deleteLater); - - for (const auto& header : additional_headers) { - if (!header.first.isEmpty()) { - downloader->appendRawHeader(header.first, header.second); - } - } - - downloader->manipulateData(url, operation, input_data, timeout, protected_contents, username, password); - return downloader; -} - NetworkResult NetworkFactory::performNetworkOperation(const QString& url, int timeout, const QByteArray& input_data, QByteArray& output, QNetworkAccessManager::Operation operation, QList> additional_headers, diff --git a/src/librssguard/network-web/networkfactory.h b/src/librssguard/network-web/networkfactory.h index 10577185c..357000b9e 100644 --- a/src/librssguard/network-web/networkfactory.h +++ b/src/librssguard/network-web/networkfactory.h @@ -37,15 +37,6 @@ class NetworkFactory { int timeout, QIcon& output, const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy); - static Downloader* performAsyncNetworkOperation(const QString& url, - int timeout, - const QByteArray& input_data, - QNetworkAccessManager::Operation operation, - QList> additional_headers = QList>(), - bool protected_contents = false, - const QString& username = QString(), - const QString& password = QString()); static NetworkResult performNetworkOperation(const QString& url, int timeout, const QByteArray& input_data, QByteArray& output, diff --git a/src/librssguard/services/abstract/serviceroot.cpp b/src/librssguard/services/abstract/serviceroot.cpp index 350ca7f3f..894a83c3f 100644 --- a/src/librssguard/services/abstract/serviceroot.cpp +++ b/src/librssguard/services/abstract/serviceroot.cpp @@ -314,6 +314,8 @@ QNetworkProxy ServiceRoot::networkProxy() const { void ServiceRoot::setNetworkProxy(const QNetworkProxy& network_proxy) { m_networkProxy = network_proxy; + + emit proxyChanged(network_proxy); } ImportantNode* ServiceRoot::importantNode() const { diff --git a/src/librssguard/services/abstract/serviceroot.h b/src/librssguard/services/abstract/serviceroot.h index 5e8c42d00..5de0b8fca 100644 --- a/src/librssguard/services/abstract/serviceroot.h +++ b/src/librssguard/services/abstract/serviceroot.h @@ -153,10 +153,8 @@ class ServiceRoot : public RootItem { // NOTE: Keep in sync with ServiceEntryRoot::code(). virtual QString code() const = 0; - // These are not part of "interface". - CacheForServiceRoot* toCache() const; - public: + CacheForServiceRoot* toCache() const; // Account ID corresponds with DB attribute Accounts (id). int accountId() const; @@ -231,6 +229,7 @@ class ServiceRoot : public RootItem { void assembleFeeds(Assignment feeds); signals: + void proxyChanged(QNetworkProxy proxy); void dataChanged(QList items); void reloadMessageListRequested(bool mark_selected_messages_read); void itemExpandRequested(QList items, bool expand); diff --git a/src/librssguard/services/tt-rss/gui/formeditttrssaccount.cpp b/src/librssguard/services/tt-rss/gui/formeditttrssaccount.cpp index a7145d514..cd67f975c 100644 --- a/src/librssguard/services/tt-rss/gui/formeditttrssaccount.cpp +++ b/src/librssguard/services/tt-rss/gui/formeditttrssaccount.cpp @@ -13,6 +13,7 @@ FormEditTtRssAccount::FormEditTtRssAccount(QWidget* parent) insertCustomTab(m_details, tr("Server setup"), 0); activateTab(0); + connect(m_details->m_ui.m_btnTestSetup, &QPushButton::clicked, this, &FormEditTtRssAccount::performTest); m_details->m_ui.m_txtUrl->setFocus(); } @@ -32,7 +33,7 @@ void FormEditTtRssAccount::apply() { accept(); if (editing_account) { - account()->network()->logout(); + account()->network()->logout(m_account->networkProxy()); account()->completelyRemoveAllData(); account()->syncIn(); } @@ -52,3 +53,7 @@ void FormEditTtRssAccount::setEditableAccount(ServiceRoot* editable_account) { m_details->m_ui.m_checkServerSideUpdate->setChecked(existing_root->network()->forceServerSideUpdate()); m_details->m_ui.m_checkDownloadOnlyUnreadMessages->setChecked(existing_root->network()->downloadOnlyUnreadMessages()); } + +void FormEditTtRssAccount::performTest() { + m_details->performTest(m_proxyDetails->proxy()); +} diff --git a/src/librssguard/services/tt-rss/gui/formeditttrssaccount.h b/src/librssguard/services/tt-rss/gui/formeditttrssaccount.h index 17e23a2c6..942efda9c 100644 --- a/src/librssguard/services/tt-rss/gui/formeditttrssaccount.h +++ b/src/librssguard/services/tt-rss/gui/formeditttrssaccount.h @@ -21,6 +21,9 @@ class FormEditTtRssAccount : public FormAccountDetails { protected: virtual void setEditableAccount(ServiceRoot* editable_account); + private slots: + void performTest(); + private: TtRssAccountDetails* m_details; }; diff --git a/src/librssguard/services/tt-rss/gui/formttrssfeeddetails.cpp b/src/librssguard/services/tt-rss/gui/formttrssfeeddetails.cpp index 4c8925fdb..4d3bedf7d 100755 --- a/src/librssguard/services/tt-rss/gui/formttrssfeeddetails.cpp +++ b/src/librssguard/services/tt-rss/gui/formttrssfeeddetails.cpp @@ -56,6 +56,7 @@ void FormTtRssFeedDetails::apply() { parent->customId().toInt(); const TtRssSubscribeToFeedResponse response = root->network()->subscribeToFeed(m_feedDetails->ui.m_txtUrl->lineEdit()->text(), category_id, + m_serviceRoot->networkProxy(), m_authDetails->m_gbAuthentication->isChecked(), m_authDetails->m_txtUsername->lineEdit()->text(), m_authDetails->m_txtPassword->lineEdit()->text()); diff --git a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp index bd49202ff..5f95a2e3b 100644 --- a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp +++ b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.cpp @@ -41,7 +41,6 @@ TtRssAccountDetails::TtRssAccountDetails(QWidget* parent) : QWidget(parent) { connect(m_ui.m_txtHttpPassword->lineEdit(), &BaseLineEdit::textChanged, this, &TtRssAccountDetails::onHttpPasswordChanged); connect(m_ui.m_txtHttpUsername->lineEdit(), &BaseLineEdit::textChanged, this, &TtRssAccountDetails::onHttpUsernameChanged); connect(m_ui.m_txtUrl->lineEdit(), &BaseLineEdit::textChanged, this, &TtRssAccountDetails::onUrlChanged); - connect(m_ui.m_btnTestSetup, &QPushButton::clicked, this, &TtRssAccountDetails::performTest); connect(m_ui.m_gbHttpAuthentication, &QGroupBox::toggled, this, &TtRssAccountDetails::onHttpPasswordChanged); connect(m_ui.m_gbHttpAuthentication, &QGroupBox::toggled, this, &TtRssAccountDetails::onHttpUsernameChanged); connect(m_ui.m_checkShowHttpPassword, &QCheckBox::toggled, this, &TtRssAccountDetails::displayHttpPassword); @@ -63,7 +62,7 @@ void TtRssAccountDetails::displayHttpPassword(bool display) { m_ui.m_txtHttpPassword->lineEdit()->setEchoMode(display ? QLineEdit::Normal : QLineEdit::Password); } -void TtRssAccountDetails::performTest() { +void TtRssAccountDetails::performTest(const QNetworkProxy& proxy) { TtRssNetworkFactory factory; factory.setUsername(m_ui.m_txtUsername->lineEdit()->text()); @@ -74,7 +73,7 @@ void TtRssAccountDetails::performTest() { factory.setAuthPassword(m_ui.m_txtHttpPassword->lineEdit()->text()); factory.setForceServerSideUpdate(m_ui.m_checkServerSideUpdate->isChecked()); - TtRssLoginResponse result = factory.login(); + TtRssLoginResponse result = factory.login(proxy); if (result.isLoaded()) { if (result.hasError()) { diff --git a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.h b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.h index 44b7f342d..3077d8848 100644 --- a/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.h +++ b/src/librssguard/services/tt-rss/gui/ttrssaccountdetails.h @@ -7,6 +7,8 @@ #include "ui_ttrssaccountdetails.h" +#include + class TtRssServiceRoot; class TtRssAccountDetails : public QWidget { @@ -20,7 +22,7 @@ class TtRssAccountDetails : public QWidget { private slots: void displayPassword(bool display); void displayHttpPassword(bool display); - void performTest(); + void performTest(const QNetworkProxy& proxy); void onUsernameChanged(); void onPasswordChanged(); diff --git a/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.cpp b/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.cpp index ab455c814..d0a0e6db3 100644 --- a/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.cpp +++ b/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.cpp @@ -69,11 +69,11 @@ QNetworkReply::NetworkError TtRssNetworkFactory::lastError() const { return m_lastError; } -TtRssLoginResponse TtRssNetworkFactory::login() { +TtRssLoginResponse TtRssNetworkFactory::login(const QNetworkProxy& proxy) { if (!m_sessionId.isEmpty()) { qWarningNN << LOGSEC_TTRSS << "Session ID is not empty before login, logging out first."; - logout(); + logout(proxy); } QJsonObject json; @@ -95,7 +95,11 @@ TtRssLoginResponse TtRssNetworkFactory::login() { QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssLoginResponse login_response(QString::fromUtf8(result_raw)); if (network_reply.first == QNetworkReply::NoError) { @@ -112,7 +116,7 @@ TtRssLoginResponse TtRssNetworkFactory::login() { return login_response; } -TtRssResponse TtRssNetworkFactory::logout() { +TtRssResponse TtRssNetworkFactory::logout(const QNetworkProxy& proxy) { if (!m_sessionId.isEmpty()) { QJsonObject json; @@ -131,7 +135,11 @@ TtRssResponse TtRssNetworkFactory::logout() { QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); m_lastError = network_reply.first; @@ -154,7 +162,7 @@ TtRssResponse TtRssNetworkFactory::logout() { } } -TtRssGetLabelsResponse TtRssNetworkFactory::getLabels() { +TtRssGetLabelsResponse TtRssNetworkFactory::getLabels(const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("getLabels"); @@ -176,12 +184,18 @@ TtRssGetLabelsResponse TtRssNetworkFactory::getLabels() { if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssGetLabelsResponse(QString::fromUtf8(result_raw)); } @@ -195,7 +209,7 @@ TtRssGetLabelsResponse TtRssNetworkFactory::getLabels() { return result; } -TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() { +TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("getFeedTree"); @@ -212,17 +226,27 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() { QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw)); } @@ -238,7 +262,8 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() { TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int limit, int skip, bool show_content, bool include_attachments, - bool sanitize, bool unread_only) { + bool sanitize, bool unread_only, + const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("getHeadlines"); @@ -258,21 +283,32 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim headers << QPair(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON); headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword); - NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, + NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssGetHeadlinesResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw)); } @@ -286,7 +322,8 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim return result; } -TtRssResponse TtRssNetworkFactory::setArticleLabel(const QStringList& article_ids, const QString& label_custom_id, bool assign) { +TtRssResponse TtRssNetworkFactory::setArticleLabel(const QStringList& article_ids, const QString& label_custom_id, + bool assign, const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("setArticleLabel"); @@ -302,21 +339,32 @@ TtRssResponse TtRssNetworkFactory::setArticleLabel(const QStringList& article_id headers << QPair(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON); headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword); - NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, + NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssResponse(QString::fromUtf8(result_raw)); } @@ -332,7 +380,8 @@ TtRssResponse TtRssNetworkFactory::setArticleLabel(const QStringList& article_id TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList& ids, UpdateArticle::OperatingField field, - UpdateArticle::Mode mode) { + UpdateArticle::Mode mode, + const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("updateArticle"); @@ -348,21 +397,32 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList headers << QPair(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON); headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword); - NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, + NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssUpdateArticleResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssUpdateArticleResponse(QString::fromUtf8(result_raw)); } @@ -377,6 +437,7 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList } TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString& url, int category_id, + const QNetworkProxy& proxy, bool protectd, const QString& username, const QString& password) { QJsonObject json; @@ -398,21 +459,32 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString& headers << QPair(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON); headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword); - NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, + NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssSubscribeToFeedResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssSubscribeToFeedResponse(QString::fromUtf8(result_raw)); } @@ -426,7 +498,7 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString& return result; } -TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) { +TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id, const QNetworkProxy& proxy) { QJsonObject json; json["op"] = QSL("unsubscribeFeed"); @@ -444,17 +516,27 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) { QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw)); if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(proxy); json["sid"] = m_sessionId; - network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), + network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, + timeout, + QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact), result_raw, QNetworkAccessManager::Operation::PostOperation, - headers); + headers, + false, + {}, + {}, + proxy); result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw)); } diff --git a/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.h b/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.h index 0f8aa6c13..c10bfdf74 100644 --- a/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.h +++ b/src/librssguard/services/tt-rss/network/ttrssnetworkfactory.h @@ -100,17 +100,18 @@ namespace UpdateArticle { SetToTrue = 1, Togggle = 2 }; + enum class OperatingField { Starred = 0, Published = 1, Unread = 2 }; + } class TtRssNetworkFactory { public: explicit TtRssNetworkFactory(); - virtual ~TtRssNetworkFactory() = default; QString url() const; void setUrl(const QString& url); @@ -143,32 +144,36 @@ class TtRssNetworkFactory { // Operations. // Logs user in. - TtRssLoginResponse login(); + TtRssLoginResponse login(const QNetworkProxy& proxy); // Logs user out. - TtRssResponse logout(); + TtRssResponse logout(const QNetworkProxy& proxy); // Gets list of labels from the server. - TtRssGetLabelsResponse getLabels(); + TtRssGetLabelsResponse getLabels(const QNetworkProxy& proxy); // Gets feeds from the server. - TtRssGetFeedsCategoriesResponse getFeedsCategories(); + TtRssGetFeedsCategoriesResponse getFeedsCategories(const QNetworkProxy& proxy); // Gets headlines (messages) from the server. TtRssGetHeadlinesResponse getHeadlines(int feed_id, int limit, int skip, bool show_content, bool include_attachments, - bool sanitize, bool unread_only); + bool sanitize, bool unread_only, + const QNetworkProxy& proxy); - TtRssResponse setArticleLabel(const QStringList& article_ids, const QString& label_custom_id, bool assign); + TtRssResponse setArticleLabel(const QStringList& article_ids, const QString& label_custom_id, + bool assign, const QNetworkProxy& proxy); TtRssUpdateArticleResponse updateArticles(const QStringList& ids, UpdateArticle::OperatingField field, - UpdateArticle::Mode mode); + UpdateArticle::Mode mode, + const QNetworkProxy& proxy); - TtRssSubscribeToFeedResponse subscribeToFeed(const QString& url, int category_id, bool protectd = false, - const QString& username = QString(), const QString& password = QString()); + TtRssSubscribeToFeedResponse subscribeToFeed(const QString& url, int category_id, const QNetworkProxy& proxy, + bool protectd = false, const QString& username = QString(), + const QString& password = QString()); - TtRssUnsubscribeFeedResponse unsubscribeFeed(int feed_id); + TtRssUnsubscribeFeedResponse unsubscribeFeed(int feed_id, const QNetworkProxy& proxy); private: QString m_bareUrl; diff --git a/src/librssguard/services/tt-rss/ttrssfeed.cpp b/src/librssguard/services/tt-rss/ttrssfeed.cpp index 9bf4f1477..73dfea66e 100644 --- a/src/librssguard/services/tt-rss/ttrssfeed.cpp +++ b/src/librssguard/services/tt-rss/ttrssfeed.cpp @@ -28,7 +28,8 @@ bool TtRssFeed::canBeDeleted() const { } bool TtRssFeed::deleteViaGui() { - TtRssUnsubscribeFeedResponse response = serviceRoot()->network()->unsubscribeFeed(customId().toInt()); + TtRssUnsubscribeFeedResponse response = serviceRoot()->network()->unsubscribeFeed(customNumericId(), + getParentServiceRoot()->networkProxy()); if (response.code() == UFF_OK && removeItself()) { serviceRoot()->requestItemRemoval(this); @@ -51,7 +52,8 @@ QList TtRssFeed::obtainNewMessages(bool* error_during_obtaining) { do { TtRssGetHeadlinesResponse headlines = serviceRoot()->network()->getHeadlines(customId().toInt(), limit, skip, true, true, false, - serviceRoot()->network()->downloadOnlyUnreadMessages()); + serviceRoot()->network()->downloadOnlyUnreadMessages(), + getParentServiceRoot()->networkProxy()); if (serviceRoot()->network()->lastError() != QNetworkReply::NoError) { setStatus(Feed::Status::NetworkError); diff --git a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp index 8124a205b..a17a6daa8 100644 --- a/src/librssguard/services/tt-rss/ttrssserviceroot.cpp +++ b/src/librssguard/services/tt-rss/ttrssserviceroot.cpp @@ -47,7 +47,7 @@ void TtRssServiceRoot::start(bool freshly_activated) { } void TtRssServiceRoot::stop() { - m_network->logout(); + m_network->logout(networkProxy()); qDebugNN << LOGSEC_TTRSS << "Stopping Tiny Tiny RSS account, logging out with result" << QUOTE_W_SPACE_DOT(m_network->lastError()); @@ -132,7 +132,8 @@ void TtRssServiceRoot::saveAllCachedData(bool ignore_errors) { UpdateArticle::OperatingField::Unread, key == RootItem::ReadStatus::Unread ? UpdateArticle::Mode::SetToTrue - : UpdateArticle::Mode::SetToFalse); + : UpdateArticle::Mode::SetToFalse, + networkProxy()); if (!ignore_errors && (network()->lastError() != QNetworkReply::NetworkError::NoError || res.hasError())) { addMessageStatesToCache(ids, key); @@ -154,7 +155,8 @@ void TtRssServiceRoot::saveAllCachedData(bool ignore_errors) { UpdateArticle::OperatingField::Starred, key == RootItem::Importance::Important ? UpdateArticle::Mode::SetToTrue - : UpdateArticle::Mode::SetToFalse); + : UpdateArticle::Mode::SetToFalse, + networkProxy()); if (!ignore_errors && (network()->lastError() != QNetworkReply::NetworkError::NoError || res.hasError())) { addMessageStatesToCache(messages, key); @@ -171,7 +173,7 @@ void TtRssServiceRoot::saveAllCachedData(bool ignore_errors) { QStringList messages = k.value(); if (!messages.isEmpty()) { - auto res = network()->setArticleLabel(messages, label_custom_id, true); + auto res = network()->setArticleLabel(messages, label_custom_id, true, networkProxy()); if (!ignore_errors && (network()->lastError() != QNetworkReply::NetworkError::NoError || res.hasError())) { addLabelsAssignmentsToCache(messages, label_custom_id, true); @@ -188,7 +190,7 @@ void TtRssServiceRoot::saveAllCachedData(bool ignore_errors) { QStringList messages = l.value(); if (!messages.isEmpty()) { - auto res = network()->setArticleLabel(messages, label_custom_id, false); + auto res = network()->setArticleLabel(messages, label_custom_id, false, networkProxy()); if (!ignore_errors && (network()->lastError() != QNetworkReply::NetworkError::NoError || res.hasError())) { addLabelsAssignmentsToCache(messages, label_custom_id, false); @@ -256,8 +258,8 @@ void TtRssServiceRoot::updateTitle() { } RootItem* TtRssServiceRoot::obtainNewTreeForSyncIn() const { - TtRssGetFeedsCategoriesResponse feed_cats = m_network->getFeedsCategories(); - TtRssGetLabelsResponse labels = m_network->getLabels(); + TtRssGetFeedsCategoriesResponse feed_cats = m_network->getFeedsCategories(networkProxy()); + TtRssGetLabelsResponse labels = m_network->getLabels(networkProxy()); if (m_network->lastError() == QNetworkReply::NoError) { auto* tree = feed_cats.feedsCategories(true, m_network->url());