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