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) {
if (username.isEmpty()) {
return QPair<QByteArray, QByteArray>(QByteArray(), QByteArray());
}
else {
QString basic_value = username + ":" + password;
QString header_value = QString("Basic ") + QString(basic_value.toUtf8().toBase64());
return QPair<QByteArray, QByteArray>(HTTP_HEADERS_AUTHORIZATION, header_value.toLocal8Bit());
}
}
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);
foreach (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;
@ -200,8 +207,10 @@ NetworkResult NetworkFactory::performNetworkOperation(const QString& url, int ti
QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
foreach (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);
loop.exec();

View File

@ -173,17 +173,17 @@ QPair<StandardFeed*, QNetworkReply::NetworkError> StandardFeed::guessFeed(const
QPair<StandardFeed*, QNetworkReply::NetworkError> result;
result.first = nullptr;
QByteArray feed_contents;
QList<QPair<QByteArray, QByteArray>> headers;
headers << NetworkFactory::generateBasicAuthHeader(username, password);
NetworkResult network_result = NetworkFactory::performNetworkOperation(url,
qApp->settings()->value(GROUP(Feeds),
SETTING(Feeds::UpdateTimeout)).toInt(),
QByteArray(),
QString(),
feed_contents,
QNetworkAccessManager::GetOperation,
!username.isEmpty(),
username,
password,
true);
headers);
result.second = network_result.first;
@ -435,16 +435,15 @@ QList<Message> StandardFeed::obtainNewMessages(bool* error_during_obtaining) {
QByteArray feed_contents;
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(),
download_timeout,
QByteArray(),
QString(),
feed_contents,
QNetworkAccessManager::GetOperation,
!username().isEmpty(),
username(),
password(),
true).first;
headers).first;
if (m_networkError != QNetworkReply::NoError) {
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;
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,
qApp->settings()->value(GROUP(Feeds),
SETTING(
Feeds::UpdateTimeout)).toInt(),
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed,
m_authUsername,
m_authPassword);
headers);
TtRssLoginResponse login_response(QString::fromUtf8(result_raw));
if (network_reply.first == QNetworkReply::NoError) {
@ -129,17 +131,19 @@ TtRssResponse TtRssNetworkFactory::logout() {
json["op"] = QSL("logout");
json["sid"] = m_sessionId;
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,
qApp->settings()->value(GROUP(Feeds),
SETTING(
Feeds::UpdateTimeout)).toInt(),
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed,
m_authUsername,
m_authPassword);
headers);
m_lastError = network_reply.first;
@ -167,11 +171,16 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() {
json["include_empty"] = true;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
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,
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
@ -179,9 +188,9 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() {
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw));
}
@ -209,11 +218,16 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
json["sanitize"] = sanitize;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
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,
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
TtRssGetHeadlinesResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
@ -221,9 +235,9 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw));
}
@ -249,11 +263,16 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
json["field"] = (int) field;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
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,
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
TtRssUpdateArticleResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
@ -261,9 +280,9 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
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();
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,
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
TtRssSubscribeToFeedResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
@ -304,9 +328,9 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString&
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
result = TtRssSubscribeToFeedResponse(QString::fromUtf8(result_raw));
}
@ -326,15 +350,17 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
json["feed_id"] = feed_id;
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
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,
QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed,
m_authUsername,
m_authPassword);
headers);
TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
@ -342,9 +368,9 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::performNetworkOperation(m_fullUrl, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
TTRSS_CONTENT_TYPE_JSON, result_raw,
result_raw,
QNetworkAccessManager::PostOperation,
m_authIsUsed, m_authUsername, m_authPassword);
headers);
result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw));
}
@ -529,7 +555,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
QByteArray icon_data;
if (NetworkFactory::performNetworkOperation(full_icon_address, DOWNLOAD_TIMEOUT,
QByteArray(), QString(), icon_data,
QByteArray(), icon_data,
QNetworkAccessManager::GetOperation).first == QNetworkReply::NoError) {
// Icon downloaded, set it up.
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
// 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_customId = QString::number(mapped["id"].toInt());
message.m_feedId = mapped["feed_id"].toString();