Working Qt 5 native JSON.
This commit is contained in:
parent
76b4c12584
commit
e1f6ddc97d
5 changed files with 66 additions and 62 deletions
|
@ -78,7 +78,10 @@ bool Application::isFirstRun() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Application::isFirstRun(const QString &version) {
|
bool Application::isFirstRun(const QString &version) {
|
||||||
|
if (version == APP_VERSION) {
|
||||||
|
// Check this only if checked version is equal to actual version.
|
||||||
return settings()->value(GROUP(General), QString(General::FirstRun) + QL1C('_') + version, true).toBool();
|
return settings()->value(GROUP(General), QString(General::FirstRun) + QL1C('_') + version, true).toBool();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::eliminateFirstRun() {
|
void Application::eliminateFirstRun() {
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "services/owncloud/owncloudfeed.h"
|
#include "services/owncloud/owncloudfeed.h"
|
||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
|
||||||
|
@ -271,7 +272,7 @@ QNetworkReply::NetworkError OwnCloudNetworkFactory::markMessagesRead(RootItem::R
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(final_url,
|
NetworkResult network_reply = NetworkFactory::uploadData(final_url,
|
||||||
qApp->settings()->value(GROUP(Feeds),
|
qApp->settings()->value(GROUP(Feeds),
|
||||||
SETTING(Feeds::UpdateTimeout)).toInt(),
|
SETTING(Feeds::UpdateTimeout)).toInt(),
|
||||||
QJsonDocument(json).toJson(),
|
QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
"application/json",
|
"application/json",
|
||||||
raw_output,
|
raw_output,
|
||||||
QNetworkAccessManager::PutOperation,
|
QNetworkAccessManager::PutOperation,
|
||||||
|
@ -314,7 +315,7 @@ QNetworkReply::NetworkError OwnCloudNetworkFactory::markMessagesStarred(RootItem
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(final_url,
|
NetworkResult network_reply = NetworkFactory::uploadData(final_url,
|
||||||
qApp->settings()->value(GROUP(Feeds),
|
qApp->settings()->value(GROUP(Feeds),
|
||||||
SETTING(Feeds::UpdateTimeout)).toInt(),
|
SETTING(Feeds::UpdateTimeout)).toInt(),
|
||||||
QJsonDocument(json).toJson(),
|
QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
"application/json",
|
"application/json",
|
||||||
raw_output,
|
raw_output,
|
||||||
QNetworkAccessManager::PutOperation,
|
QNetworkAccessManager::PutOperation,
|
||||||
|
@ -337,7 +338,7 @@ void OwnCloudNetworkFactory::setUserId(const QString &userId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
OwnCloudResponse::OwnCloudResponse(const QString &raw_content) {
|
OwnCloudResponse::OwnCloudResponse(const QString &raw_content) {
|
||||||
m_rawContent = QJsonDocument::fromJson(raw_content.toUtf8());;
|
m_rawContent = QJsonDocument::fromJson(raw_content.toUtf8()).object();
|
||||||
}
|
}
|
||||||
|
|
||||||
OwnCloudResponse::~OwnCloudResponse() {
|
OwnCloudResponse::~OwnCloudResponse() {
|
||||||
|
@ -348,7 +349,7 @@ bool OwnCloudResponse::isLoaded() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString OwnCloudResponse::toString() const {
|
QString OwnCloudResponse::toString() const {
|
||||||
return m_rawContent.toJson();
|
return QJsonDocument(m_rawContent).toJson(QJsonDocument::Compact);
|
||||||
}
|
}
|
||||||
|
|
||||||
OwnCloudUserResponse::OwnCloudUserResponse(const QString &raw_content) : OwnCloudResponse(raw_content) {
|
OwnCloudUserResponse::OwnCloudUserResponse(const QString &raw_content) : OwnCloudResponse(raw_content) {
|
||||||
|
@ -359,7 +360,7 @@ OwnCloudUserResponse::~OwnCloudUserResponse() {
|
||||||
|
|
||||||
QString OwnCloudUserResponse::displayName() const {
|
QString OwnCloudUserResponse::displayName() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
return m_rawContent.object()["displayName"].toString();
|
return m_rawContent["displayName"].toString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return QString();
|
return QString();
|
||||||
|
@ -368,7 +369,7 @@ QString OwnCloudUserResponse::displayName() const {
|
||||||
|
|
||||||
QString OwnCloudUserResponse::userId() const {
|
QString OwnCloudUserResponse::userId() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
return m_rawContent.object()["userId"].toString();
|
return m_rawContent["userId"].toString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return QString();
|
return QString();
|
||||||
|
@ -377,7 +378,7 @@ QString OwnCloudUserResponse::userId() const {
|
||||||
|
|
||||||
QDateTime OwnCloudUserResponse::lastLoginTime() const {
|
QDateTime OwnCloudUserResponse::lastLoginTime() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
return QDateTime::fromMSecsSinceEpoch(m_rawContent.object()["lastLoginTimestamp"].toVariant().value<qint64>());
|
return QDateTime::fromMSecsSinceEpoch(m_rawContent["lastLoginTimestamp"].toVariant().value<qint64>());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return QDateTime();
|
return QDateTime();
|
||||||
|
@ -386,7 +387,7 @@ QDateTime OwnCloudUserResponse::lastLoginTime() const {
|
||||||
|
|
||||||
QIcon OwnCloudUserResponse::avatar() const {
|
QIcon OwnCloudUserResponse::avatar() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
QString image_data = m_rawContent.object()["avatar"].toObject()["data"].toString();
|
QString image_data = m_rawContent["avatar"].toObject()["data"].toString();
|
||||||
QByteArray decoded_data = QByteArray::fromBase64(image_data.toLocal8Bit());
|
QByteArray decoded_data = QByteArray::fromBase64(image_data.toLocal8Bit());
|
||||||
QPixmap image;
|
QPixmap image;
|
||||||
|
|
||||||
|
@ -407,7 +408,7 @@ OwnCloudStatusResponse::~OwnCloudStatusResponse() {
|
||||||
|
|
||||||
QString OwnCloudStatusResponse::version() const {
|
QString OwnCloudStatusResponse::version() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
return m_rawContent.object()["version"].toString();
|
return m_rawContent["version"].toString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return QString();
|
return QString();
|
||||||
|
@ -416,7 +417,7 @@ QString OwnCloudStatusResponse::version() const {
|
||||||
|
|
||||||
bool OwnCloudStatusResponse::misconfiguredCron() const {
|
bool OwnCloudStatusResponse::misconfiguredCron() const {
|
||||||
if (isLoaded()) {
|
if (isLoaded()) {
|
||||||
return m_rawContent.object()["warnings"].toObject()["improperlyConfiguredCron"].toBool();
|
return m_rawContent["warnings"].toObject()["improperlyConfiguredCron"].toBool();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -492,13 +493,13 @@ OwnCloudGetMessagesResponse::~OwnCloudGetMessagesResponse() {
|
||||||
QList<Message> OwnCloudGetMessagesResponse::messages() const {
|
QList<Message> OwnCloudGetMessagesResponse::messages() const {
|
||||||
QList<Message> msgs;
|
QList<Message> msgs;
|
||||||
|
|
||||||
foreach (QVariant message, m_rawContent.object()["items"].toArray().toVariantList()) {
|
foreach (QJsonValue message, m_rawContent["items"].toArray()) {
|
||||||
QMap<QString,QVariant> message_map = message.toMap();
|
QJsonObject message_map = message.toObject();
|
||||||
Message msg;
|
Message msg;
|
||||||
|
|
||||||
msg.m_author = message_map["author"].toString();
|
msg.m_author = message_map["author"].toString();
|
||||||
msg.m_contents = message_map["body"].toString();
|
msg.m_contents = message_map["body"].toString();
|
||||||
msg.m_created = TextFactory::parseDateTime(message_map["pubDate"].value<qint64>() * 1000);
|
msg.m_created = TextFactory::parseDateTime(message_map["pubDate"].toVariant().value<qint64>() * 1000);
|
||||||
msg.m_createdFromFeed = true;
|
msg.m_createdFromFeed = true;
|
||||||
msg.m_customId = message_map["id"].toString();
|
msg.m_customId = message_map["id"].toString();
|
||||||
msg.m_customHash = message_map["guidHash"].toString();
|
msg.m_customHash = message_map["guidHash"].toString();
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QJsonDocument>
|
#include <QJsonObject>
|
||||||
|
|
||||||
|
|
||||||
class OwnCloudResponse {
|
class OwnCloudResponse {
|
||||||
|
@ -37,7 +37,7 @@ class OwnCloudResponse {
|
||||||
QString toString() const;
|
QString toString() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QJsonDocument m_rawContent;
|
QJsonObject m_rawContent;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OwnCloudUserResponse : public OwnCloudResponse {
|
class OwnCloudUserResponse : public OwnCloudResponse {
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include "miscellaneous/textfactory.h"
|
#include "miscellaneous/textfactory.h"
|
||||||
#include "network-web/networkfactory.h"
|
#include "network-web/networkfactory.h"
|
||||||
|
|
||||||
#include <QJsonObject>
|
#include <QJsonDocument>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
@ -89,7 +89,7 @@ TtRssLoginResponse TtRssNetworkFactory::login() {
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, qApp->settings()->value(GROUP(Feeds),
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, qApp->settings()->value(GROUP(Feeds),
|
||||||
SETTING(Feeds::UpdateTimeout)).toInt(),
|
SETTING(Feeds::UpdateTimeout)).toInt(),
|
||||||
QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
TtRssLoginResponse login_response(QString::fromUtf8(result_raw));
|
TtRssLoginResponse login_response(QString::fromUtf8(result_raw));
|
||||||
|
@ -116,7 +116,7 @@ TtRssResponse TtRssNetworkFactory::logout() {
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, qApp->settings()->value(GROUP(Feeds),
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, qApp->settings()->value(GROUP(Feeds),
|
||||||
SETTING(Feeds::UpdateTimeout)).toInt(),
|
SETTING(Feeds::UpdateTimeout)).toInt(),
|
||||||
QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories() {
|
||||||
login();
|
login();
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw));
|
result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw));
|
||||||
|
@ -188,7 +188,7 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
|
||||||
|
|
||||||
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(),
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
CONTENT_TYPE, result_raw,
|
CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
@ -199,7 +199,7 @@ TtRssGetHeadlinesResponse TtRssNetworkFactory::getHeadlines(int feed_id, int lim
|
||||||
login();
|
login();
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw));
|
result = TtRssGetHeadlinesResponse(QString::fromUtf8(result_raw));
|
||||||
|
@ -225,7 +225,7 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
|
||||||
|
|
||||||
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(),
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
CONTENT_TYPE, result_raw,
|
CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
@ -236,7 +236,7 @@ TtRssUpdateArticleResponse TtRssNetworkFactory::updateArticles(const QStringList
|
||||||
login();
|
login();
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(),
|
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
CONTENT_TYPE, result_raw,
|
CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
@ -267,7 +267,7 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString
|
||||||
|
|
||||||
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(),
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
CONTENT_TYPE, result_raw,
|
CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
@ -278,7 +278,7 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString
|
||||||
login();
|
login();
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(),
|
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact),
|
||||||
CONTENT_TYPE, result_raw,
|
CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
|
@ -301,7 +301,7 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
|
||||||
|
|
||||||
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
const int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw));
|
TtRssUnsubscribeFeedResponse result(QString::fromUtf8(result_raw));
|
||||||
|
@ -311,7 +311,7 @@ TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
|
||||||
login();
|
login();
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(), CONTENT_TYPE, result_raw,
|
network_reply = NetworkFactory::uploadData(m_url, timeout, QJsonDocument(json).toJson(QJsonDocument::Compact), CONTENT_TYPE, result_raw,
|
||||||
QNetworkAccessManager::PostOperation,
|
QNetworkAccessManager::PostOperation,
|
||||||
m_authIsUsed, m_authUsername, m_authPassword);
|
m_authIsUsed, m_authUsername, m_authPassword);
|
||||||
result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw));
|
result = TtRssUnsubscribeFeedResponse(QString::fromUtf8(result_raw));
|
||||||
|
@ -358,7 +358,7 @@ void TtRssNetworkFactory::setAuthPassword(const QString &auth_password) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TtRssResponse::TtRssResponse(const QString &raw_content) {
|
TtRssResponse::TtRssResponse(const QString &raw_content) {
|
||||||
m_rawContent = QJsonDocument::fromJson(raw_content.toUtf8());
|
m_rawContent = QJsonDocument::fromJson(raw_content.toUtf8()).object();
|
||||||
}
|
}
|
||||||
|
|
||||||
TtRssResponse::~TtRssResponse() {
|
TtRssResponse::~TtRssResponse() {
|
||||||
|
@ -373,7 +373,7 @@ int TtRssResponse::seq() const {
|
||||||
return CONTENT_NOT_LOADED;
|
return CONTENT_NOT_LOADED;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["seq"].toInt();
|
return m_rawContent["seq"].toInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,7 +382,7 @@ int TtRssResponse::status() const {
|
||||||
return CONTENT_NOT_LOADED;
|
return CONTENT_NOT_LOADED;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["status"].toInt();
|
return m_rawContent["status"].toInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ bool TtRssResponse::isNotLoggedIn() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TtRssResponse::toString() const {
|
QString TtRssResponse::toString() const {
|
||||||
return m_rawContent.toJson();
|
return QJsonDocument(m_rawContent).toJson(QJsonDocument::Compact);
|
||||||
}
|
}
|
||||||
|
|
||||||
TtRssLoginResponse::TtRssLoginResponse(const QString &raw_content) : TtRssResponse(raw_content) {
|
TtRssLoginResponse::TtRssLoginResponse(const QString &raw_content) : TtRssResponse(raw_content) {
|
||||||
|
@ -405,7 +405,7 @@ int TtRssLoginResponse::apiLevel() const {
|
||||||
return CONTENT_NOT_LOADED;
|
return CONTENT_NOT_LOADED;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["content"].toObject()["api_level"].toInt();
|
return m_rawContent["content"].toObject()["api_level"].toInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,7 +414,7 @@ QString TtRssLoginResponse::sessionId() const {
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["content"].toObject()["session_id"].toString();
|
return m_rawContent["content"].toObject()["session_id"].toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,7 +423,7 @@ QString TtRssResponse::error() const {
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["content"].toObject()["error"].toString();
|
return m_rawContent["content"].toObject()["error"].toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,7 +432,7 @@ bool TtRssResponse::hasError() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return m_rawContent.object()["content"].toObject().contains("error");
|
return m_rawContent["content"].toObject().contains("error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,17 +454,17 @@ RootItem *TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
|
||||||
|
|
||||||
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.object()["content"].toObject()["categories"].toObject()["items"].toArray().toVariantList();
|
QJsonArray items_to_process = m_rawContent["content"].toObject()["categories"].toObject()["items"].toArray();
|
||||||
QList<QPair<RootItem*,QVariant> > pairs;
|
QList<QPair<RootItem*,QJsonValue> > pairs;
|
||||||
|
|
||||||
foreach (QVariant item, items_to_process) {
|
foreach (QJsonValue item, items_to_process) {
|
||||||
pairs.append(QPair<RootItem*,QVariant>(parent, item));
|
pairs.append(QPair<RootItem*,QJsonValue>(parent, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!pairs.isEmpty()) {
|
while (!pairs.isEmpty()) {
|
||||||
QPair<RootItem*,QVariant> pair = pairs.takeFirst();
|
QPair<RootItem*,QJsonValue> pair = pairs.takeFirst();
|
||||||
RootItem *act_parent = pair.first;
|
RootItem *act_parent = pair.first;
|
||||||
QMap<QString,QVariant> item = pair.second.toMap();
|
QJsonObject item = pair.second.toObject();
|
||||||
|
|
||||||
int item_id = item["bare_id"].toInt();
|
int item_id = item["bare_id"].toInt();
|
||||||
bool is_category = item.contains("type") && item["type"].toString() == GFT_TYPE_CATEGORY;
|
bool is_category = item.contains("type") && item["type"].toString() == GFT_TYPE_CATEGORY;
|
||||||
|
@ -474,8 +474,8 @@ RootItem *TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
|
||||||
if (item_id == 0) {
|
if (item_id == 0) {
|
||||||
// This is "Uncategorized" category, all its feeds belong to top-level root.
|
// This is "Uncategorized" category, all its feeds belong to top-level root.
|
||||||
if (item.contains("items")) {
|
if (item.contains("items")) {
|
||||||
foreach (QVariant child_feed, item["items"].toList()) {
|
foreach (QJsonValue child_feed, item["items"].toArray()) {
|
||||||
pairs.append(QPair<RootItem*,QVariant>(parent, child_feed));
|
pairs.append(QPair<RootItem*,QJsonValue>(parent, child_feed));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -487,8 +487,8 @@ RootItem *TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
|
||||||
act_parent->appendChild(category);
|
act_parent->appendChild(category);
|
||||||
|
|
||||||
if (item.contains("items")) {
|
if (item.contains("items")) {
|
||||||
foreach (QVariant child, item["items"].toList()) {
|
foreach (QJsonValue child, item["items"].toArray()) {
|
||||||
pairs.append(QPair<RootItem*,QVariant>(category, child));
|
pairs.append(QPair<RootItem*,QJsonValue>(category, child));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -498,7 +498,7 @@ RootItem *TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
|
||||||
TtRssFeed *feed = new TtRssFeed();
|
TtRssFeed *feed = new TtRssFeed();
|
||||||
|
|
||||||
if (obtain_icons) {
|
if (obtain_icons) {
|
||||||
QString icon_path = item["icon"].type() == QVariant::String ? item["icon"].toString() : QString();
|
QString icon_path = item["icon"].type() == QJsonValue::String ? item["icon"].toString() : QString();
|
||||||
|
|
||||||
if (!icon_path.isEmpty()) {
|
if (!icon_path.isEmpty()) {
|
||||||
// Chop the "api/" suffix out and append
|
// Chop the "api/" suffix out and append
|
||||||
|
@ -535,8 +535,8 @@ TtRssGetHeadlinesResponse::~TtRssGetHeadlinesResponse() {
|
||||||
QList<Message> TtRssGetHeadlinesResponse::messages() const {
|
QList<Message> TtRssGetHeadlinesResponse::messages() const {
|
||||||
QList<Message> messages;
|
QList<Message> messages;
|
||||||
|
|
||||||
foreach (QVariant item, m_rawContent.object()["content"].toArray().toVariantList()) {
|
foreach (QJsonValue item, m_rawContent["content"].toArray()) {
|
||||||
QMap<QString,QVariant> mapped = item.toMap();
|
QJsonObject mapped = item.toObject();
|
||||||
Message message;
|
Message message;
|
||||||
|
|
||||||
message.m_author = mapped["author"].toString();
|
message.m_author = mapped["author"].toString();
|
||||||
|
@ -546,7 +546,7 @@ QList<Message> TtRssGetHeadlinesResponse::messages() const {
|
||||||
|
|
||||||
// Multiply by 1000 because Tiny Tiny RSS API does not include miliseconds in Unix
|
// Multiply by 1000 because Tiny Tiny RSS API does not include miliseconds in Unix
|
||||||
// date/time number.
|
// date/time number.
|
||||||
message.m_created = TextFactory::parseDateTime(mapped["updated"].value<qint64>() * 1000);
|
message.m_created = TextFactory::parseDateTime(mapped["updated"].toVariant().value<qint64>() * 1000);
|
||||||
message.m_createdFromFeed = true;
|
message.m_createdFromFeed = true;
|
||||||
message.m_customId = mapped["id"].toString();
|
message.m_customId = mapped["id"].toString();
|
||||||
message.m_feedId = mapped["feed_id"].toString();
|
message.m_feedId = mapped["feed_id"].toString();
|
||||||
|
@ -555,8 +555,8 @@ QList<Message> TtRssGetHeadlinesResponse::messages() const {
|
||||||
|
|
||||||
if (mapped.contains(QSL("attachments"))) {
|
if (mapped.contains(QSL("attachments"))) {
|
||||||
// Process enclosures.
|
// Process enclosures.
|
||||||
foreach (QVariant attachment, mapped["attachments"].toList()) {
|
foreach (QJsonValue attachment, mapped["attachments"].toArray()) {
|
||||||
QMap<QString,QVariant> mapped_attachemnt = attachment.toMap();
|
QJsonObject mapped_attachemnt = attachment.toObject();
|
||||||
Enclosure enclosure;
|
Enclosure enclosure;
|
||||||
|
|
||||||
enclosure.m_mimeType = mapped_attachemnt["content_type"].toString();
|
enclosure.m_mimeType = mapped_attachemnt["content_type"].toString();
|
||||||
|
@ -579,8 +579,8 @@ TtRssUpdateArticleResponse::~TtRssUpdateArticleResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TtRssUpdateArticleResponse::updateStatus() const {
|
QString TtRssUpdateArticleResponse::updateStatus() const {
|
||||||
if (m_rawContent.object().contains(QSL("content"))) {
|
if (m_rawContent.contains(QSL("content"))) {
|
||||||
return m_rawContent.object()["content"].toObject()["status"].toString();
|
return m_rawContent["content"].toObject()["status"].toString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return QString();
|
return QString();
|
||||||
|
@ -588,8 +588,8 @@ QString TtRssUpdateArticleResponse::updateStatus() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TtRssUpdateArticleResponse::articlesUpdated() const {
|
int TtRssUpdateArticleResponse::articlesUpdated() const {
|
||||||
if (m_rawContent.object().contains(QSL("content"))) {
|
if (m_rawContent.contains(QSL("content"))) {
|
||||||
return m_rawContent.object()["content"].toObject()["updated"].toInt();
|
return m_rawContent["content"].toObject()["updated"].toInt();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -603,8 +603,8 @@ TtRssSubscribeToFeedResponse::~TtRssSubscribeToFeedResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TtRssSubscribeToFeedResponse::code() const {
|
int TtRssSubscribeToFeedResponse::code() const {
|
||||||
if (m_rawContent.object().contains(QSL("content"))) {
|
if (m_rawContent.contains(QSL("content"))) {
|
||||||
return m_rawContent.object()["content"].toObject()["status"].toObject()["code"].toInt();
|
return m_rawContent["content"].toObject()["status"].toObject()["code"].toInt();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return STF_UNKNOWN;
|
return STF_UNKNOWN;
|
||||||
|
@ -619,8 +619,8 @@ TtRssUnsubscribeFeedResponse::~TtRssUnsubscribeFeedResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TtRssUnsubscribeFeedResponse::code() const {
|
QString TtRssUnsubscribeFeedResponse::code() const {
|
||||||
if (m_rawContent.object().contains(QSL("content"))) {
|
if (m_rawContent.contains(QSL("content"))) {
|
||||||
QJsonObject map = m_rawContent.object()["content"].toObject();
|
QJsonObject map = m_rawContent["content"].toObject();
|
||||||
|
|
||||||
if (map.contains(QSL("error"))) {
|
if (map.contains(QSL("error"))) {
|
||||||
return map["error"].toString();
|
return map["error"].toString();
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QJsonDocument>
|
#include <QJsonObject>
|
||||||
|
|
||||||
|
|
||||||
class RootItem;
|
class RootItem;
|
||||||
|
@ -44,7 +44,7 @@ class TtRssResponse {
|
||||||
QString toString() const;
|
QString toString() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QJsonDocument m_rawContent;
|
QJsonObject m_rawContent;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TtRssLoginResponse : public TtRssResponse {
|
class TtRssLoginResponse : public TtRssResponse {
|
||||||
|
|
Loading…
Add table
Reference in a new issue