Fix build errors.

This commit is contained in:
Martin Rotter 2017-10-04 17:14:34 +02:00
parent 10604b6a65
commit bd6143aead
3 changed files with 81 additions and 47 deletions

View File

@ -58,10 +58,15 @@ QStringList NetworkFactory::extractFeedLinksFromHtmlPage(const QUrl& url, const
} }
QPair<QByteArray, QByteArray> NetworkFactory::generateBasicAuthHeader(const QString& username, const QString& password) { QPair<QByteArray, QByteArray> NetworkFactory::generateBasicAuthHeader(const QString& username, const QString& password) {
if (username.isEmpty()) {
return QPair<QByteArray, QByteArray>(QByteArray(), QByteArray());
}
else {
QString basic_value = username + ":" + password; QString basic_value = username + ":" + password;
QString header_value = QString("Basic ") + QString(basic_value.toUtf8().toBase64()); QString header_value = QString("Basic ") + QString(basic_value.toUtf8().toBase64());
return QPair<QByteArray, QByteArray>(HTTP_HEADERS_AUTHORIZATION, header_value.toLocal8Bit()); return QPair<QByteArray, QByteArray>(HTTP_HEADERS_AUTHORIZATION, header_value.toLocal8Bit());
}
} }
QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code) { QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code) {
@ -180,8 +185,10 @@ Downloader* NetworkFactory::performAsyncNetworkOperation(const QString& url, int
QObject::connect(downloader, &Downloader::completed, downloader, &Downloader::deleteLater); QObject::connect(downloader, &Downloader::completed, downloader, &Downloader::deleteLater);
foreach (const auto& header, additional_headers) { foreach (const auto& header, additional_headers) {
if (!header.first.isEmpty()) {
downloader->appendRawHeader(header.first, header.second); downloader->appendRawHeader(header.first, header.second);
} }
}
downloader->manipulateData(url, operation, input_data, timeout, protected_contents, username, password); downloader->manipulateData(url, operation, input_data, timeout, protected_contents, username, password);
return downloader; return downloader;
@ -200,8 +207,10 @@ NetworkResult NetworkFactory::performNetworkOperation(const QString& url, int ti
QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit); QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
foreach (const auto& header, additional_headers) { foreach (const auto& header, additional_headers) {
if (!header.first.isEmpty()) {
downloader.appendRawHeader(header.first, header.second); downloader.appendRawHeader(header.first, header.second);
} }
}
downloader.manipulateData(url, operation, input_data, timeout, protected_contents, username, password); downloader.manipulateData(url, operation, input_data, timeout, protected_contents, username, password);
loop.exec(); loop.exec();

View File

@ -173,17 +173,17 @@ QPair<StandardFeed*, QNetworkReply::NetworkError> StandardFeed::guessFeed(const
QPair<StandardFeed*, QNetworkReply::NetworkError> result; QPair<StandardFeed*, QNetworkReply::NetworkError> result;
result.first = nullptr; result.first = nullptr;
QByteArray feed_contents; QByteArray feed_contents;
QList<QPair<QByteArray, QByteArray>> headers;
headers << NetworkFactory::generateBasicAuthHeader(username, password);
NetworkResult network_result = NetworkFactory::performNetworkOperation(url, NetworkResult network_result = NetworkFactory::performNetworkOperation(url,
qApp->settings()->value(GROUP(Feeds), qApp->settings()->value(GROUP(Feeds),
SETTING(Feeds::UpdateTimeout)).toInt(), SETTING(Feeds::UpdateTimeout)).toInt(),
QByteArray(), QByteArray(),
QString(),
feed_contents, feed_contents,
QNetworkAccessManager::GetOperation, QNetworkAccessManager::GetOperation,
!username.isEmpty(), headers);
username,
password,
true);
result.second = network_result.first; result.second = network_result.first;
@ -435,16 +435,15 @@ QList<Message> StandardFeed::obtainNewMessages(bool* error_during_obtaining) {
QByteArray feed_contents; QByteArray feed_contents;
int download_timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); int download_timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QList<QPair<QByteArray, QByteArray>> headers;
headers << NetworkFactory::generateBasicAuthHeader(username(), password());
m_networkError = NetworkFactory::performNetworkOperation(url(), m_networkError = NetworkFactory::performNetworkOperation(url(),
download_timeout, download_timeout,
QByteArray(), QByteArray(),
QString(),
feed_contents, feed_contents,
QNetworkAccessManager::GetOperation, QNetworkAccessManager::GetOperation,
!username().isEmpty(), headers).first;
username(),
password(),
true).first;
if (m_networkError != QNetworkReply::NoError) { if (m_networkError != QNetworkReply::NoError) {
qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id()); qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id());

View File

@ -97,17 +97,19 @@ TtRssLoginResponse TtRssNetworkFactory::login() {
json["password"] = m_password; json["password"] = m_password;
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON);
headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword);
NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl,
qApp->settings()->value(GROUP(Feeds), qApp->settings()->value(GROUP(Feeds),
SETTING( SETTING(
Feeds::UpdateTimeout)).toInt(), Feeds::UpdateTimeout)).toInt(),
QJsonDocument(json).toJson(QJsonDocument::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, headers);
m_authUsername,
m_authPassword);
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) {
@ -129,17 +131,19 @@ TtRssResponse TtRssNetworkFactory::logout() {
json["op"] = QSL("logout"); json["op"] = QSL("logout");
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON);
headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword);
NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl,
qApp->settings()->value(GROUP(Feeds), qApp->settings()->value(GROUP(Feeds),
SETTING( SETTING(
Feeds::UpdateTimeout)).toInt(), Feeds::UpdateTimeout)).toInt(),
QJsonDocument(json).toJson(QJsonDocument::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, headers);
m_authUsername,
m_authPassword);
m_lastError = network_reply.first; m_lastError = network_reply.first;
@ -167,11 +171,16 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() {
json["include_empty"] = true; json["include_empty"] = true;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(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::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw)); TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) { if (result.isNotLoggedIn()) {
@ -179,9 +188,9 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() {
login(); login();
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw)); result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw));
} }
@ -209,11 +218,16 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
json["sanitize"] = sanitize; json["sanitize"] = sanitize;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(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::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
TtRssGetHeadlinesResponse result(QString::fromUtf8(result_raw)); TtRssGetHeadlinesResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) { if (result.isNotLoggedIn()) {
@ -221,9 +235,9 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
login(); login();
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw)); result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw));
} }
@ -249,11 +263,16 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
json["field"] = (int) field; json["field"] = (int) field;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(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::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
TtRssUpdateArticleResponse result(QString::fromUtf8(result_raw)); TtRssUpdateArticleResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) { if (result.isNotLoggedIn()) {
@ -261,9 +280,9 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
login(); login();
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
result = TtRssUpdateArticleResponse(QString::fromUtf8(result_raw)); result = TtRssUpdateArticleResponse(QString::fromUtf8(result_raw));
} }
@ -292,11 +311,16 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString&
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(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::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
TtRssSubscribeToFeedResponse result(QString::fromUtf8(result_raw)); TtRssSubscribeToFeedResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) { if (result.isNotLoggedIn()) {
@ -304,9 +328,9 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString&
login(); login();
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
result = TtRssSubscribeToFeedResponse(QString::fromUtf8(result_raw)); result = TtRssSubscribeToFeedResponse(QString::fromUtf8(result_raw));
} }
@ -326,15 +350,17 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
json["feed_id"] = feed_id; json["feed_id"] = feed_id;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray result_raw; QByteArray result_raw;
QList<QPair<QByteArray, QByteArray>> headers;
headers << QPair<QByteArray, QByteArray>(HTTP_HEADERS_CONTENT_TYPE, TTRSS_CONTENT_TYPE_JSON);
headers << NetworkFactory::generateBasicAuthHeader(m_authUsername, m_authPassword);
NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, NetworkResult network_reply = NetworkFactory::performNetworkOperation(m_fullUrl,
timeout, timeout,
QJsonDocument(json).toJson(QJsonDocument::Compact), QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, headers);
m_authUsername,
m_authPassword);
TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw)); TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) { if (result.isNotLoggedIn()) {
@ -342,9 +368,9 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
login(); login();
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw, result_raw,
QNetworkAccessManager::PostOperation, QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword); headers);
result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw)); result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw));
} }
@ -529,7 +555,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
QByteArray icon_data; QByteArray icon_data;
if (NetworkFactory::performNetworkOperation(full_icon_address, DOWNLOAD_TIMEOUT, if (NetworkFactory::performNetworkOperation(full_icon_address, DOWNLOAD_TIMEOUT,
QByteArray(), QString(), icon_data, QByteArray(), icon_data,
QNetworkAccessManager::GetOperation).first == QNetworkReply::NoError) { QNetworkAccessManager::GetOperation).first == QNetworkReply::NoError) {
// Icon downloaded, set it up. // Icon downloaded, set it up.
QPixmap icon_pixmap; QPixmap icon_pixmap;
@ -569,7 +595,7 @@ QList<Message> TtRssGetHeadlinesResponse::messages() const {
// Multiply by 1000 because Tiny Tiny RSS API does not include miliseconds in Unix // Multiply by 1000 because Tiny Tiny RSS API does not include miliseconds in Unix
// date/time number. // date/time number.
message.m_created = TextFactory::parseDateTime(mapped["updated"].toDouble() * 1000); message.m_created = TextFactory::parseDateTime(int(mapped["updated"].toDouble()) * 1000);
message.m_createdFromFeed = true; message.m_createdFromFeed = true;
message.m_customId = QString::number(mapped["id"].toInt()); message.m_customId = QString::number(mapped["id"].toInt());
message.m_feedId = mapped["feed_id"].toString(); message.m_feedId = mapped["feed_id"].toString();