From 5b432772ddba73ab1e382eb474f4eb0ff79560ef Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 7 Dec 2015 19:39:54 +0100 Subject: [PATCH] Fuck it all, no mood. --- src/services/tt-rss/gui/formeditaccount.cpp | 15 ++-- .../tt-rss/network/ttrssnetworkfactory.cpp | 71 ++++++------------- .../tt-rss/network/ttrssnetworkfactory.h | 25 +++---- src/services/tt-rss/ttrssserviceroot.cpp | 5 +- 4 files changed, 41 insertions(+), 75 deletions(-) diff --git a/src/services/tt-rss/gui/formeditaccount.cpp b/src/services/tt-rss/gui/formeditaccount.cpp index fbfb43375..43068321c 100755 --- a/src/services/tt-rss/gui/formeditaccount.cpp +++ b/src/services/tt-rss/gui/formeditaccount.cpp @@ -90,16 +90,17 @@ void FormEditAccount::displayPassword(bool display) { void FormEditAccount::performTest() { TtRssNetworkFactory factory; + QNetworkReply::NetworkError err; factory.setUsername(m_ui->m_txtUsername->lineEdit()->text()); factory.setPassword(m_ui->m_txtPassword->lineEdit()->text()); factory.setUrl(m_ui->m_txtUrl->lineEdit()->text()); - LoginResult result = factory.login(); + TtRssLoginResponse result = factory.login(err); - if (result.first == QNetworkReply::NoError) { - if (result.second.hasError()) { - QString error = result.second.error(); + if (err == QNetworkReply::NoError) { + if (result.hasError()) { + QString error = result.error(); if (error == API_DISABLED) { m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Error, @@ -117,15 +118,15 @@ void FormEditAccount::performTest() { tr("Other error occurred, contact developers.")); } } - else if (result.second.apiLevel() < MINIMAL_API_LEVEL) { + else if (result.apiLevel() < MINIMAL_API_LEVEL) { m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Error, - tr("Selected Tiny Tiny RSS server is running unsupported version of API (%1). At least API level %2 is required.").arg(QString::number(result.second.apiLevel()), + tr("Selected Tiny Tiny RSS server is running unsupported version of API (%1). At least API level %2 is required.").arg(QString::number(result.apiLevel()), QString::number(MINIMAL_API_LEVEL)), tr("Selected Tiny Tiny RSS server is running unsupported version of API.")); } else { m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Ok, - tr("Tiny Tiny RSS server is okay, running with API level %1, while at least API level %2 is required.").arg(QString::number(result.second.apiLevel()), + tr("Tiny Tiny RSS server is okay, running with API level %1, while at least API level %2 is required.").arg(QString::number(result.apiLevel()), QString::number(MINIMAL_API_LEVEL)), tr("Tiny Tiny RSS server is okay.")); } diff --git a/src/services/tt-rss/network/ttrssnetworkfactory.cpp b/src/services/tt-rss/network/ttrssnetworkfactory.cpp index c5224217d..ba5c6c0cc 100755 --- a/src/services/tt-rss/network/ttrssnetworkfactory.cpp +++ b/src/services/tt-rss/network/ttrssnetworkfactory.cpp @@ -20,8 +20,11 @@ #include "definitions/definitions.h" #include "core/rootitem.h" #include "services/tt-rss/definitions.h" +#include "services/tt-rss/ttrssfeed.h" #include "network-web/networkfactory.h" +#include + TtRssNetworkFactory::TtRssNetworkFactory() : m_url(QString()), m_username(QString()), m_password(QString()), m_sessionId(QString()) { @@ -63,9 +66,9 @@ void TtRssNetworkFactory::setPassword(const QString &password) { * */ -LoginResult TtRssNetworkFactory::login() { +TtRssLoginResponse TtRssNetworkFactory::login(QNetworkReply::NetworkError &error) { if (!m_sessionId.isEmpty()) { - logout(); + logout(error); } QtJson::JsonObject json; @@ -75,16 +78,17 @@ LoginResult TtRssNetworkFactory::login() { QByteArray result_raw; NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw); - LoginResult result(network_reply.first, TtRssLoginResponse(QString::fromUtf8(result_raw))); + TtRssLoginResponse login_response(QString::fromUtf8(result_raw)); if (network_reply.first == QNetworkReply::NoError) { - m_sessionId = result.second.sessionId(); + m_sessionId = login_response.sessionId(); } - return result; + error = network_reply.first; + return login_response; } -LogoutResult TtRssNetworkFactory::logout() { +TtRssResponse TtRssNetworkFactory::logout(QNetworkReply::NetworkError &error) { QtJson::JsonObject json; json["op"] = "logout"; json["sid"] = m_sessionId; @@ -92,10 +96,11 @@ LogoutResult TtRssNetworkFactory::logout() { QByteArray result_raw; NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw); - return LogoutResult(network_reply.first, TtRssResponse(QString::fromUtf8(result_raw))); + error = network_reply.first; + return TtRssResponse(QString::fromUtf8(result_raw)); } -GetFeedTreeResult TtRssNetworkFactory::getFeedTree() { +TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(QNetworkReply::NetworkError &error) { QtJson::JsonObject json; json["op"] = "getFeedTree"; json["sid"] = m_sessionId; @@ -103,17 +108,18 @@ GetFeedTreeResult TtRssNetworkFactory::getFeedTree() { QByteArray result_raw; NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw); - GetFeedTreeResult result(network_reply.first, TtRssGetFeedTreeResponse(QString::fromUtf8(result_raw))); + TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw)); - if (result.second.isNotLoggedIn()) { + if (result.isNotLoggedIn()) { // We are not logged in. - login(); + login(error); json["sid"] = m_sessionId; network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw); - result = GetFeedTreeResult(network_reply.first, TtRssGetFeedTreeResponse(QString::fromUtf8(result_raw))); + result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw)); } + error = network_reply.first; return result; } @@ -194,56 +200,21 @@ bool TtRssResponse::hasError() const { } -TtRssGetFeedTreeResponse::TtRssGetFeedTreeResponse(const QString &raw_content) : TtRssResponse(raw_content) { +TtRssGetFeedsCategoriesResponse::TtRssGetFeedsCategoriesResponse(const QString &raw_content) : TtRssResponse(raw_content) { } -TtRssGetFeedTreeResponse::~TtRssGetFeedTreeResponse() { +TtRssGetFeedsCategoriesResponse::~TtRssGetFeedsCategoriesResponse() { } -QList TtRssGetFeedTreeResponse::getTree() { +QList TtRssGetFeedsCategoriesResponse::feedsCategories() { QList items; if (status() == API_STATUS_OK) { // We have data, construct object tree according to data. QList items_to_process = m_rawContent["content"].toMap()["categories"].toMap()["items"].toList(); - processSubtree(true, items, NULL, items_to_process); } return items; } - -void TtRssGetFeedTreeResponse::processSubtree(bool is_top_level, QList &top_level_items, - RootItem *parent, const QList &items) { - foreach (QVariant item, items) { - QMap map_item = item.toMap(); - - if (map_item.contains("type") && map_item["type"].toString() == GFT_TYPE_CATEGORY) { - // TODO: pokračovat tady - - // We have category, create it, add it to "parent". - // Then process all its children. - // - // TtRssCategory *new_category = new TtRssCategory(); - // naplnit informace..... - // parent->appendChild(new_category); - // if (is_top_level) { - // top_level_items.append(new_category); - // } - // else { - // parent->appendChild(new_category); - // } - // processSubtree(false, top_level_items, new_category, map_item["items"].toList()); - } - else { - // We have feed, add it. - // TtRssFeed *new_feed = new TtRssFeed(); - // naplnit informace..... - // parent->appendChild(new_feed); - // if (is_top_level) { - // top_level_items.append(new_feed); - // } - } - } -} diff --git a/src/services/tt-rss/network/ttrssnetworkfactory.h b/src/services/tt-rss/network/ttrssnetworkfactory.h index 292666b55..25cac350f 100755 --- a/src/services/tt-rss/network/ttrssnetworkfactory.h +++ b/src/services/tt-rss/network/ttrssnetworkfactory.h @@ -53,23 +53,14 @@ class TtRssLoginResponse : public TtRssResponse { QString sessionId() const; }; -typedef QPair LoginResult; -typedef QPair LogoutResult; - -class TtRssGetFeedTreeResponse : public TtRssResponse { +class TtRssGetFeedsCategoriesResponse : public TtRssResponse { public: - explicit TtRssGetFeedTreeResponse(const QString &raw_content = QString()); - virtual ~TtRssGetFeedTreeResponse(); + explicit TtRssGetFeedsCategoriesResponse(const QString &raw_content = QString()); + virtual ~TtRssGetFeedsCategoriesResponse(); - QList getTree(); - - private: - void processSubtree(bool is_top_level, QList &top_level_items, - RootItem *parent, const QList &items); + QList feedsCategories(); }; -typedef QPair GetFeedTreeResult; - class TtRssNetworkFactory { public: explicit TtRssNetworkFactory(); @@ -87,13 +78,13 @@ class TtRssNetworkFactory { // Operations. // Logs user in. - LoginResult login(); + TtRssLoginResponse login(QNetworkReply::NetworkError &error); // Logs user out. - LogoutResult logout(); + TtRssResponse logout(QNetworkReply::NetworkError &error); - // Gets tree from feeds/categories obtained from the server. - GetFeedTreeResult getFeedTree(); + // Gets feeds from the server. + TtRssGetFeedsCategoriesResponse getFeedsCategories(QNetworkReply::NetworkError &error); private: QString m_url; diff --git a/src/services/tt-rss/ttrssserviceroot.cpp b/src/services/tt-rss/ttrssserviceroot.cpp index dd01193e7..8c19371a4 100755 --- a/src/services/tt-rss/ttrssserviceroot.cpp +++ b/src/services/tt-rss/ttrssserviceroot.cpp @@ -227,5 +227,8 @@ void TtRssServiceRoot::syncIn() { // TODO: provede stažení kanálů/kategorií // ze serveru, a sloučení s aktuálními // neprovádí aktualizace kanálů ani stažení počtu nepřečtených zpráv - QList aa = m_network->getFeedTree().second.getTree(); + QNetworkReply::NetworkError err; + + + TtRssGetFeedsCategoriesResponse aa = m_network->getFeedsCategories(err); }