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() {
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."));
}

View file

@ -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 <QPair>
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<RootItem*> TtRssGetFeedTreeResponse::getTree() {
QList<RootItem *> TtRssGetFeedsCategoriesResponse::feedsCategories() {
QList<RootItem*> items;
if (status() == API_STATUS_OK) {
// We have data, construct object tree according to data.
QList<QVariant> 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<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;
};
typedef QPair<QNetworkReply::NetworkError,TtRssLoginResponse> LoginResult;
typedef QPair<QNetworkReply::NetworkError,TtRssResponse> 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<RootItem*> getTree();
private:
void processSubtree(bool is_top_level, QList<RootItem*> &top_level_items,
RootItem *parent, const QList<QVariant> &items);
QList<RootItem*> feedsCategories();
};
typedef QPair<QNetworkReply::NetworkError,TtRssGetFeedTreeResponse> 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;

View file

@ -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<RootItem*> aa = m_network->getFeedTree().second.getTree();
QNetworkReply::NetworkError err;
TtRssGetFeedsCategoriesResponse aa = m_network->getFeedsCategories(err);
}