Fuck it all, no mood.
This commit is contained in:
parent
02f3ee0f68
commit
5b432772dd
4 changed files with 41 additions and 75 deletions
|
@ -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."));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue