Fuck it all, no mood.

This commit is contained in:
Martin Rotter 2015-12-07 19:39:54 +01:00
parent 02f3ee0f68
commit 5b432772dd
4 changed files with 41 additions and 75 deletions

View file

@ -90,16 +90,17 @@ void FormEditAccount::displayPassword(bool display) {
void FormEditAccount::performTest() { void FormEditAccount::performTest() {
TtRssNetworkFactory factory; TtRssNetworkFactory factory;
QNetworkReply::NetworkError err;
factory.setUsername(m_ui->m_txtUsername->lineEdit()->text()); factory.setUsername(m_ui->m_txtUsername->lineEdit()->text());
factory.setPassword(m_ui->m_txtPassword->lineEdit()->text()); factory.setPassword(m_ui->m_txtPassword->lineEdit()->text());
factory.setUrl(m_ui->m_txtUrl->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 (err == QNetworkReply::NoError) {
if (result.second.hasError()) { if (result.hasError()) {
QString error = result.second.error(); QString error = result.error();
if (error == API_DISABLED) { if (error == API_DISABLED) {
m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Error, m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Error,
@ -117,15 +118,15 @@ void FormEditAccount::performTest() {
tr("Other error occurred, contact developers.")); 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, 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)), QString::number(MINIMAL_API_LEVEL)),
tr("Selected Tiny Tiny RSS server is running unsupported version of API.")); tr("Selected Tiny Tiny RSS server is running unsupported version of API."));
} }
else { else {
m_ui->m_lblTestResult->setStatus(WidgetWithStatus::Ok, 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)), QString::number(MINIMAL_API_LEVEL)),
tr("Tiny Tiny RSS server is okay.")); tr("Tiny Tiny RSS server is okay."));
} }

View file

@ -20,8 +20,11 @@
#include "definitions/definitions.h" #include "definitions/definitions.h"
#include "core/rootitem.h" #include "core/rootitem.h"
#include "services/tt-rss/definitions.h" #include "services/tt-rss/definitions.h"
#include "services/tt-rss/ttrssfeed.h"
#include "network-web/networkfactory.h" #include "network-web/networkfactory.h"
#include <QPair>
TtRssNetworkFactory::TtRssNetworkFactory() TtRssNetworkFactory::TtRssNetworkFactory()
: m_url(QString()), m_username(QString()), m_password(QString()), m_sessionId(QString()) { : 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()) { if (!m_sessionId.isEmpty()) {
logout(); logout(error);
} }
QtJson::JsonObject json; QtJson::JsonObject json;
@ -75,16 +78,17 @@ LoginResult TtRssNetworkFactory::login() {
QByteArray result_raw; QByteArray result_raw;
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, 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) { 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; QtJson::JsonObject json;
json["op"] = "logout"; json["op"] = "logout";
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
@ -92,10 +96,11 @@ LogoutResult TtRssNetworkFactory::logout() {
QByteArray result_raw; QByteArray result_raw;
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, 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; QtJson::JsonObject json;
json["op"] = "getFeedTree"; json["op"] = "getFeedTree";
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
@ -103,17 +108,18 @@ GetFeedTreeResult TtRssNetworkFactory::getFeedTree() {
QByteArray result_raw; QByteArray result_raw;
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, 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. // We are not logged in.
login(); login(error);
json["sid"] = m_sessionId; json["sid"] = m_sessionId;
network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw); 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; 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<RootItem*> TtRssGetFeedTreeResponse::getTree() { QList<RootItem *> TtRssGetFeedsCategoriesResponse::feedsCategories() {
QList<RootItem*> items; QList<RootItem*> items;
if (status() == API_STATUS_OK) { if (status() == API_STATUS_OK) {
// We have data, construct object tree according to data. // We have data, construct object tree according to data.
QList<QVariant> items_to_process = m_rawContent["content"].toMap()["categories"].toMap()["items"].toList(); QList<QVariant> items_to_process = m_rawContent["content"].toMap()["categories"].toMap()["items"].toList();
processSubtree(true, items, NULL, items_to_process);
} }
return items; return items;
} }
void TtRssGetFeedTreeResponse::processSubtree(bool is_top_level, QList<RootItem *> &top_level_items,
RootItem *parent, const QList<QVariant> &items) {
foreach (QVariant item, items) {
QMap<QString,QVariant> 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);
// }
}
}
}

View file

@ -53,23 +53,14 @@ class TtRssLoginResponse : public TtRssResponse {
QString sessionId() const; QString sessionId() const;
}; };
typedef QPair<QNetworkReply::NetworkError,TtRssLoginResponse> LoginResult; class TtRssGetFeedsCategoriesResponse : public TtRssResponse {
typedef QPair<QNetworkReply::NetworkError,TtRssResponse> LogoutResult;
class TtRssGetFeedTreeResponse : public TtRssResponse {
public: public:
explicit TtRssGetFeedTreeResponse(const QString &raw_content = QString()); explicit TtRssGetFeedsCategoriesResponse(const QString &raw_content = QString());
virtual ~TtRssGetFeedTreeResponse(); virtual ~TtRssGetFeedsCategoriesResponse();
QList<RootItem*> getTree(); QList<RootItem*> feedsCategories();
private:
void processSubtree(bool is_top_level, QList<RootItem*> &top_level_items,
RootItem *parent, const QList<QVariant> &items);
}; };
typedef QPair<QNetworkReply::NetworkError,TtRssGetFeedTreeResponse> GetFeedTreeResult;
class TtRssNetworkFactory { class TtRssNetworkFactory {
public: public:
explicit TtRssNetworkFactory(); explicit TtRssNetworkFactory();
@ -87,13 +78,13 @@ class TtRssNetworkFactory {
// Operations. // Operations.
// Logs user in. // Logs user in.
LoginResult login(); TtRssLoginResponse login(QNetworkReply::NetworkError &error);
// Logs user out. // Logs user out.
LogoutResult logout(); TtRssResponse logout(QNetworkReply::NetworkError &error);
// Gets tree from feeds/categories obtained from the server. // Gets feeds from the server.
GetFeedTreeResult getFeedTree(); TtRssGetFeedsCategoriesResponse getFeedsCategories(QNetworkReply::NetworkError &error);
private: private:
QString m_url; QString m_url;

View file

@ -227,5 +227,8 @@ void TtRssServiceRoot::syncIn() {
// TODO: provede stažení kanálů/kategorií // TODO: provede stažení kanálů/kategorií
// ze serveru, a sloučení s aktuálními // 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 // neprovádí aktualizace kanálů ani stažení počtu nepřečtených zpráv
QList<RootItem*> aa = m_network->getFeedTree().second.getTree(); QNetworkReply::NetworkError err;
TtRssGetFeedsCategoriesResponse aa = m_network->getFeedsCategories(err);
} }