diff --git a/post.cpp b/post.cpp index 7552838..bbcecda 100644 --- a/post.cpp +++ b/post.cpp @@ -7,7 +7,7 @@ Post::Post(QObject *parent) : QObject(parent), } -Post::Post(QJsonDocument post, QObject *parent) : QObject(parent), +Post::Post(QJsonObject post, QObject *parent) : QObject(parent), mStarred(false) { qDebug() << post; diff --git a/post.h b/post.h index 43ff2d3..c47417a 100644 --- a/post.h +++ b/post.h @@ -4,7 +4,7 @@ #include #include #include -#include +#include class Post : public QObject { @@ -18,7 +18,7 @@ class Post : public QObject public: Post(QObject *parent = 0); - Post(QJsonDocument post, QObject *parent = 0); + Post(QJsonObject post, QObject *parent = 0); ~Post(); QString title() const { return mTitle; } QString author() const { return mAuthor; } diff --git a/tinytinyrss.cpp b/tinytinyrss.cpp index 3d42dc2..1dfa85c 100644 --- a/tinytinyrss.cpp +++ b/tinytinyrss.cpp @@ -3,17 +3,26 @@ #include #include #include +#include TinyTinyRSS::TinyTinyRSS(QObject *parent) : QObject(parent) { mNetworkManager = new QNetworkAccessManager(this); + mPosts = QList(); +} + +TinyTinyRSS::~TinyTinyRSS() +{ + mPosts.empty(); + delete mNetworkManager; } void TinyTinyRSS::initialize(const QString serverUrl, const QString sessionId) { mServerUrl = serverUrl; mSessionId = sessionId; + reload(); } void TinyTinyRSS::reload() @@ -28,11 +37,6 @@ void TinyTinyRSS::reload() doOperation("getHeadlines", opts); } -TinyTinyRSS::~TinyTinyRSS() -{ - delete mNetworkManager; -} - void TinyTinyRSS::doOperation(QString operation, QVariantMap opts) { QVariantMap options; @@ -49,9 +53,9 @@ void TinyTinyRSS::doOperation(QString operation, QVariantMap opts) QJsonDocument json = QJsonDocument(jsonobj); QNetworkRequest request(mServerUrl); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QNetworkReply *reply = mNetworkManager->post(request, json.toBinaryData()); + QNetworkReply *reply = mNetworkManager->post(request, json.toJson()); connect(reply, SIGNAL(finished()), this, SLOT(reply())); } @@ -61,9 +65,18 @@ void TinyTinyRSS::reply() if (reply) { if (reply->error() == QNetworkReply::NoError) { - //QJsonDocument json = QJsonDocument::fromBinaryData(reply->readAll()); - //mSessionId = json.toVariant().toMap().value("session_id"); - //emit sessionIdChanged(mSessionId); + QString jsonString = QString(reply->readAll()); + QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8()); + + QJsonArray posts = json.object().value("content").toArray(); + for(int i = 0; posts.count(); i++) + { + QJsonObject postJson = posts.at(i).toObject(); + Post *post = new Post(postJson, this); + mPosts.append(post); + } + + emit postsChanged(mPosts); } else { int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); //do some error management diff --git a/tinytinyrsslogin.cpp b/tinytinyrsslogin.cpp index 923ca84..e231b34 100644 --- a/tinytinyrsslogin.cpp +++ b/tinytinyrsslogin.cpp @@ -39,10 +39,9 @@ void TinyTinyRSSLogin::reply() if (reply) { if (reply->error() == QNetworkReply::NoError) { - QJsonDocument jdoc = QJsonDocument::fromBinaryData(reply->readAll()); - qDebug() << jdoc; - //mSessionId = json.toVariant().toMap().value("session_id").toString(); - //qDebug() << "sessionId: " << mSessionId; + QString jsonString = QString(reply->readAll()); + QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8()); + mSessionId = json.object().value("content").toObject().value("session_id").toString(); emit sessionIdChanged(mSessionId); } else { int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();