diff --git a/src/librssguard/services/feedly/feedlynetwork.cpp b/src/librssguard/services/feedly/feedlynetwork.cpp index a56e6ba9d..65aec3a1e 100755 --- a/src/librssguard/services/feedly/feedlynetwork.cpp +++ b/src/librssguard/services/feedly/feedlynetwork.cpp @@ -83,7 +83,7 @@ QList FeedlyNetwork::streamContents(const QString& stream_id) { {}, m_service->networkProxy()); - messages += decodeStreamContents(output); + messages += decodeStreamContents(output, continuation); } while (!continuation.isEmpty()); @@ -91,8 +91,28 @@ QList FeedlyNetwork::streamContents(const QString& stream_id) { return messages; } -QList FeedlyNetwork::decodeStreamContents(const QByteArray& stream_contents) const { - return {}; +QList FeedlyNetwork::decodeStreamContents(const QByteArray& stream_contents, QString& continuation) const { + QList messages; + QJsonDocument json = QJsonDocument::fromJson(stream_contents); + + continuation = json.object()["continuation"].toString(); + + for (const QJsonValue& entry : json.object()["items"].toArray()) { + const QJsonObject& entry_obj = entry.toObject(); + Message message; + + message.m_title = entry_obj["title"].toString(); + message.m_author = entry_obj["author"].toString(); + message.m_contents = entry_obj["content"].toObject()["content"].toString(); + message.m_createdFromFeed = true; + message.m_created = QDateTime::fromMSecsSinceEpoch(entry_obj["published"].toVariant().toLongLong(), + Qt::TimeSpec::UTC); + message.m_customId = entry_obj["id"].toString(); + + messages.append(message); + } + + return messages; } RootItem* FeedlyNetwork::collections(bool obtain_icons) { diff --git a/src/librssguard/services/feedly/feedlynetwork.h b/src/librssguard/services/feedly/feedlynetwork.h index e1a3bd51f..93d73e28a 100755 --- a/src/librssguard/services/feedly/feedlynetwork.h +++ b/src/librssguard/services/feedly/feedlynetwork.h @@ -61,7 +61,7 @@ class FeedlyNetwork : public QObject { QString fullUrl(Service service) const; QString bearer() const; - QList decodeStreamContents(const QByteArray& stream_contents) const; + QList decodeStreamContents(const QByteArray& stream_contents, QString& continuation) const; RootItem* decodeCollections(const QByteArray& json, bool obtain_icons, const QNetworkProxy& proxy, int timeout = 0) const; QPair bearerHeader(const QString& bearer) const;