Switch JsonApiJob to Qt5's QJson #5710
authorChristian Kamm <mail@ckamm.de>
Wed, 26 Apr 2017 10:15:33 +0000 (12:15 +0200)
committerMarkus Goetz <markus@woboq.com>
Mon, 8 May 2017 09:50:33 +0000 (11:50 +0200)
20 files changed:
src/cmd/cmd.cpp
src/gui/activitylistmodel.cpp
src/gui/activitylistmodel.h
src/gui/creds/shibboleth/shibbolethuserjob.cpp
src/gui/creds/shibboleth/shibbolethuserjob.h
src/gui/notificationconfirmjob.cpp
src/gui/ocsjob.cpp
src/gui/owncloudsetupwizard.cpp
src/gui/owncloudsetupwizard.h
src/gui/servernotificationhandler.cpp
src/gui/servernotificationhandler.h
src/gui/thumbnailjob.cpp
src/libsync/abstractnetworkjob.cpp
src/libsync/connectionvalidator.cpp
src/libsync/connectionvalidator.h
src/libsync/networkjobs.cpp
src/libsync/networkjobs.h
src/libsync/owncloudpropagator.cpp
src/libsync/propagatedownload.cpp
src/libsync/propagateuploadv1.cpp

index 553905d8e9a61271073e4a613782e9537c7f8c70..32fa03b49ebee4b5041b993cc2b3a3bbfb7eb4e1 100644 (file)
@@ -20,6 +20,8 @@
 #include <QUrl>
 #include <QFile>
 #include <QFileInfo>
+#include <QJsonDocument>
+#include <QJsonObject>
 #include <qdebug.h>
 
 #include "account.h"
@@ -416,10 +418,10 @@ int main(int argc, char **argv) {
 
     JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
     job->setTimeout(timeoutToUseMsec);
-    QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QVariantMap &json) {
-        auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities");
+    QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QJsonDocument &json) {
+        auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject();
         qDebug() << "Server capabilities" << caps;
-        account->setCapabilities(caps.toMap());
+        account->setCapabilities(caps.toVariantMap());
         loop.quit();
     });
     job->start();
index b4d213c8577b0f6487d73a7f338a569f2e76ddad..cac40ae86f502e82efc7e117c79f929f652a8d73 100644 (file)
@@ -16,6 +16,8 @@
 #include <QAbstractListModel>
 #include <QWidget>
 #include <QIcon>
+#include <QJsonObject>
+#include <QJsonDocument>
 
 #include "account.h"
 #include "accountstate.h"
@@ -126,8 +128,8 @@ void ActivityListModel::startFetchJob(AccountState* s)
         return;
     }
     JsonApiJob *job = new JsonApiJob(s->account(), QLatin1String("ocs/v1.php/cloud/activity"), this);
-    QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)),
-                     this, SLOT(slotActivitiesReceived(QVariantMap, int)));
+    QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)),
+                     this, SLOT(slotActivitiesReceived(QJsonDocument, int)));
     job->setProperty("AccountStatePtr", QVariant::fromValue<QPointer<AccountState>>(s));
 
     QList< QPair<QString,QString> > params;
@@ -140,9 +142,9 @@ void ActivityListModel::startFetchJob(AccountState* s)
     job->start();
 }
 
-void ActivityListModel::slotActivitiesReceived(const QVariantMap& json, int statusCode)
+void ActivityListModel::slotActivitiesReceived(const QJsonDocument& json, int statusCode)
 {
-    auto activities = json.value("ocs").toMap().value("data").toList();
+    auto activities = json.object().value("ocs").toObject().value("data").toArray();
 
     ActivityList list;
     auto ast = qvariant_cast<QPointer<AccountState>>(sender()->property("AccountStatePtr"));
@@ -152,17 +154,19 @@ void ActivityListModel::slotActivitiesReceived(const QVariantMap& json, int stat
     _currentlyFetching.remove(ast);
 
     foreach( auto activ, activities ) {
-        auto json = activ.toMap();
+        auto json = activ.toObject();
+
+        qDebug() << "ZZZ" << json;
 
         Activity a;
         a._type = Activity::ActivityType;
         a._accName  = ast->account()->displayName();
-        a._id       = json.value("id").toLongLong();
+        a._id       = json.value("id").toInt();
         a._subject  = json.value("subject").toString();
         a._message  = json.value("message").toString();
         a._file     = json.value("file").toString();
-        a._link     = json.value("link").toUrl();
-        a._dateTime = json.value("date").toDateTime();
+        a._link     = QUrl(json.value("link").toString());
+        a._dateTime = QDateTime::fromString(json.value("date").toString(), Qt::ISODate);
         list.append(a);
     }
 
index f370144aa21475cc711a7f479abbc8d7a1dcafd7..f0f6adda48d6c1d46fc45171c1419d09a7004de8 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "activitydata.h"
 
+class QJsonDocument;
+
 namespace OCC {
 
 class AccountState;
@@ -49,7 +51,7 @@ public slots:
     void slotRemoveAccount( AccountState *ast );
 
 private slots:
-    void slotActivitiesReceived(const QVariantMap& json, int statusCode);
+    void slotActivitiesReceived(const QJsonDocument& json, int statusCode);
 
 signals:
     void activityJobStatusCode(AccountState* ast, int statusCode);
index a36bc2973793116d4d61b964ec0e7dbcb0f27074..e53d78294a9904710fe702e995388cc993825651 100644 (file)
@@ -14,7 +14,9 @@
 
 #include "shibbolethuserjob.h"
 #include <account.h>
-#include <json.h>
+
+#include <QJsonDocument>
+#include <QJsonObject>
 
 namespace OCC {
 
@@ -22,15 +24,15 @@ ShibbolethUserJob::ShibbolethUserJob(AccountPtr account, QObject* parent)
     : JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/user"), parent)
 {
     setIgnoreCredentialFailure(true);
-    connect(this, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotJsonReceived(QVariantMap, int)));
+    connect(this, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotJsonReceived(QJsonDocument, int)));
 }
 
-void ShibbolethUserJob::slotJsonReceived(const QVariantMap &json, int statusCode)
+void ShibbolethUserJob::slotJsonReceived(const QJsonDocument &json, int statusCode)
 {
     if( statusCode != 100 ) {
         qWarning() << "JSON Api call resulted in status code != 100";
     }
-    QString user =  json.value("ocs").toMap().value("data").toMap().value("id").toString();
+    QString user =  json.object().value("ocs").toObject().value("data").toObject().value("id").toString();
     //qDebug() << "cloud/user: " << json << "->" << user;
     emit userFetched(user);
 }
index 7f53b689c7514bfefff1ce52934fe3fe0016a1f6..feb59014a1820d9b296085d82ce5bf1f386bdea0 100644 (file)
@@ -16,6 +16,8 @@
 
 #include <networkjobs.h>
 
+class QJsonDocument;
+
 namespace OCC
 {
 
@@ -33,7 +35,7 @@ signals:
     void userFetched(const QString &user);
 
 private slots:
-    void slotJsonReceived(const QVariantMap &, int statusCode);
+    void slotJsonReceived(const QJsonDocument &, int statusCode);
 };
 
 
index 479c4238db5b269f113aab2c8967156f2bc3336f..86721d98b79f30240be32306e67ef49618af7cad 100644 (file)
@@ -15,7 +15,6 @@
 #include "notificationconfirmjob.h"
 #include "networkjobs.h"
 #include "account.h"
-#include "json.h"
 
 #include <QBuffer>
 
index bdd312d908edeaeab48660738ea64ea14712270d..a513308cce1d63bb66c6e02b3695c5432b22c048 100644 (file)
@@ -100,10 +100,10 @@ void OcsJob::start()
 
 bool OcsJob::finished()
 {
-    const QString replyData = reply()->readAll();
+    const QByteArray replyData = reply()->readAll();
 
     QJsonParseError error;
-    auto json = QJsonDocument::fromJson(replyData.toUtf8(), &error);
+    auto json = QJsonDocument::fromJson(replyData, &error);
     if (error.error != QJsonParseError::NoError) {
         qDebug() << "Could not parse reply to" 
                  << _verb 
index 6ddf8d3d7a2ec1ed8d1ceb48b66d3f08bf906130..62eb21d117acab7364677b72e096649cecf8924f 100644 (file)
@@ -176,14 +176,14 @@ void OwncloudSetupWizard::slotContinueDetermineAuth()
     account->setCredentials(CredentialsFactory::create("dummy"));
     CheckServerJob *job = new CheckServerJob(_ocWizard->account(), this);
     job->setIgnoreCredentialFailure(true);
-    connect(job, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotOwnCloudFoundAuth(QUrl,QVariantMap)));
+    connect(job, SIGNAL(instanceFound(QUrl,QJsonObject)), SLOT(slotOwnCloudFoundAuth(QUrl,QJsonObject)));
     connect(job, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoOwnCloudFoundAuth(QNetworkReply*)));
     connect(job, SIGNAL(timeout(const QUrl&)), SLOT(slotNoOwnCloudFoundAuthTimeout(const QUrl&)));
     job->setTimeout((account->url().scheme() == "https") ? 30*1000 : 10*1000);
     job->start();
 }
 
-void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QVariantMap &info)
+void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QJsonObject &info)
 {
     auto serverVersion = CheckServerJob::version(info);
 
index c5ad99a2e9a44441423f0efa20b026936468b6a6..d26fb9cdced247c474589867e113726497d61b7f 100644 (file)
@@ -69,7 +69,7 @@ private slots:
     void slotDetermineAuthType(const QString&);
     void slotSystemProxyLookupDone(const QNetworkProxy &proxy);
     void slotContinueDetermineAuth();
-    void slotOwnCloudFoundAuth(const QUrl&, const QVariantMap&);
+    void slotOwnCloudFoundAuth(const QUrl&, const QJsonObject&);
     void slotNoOwnCloudFoundAuth(QNetworkReply *reply);
     void slotNoOwnCloudFoundAuthTimeout(const QUrl&url);
 
index bd91e8a1ea4e086b1e345f01e53287aa81a6b1d5..6cb4ff4906e9a8983ab22be85d350c28f891c59b 100644 (file)
 #include "servernotificationhandler.h"
 #include "accountstate.h"
 #include "capabilities.h"
-#include "json.h"
 #include "networkjobs.h"
 
+#include <QJsonDocument>
+#include <QJsonObject>
+
 namespace OCC
 {
 
@@ -48,14 +50,14 @@ void ServerNotificationHandler::slotFetchNotifications(AccountState *ptr)
 
     // if the previous notification job has finished, start next.
     _notificationJob = new JsonApiJob( ptr->account(), QLatin1String("ocs/v2.php/apps/notifications/api/v1/notifications"), this );
-    QObject::connect(_notificationJob.data(), SIGNAL(jsonReceived(QVariantMap, int)),
-                     this, SLOT(slotNotificationsReceived(QVariantMap, int)));
+    QObject::connect(_notificationJob.data(), SIGNAL(jsonReceived(QJsonDocument, int)),
+                     this, SLOT(slotNotificationsReceived(QJsonDocument, int)));
     _notificationJob->setProperty("AccountStatePtr", QVariant::fromValue<AccountState*>(ptr));
 
     _notificationJob->start();
 }
 
-void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& json, int statusCode)
+void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument& json, int statusCode)
 {
     if( statusCode != 200 ) {
         qDebug() << Q_FUNC_INFO << "Notifications failed with status code " << statusCode;
@@ -63,7 +65,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& jso
         return;
     }
 
-    auto notifies = json.value("ocs").toMap().value("data").toList();
+    auto notifies = json.object().value("ocs").toObject().value("data").toArray();
 
     AccountState* ai = qvariant_cast<AccountState*>(sender()->property("AccountStatePtr"));
 
@@ -71,25 +73,25 @@ void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& jso
 
     foreach( auto element, notifies ) {
         Activity a;
-        auto json   = element.toMap();
+        auto json   = element.toObject();
         a._type     = Activity::NotificationType;
         a._accName  = ai->account()->displayName();
-        a._id       = json.value("notification_id").toLongLong();
+        a._id       = json.value("notification_id").toInt();
         a._subject  = json.value("subject").toString();
         a._message  = json.value("message").toString();
         QString s   = json.value("link").toString();
         if( !s.isEmpty() ) {
             a._link     = QUrl(s);
         }
-        a._dateTime = json.value("datetime").toDateTime();
+        a._dateTime = QDateTime::fromString(json.value("datetime").toString(), Qt::ISODate);
 
-        auto actions = json.value("actions").toList();
+        auto actions = json.value("actions").toArray();
         foreach( auto action, actions) {
-            auto actionJson = action.toMap();
+            auto actionJson = action.toObject();
             ActivityLink al;
-            al._label = QUrl::fromPercentEncoding(actionJson.value("label").toByteArray());
+            al._label = QUrl::fromPercentEncoding(actionJson.value("label").toString().toUtf8());
             al._link  = actionJson.value("link").toString();
-            al._verb  = actionJson.value("type").toByteArray();
+            al._verb  = actionJson.value("type").toString().toUtf8();
             al._isPrimary = actionJson.value("primary").toBool();
 
             a._links.append(al);
index c3d8f185d25477c79cad8a1ab6d6d3bd7aed6931..8c8fef976de736dc05a362087b6615a7e13eb33c 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "activitywidget.h"
 
+class QJsonDocument;
+
 namespace OCC
 {
 
@@ -35,7 +37,7 @@ public slots:
     void slotFetchNotifications(AccountState *ptr);
 
 private slots:
-    void slotNotificationsReceived(const QVariantMap& json, int statusCode);
+    void slotNotificationsReceived(const QJsonDocument& json, int statusCode);
 
 private:
     QPointer<JsonApiJob> _notificationJob;
index 5ffe6c2918eaf1efec9d346aea7390b71710e4e3..2f58fcded5405c30081fc7cbb3ca6d39ab7c2879 100644 (file)
@@ -15,7 +15,6 @@
 #include "thumbnailjob.h"
 #include "networkjobs.h"
 #include "account.h"
-#include "json.h"
 
 namespace OCC {
 
index 317d3439c69fa611b1ee5facaa8f8bb4cfc14421..fcb7689dd8530d8b1161d0ad483ea1f7a22ea2b1 100644 (file)
@@ -27,8 +27,6 @@
 #include <QDebug>
 #include <QCoreApplication>
 
-#include "json.h"
-
 #include "networkjobs.h"
 #include "account.h"
 #include "owncloudpropagator.h"
index d664354a68557ad11fbc3bb5fee6fd00d2e7127f..76945baf254c5fc7009d4328274127475bf79cc8 100644 (file)
@@ -107,13 +107,13 @@ void ConnectionValidator::slotCheckServerAndAuth()
     CheckServerJob *checkJob = new CheckServerJob(_account, this);
     checkJob->setTimeout(timeoutToUseMsec);
     checkJob->setIgnoreCredentialFailure(true);
-    connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap)));
+    connect(checkJob, SIGNAL(instanceFound(QUrl,QJsonObject)), SLOT(slotStatusFound(QUrl,QJsonObject)));
     connect(checkJob, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
     connect(checkJob, SIGNAL(timeout(QUrl)), SLOT(slotJobTimeout(QUrl)));
     checkJob->start();
 }
 
-void ConnectionValidator::slotStatusFound(const QUrl&url, const QVariantMap &info)
+void ConnectionValidator::slotStatusFound(const QUrl&url, const QJsonObject &info)
 {
     // Newer servers don't disclose any version in status.php anymore
     // https://github.com/owncloud/core/pull/27473/files
@@ -223,18 +223,18 @@ void ConnectionValidator::checkServerCapabilities()
 {
     JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/capabilities"), this);
     job->setTimeout(timeoutToUseMsec);
-    QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotCapabilitiesRecieved(QVariantMap)));
+    QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotCapabilitiesRecieved(QJsonDocument)));
     job->start();
 }
 
-void ConnectionValidator::slotCapabilitiesRecieved(const QVariantMap &json)
+void ConnectionValidator::slotCapabilitiesRecieved(const QJsonDocument &json)
 {
-    auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities");
+    auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject();
     qDebug() << "Server capabilities" << caps;
-    _account->setCapabilities(caps.toMap());
+    _account->setCapabilities(caps.toVariantMap());
 
     // New servers also report the version in the capabilities
-    QString serverVersion = caps.toMap()["core"].toMap()["status"].toMap()["version"].toString();
+    QString serverVersion = caps["core"].toObject()["status"].toObject()["version"].toString();
     if (!serverVersion.isEmpty() && !setAndCheckServerVersion(serverVersion)) {
         return;
     }
@@ -247,7 +247,7 @@ void ConnectionValidator::fetchUser()
 
     JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/user"), this);
     job->setTimeout(timeoutToUseMsec);
-    QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotUserFetched(QVariantMap)));
+    QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotUserFetched(QJsonDocument)));
     job->start();
 }
 
@@ -271,9 +271,9 @@ bool ConnectionValidator::setAndCheckServerVersion(const QString& version)
     return true;
 }
 
-void ConnectionValidator::slotUserFetched(const QVariantMap &json)
+void ConnectionValidator::slotUserFetched(const QJsonDocument &json)
 {
-    QString user = json.value("ocs").toMap().value("data").toMap().value("id").toString();
+    QString user = json.object().value("ocs").toObject().value("data").toObject().value("id").toString();
     if (!user.isEmpty()) {
         _account->setDavUser(user);
 
index 73dbb37eff57e4164f5cbafa55878996dba71ec6..0bebbeb4974aa1eb48baa0e39324a782b1cfc301 100644 (file)
@@ -113,15 +113,15 @@ signals:
 protected slots:
     void slotCheckServerAndAuth();
 
-    void slotStatusFound(const QUrl&url, const QVariantMap &info);
+    void slotStatusFound(const QUrl&url, const QJsonObject &info);
     void slotNoStatusFound(QNetworkReply *reply);
     void slotJobTimeout(const QUrl& url);
 
     void slotAuthFailed(QNetworkReply *reply);
     void slotAuthSuccess();
 
-    void slotCapabilitiesRecieved(const QVariantMap&);
-    void slotUserFetched(const QVariantMap &);
+    void slotCapabilitiesRecieved(const QJsonDocument&);
+    void slotUserFetched(const QJsonDocument &);
     void slotAvatarImage(const QImage &img);
 
 private:
index 08c98ec9a997cbd3892d71475504069707fe81e6..015bcf2d4883ebc75cef0e677aa7a8ef3272db51 100644 (file)
@@ -28,8 +28,8 @@
 #include <QDebug>
 #include <QCoreApplication>
 #include <QPixmap>
-
-#include "json.h"
+#include <QJsonDocument>
+#include <QJsonObject>
 
 #include "networkjobs.h"
 #include "account.h"
@@ -397,17 +397,17 @@ void CheckServerJob::onTimedOut()
     deleteLater();
 }
 
-QString CheckServerJob::version(const QVariantMap &info)
+QString CheckServerJob::version(const QJsonObject &info)
 {
     return info.value(QLatin1String("version")).toString();
 }
 
-QString CheckServerJob::versionString(const QVariantMap &info)
+QString CheckServerJob::versionString(const QJsonObject &info)
 {
     return info.value(QLatin1String("versionstring")).toString();
 }
 
-bool CheckServerJob::installed(const QVariantMap &info)
+bool CheckServerJob::installed(const QJsonObject &info)
 {
     return info.value(QLatin1String("installed")).toBool();
 }
@@ -461,22 +461,22 @@ bool CheckServerJob::finished()
         return false;
     }
 
-    bool success = false;
     QByteArray body = reply()->peek(4*1024);
     int httpStatus = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
     if( body.isEmpty() || httpStatus != 200) {
         qDebug() << "error: status.php replied " << httpStatus << body;
         emit instanceNotFound(reply());
     } else {
-        QVariantMap status = QtJson::parse(QString::fromUtf8(body), success).toMap();
+        QJsonParseError error;
+        auto status = QJsonDocument::fromJson(body, &error);
         // empty or invalid response
-        if (!success || status.isEmpty()) {
-            qDebug() << "status.php from server is not valid JSON!" << body << reply()->request().url();
+        if (error.error != QJsonParseError::NoError || status.isNull()) {
+            qDebug() << "status.php from server is not valid JSON!" << body << reply()->request().url() << error.errorString();
         }
 
         qDebug() << "status.php returns: " << status << " " << reply()->error() << " Reply: " << reply();
-        if( status.contains("installed") ) {
-            emit instanceFound(reply()->url(), status);
+        if( status.object().contains("installed") ) {
+            emit instanceFound(reply()->url(), status.object());
         } else {
             qDebug() << "No proper answer on " << reply()->url();
             emit instanceNotFound(reply());
@@ -736,7 +736,7 @@ bool JsonApiJob::finished()
 
     if (reply()->error() != QNetworkReply::NoError) {
         qWarning() << "Network error: " << path() << errorString() << reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute);
-        emit jsonReceived(QVariantMap(), statusCode);
+        emit jsonReceived(QJsonDocument(), statusCode);
         return true;
     }
 
@@ -756,12 +756,12 @@ bool JsonApiJob::finished()
         }
     }
 
-    bool success = false;
-    QVariantMap json = QtJson::parse(jsonStr, success).toMap();
+    QJsonParseError error;
+    auto json = QJsonDocument::fromJson(jsonStr.toUtf8(), &error);
     // empty or invalid response
-    if (!success || json.isEmpty()) {
-        qWarning() << "invalid JSON!" << jsonStr;
-        emit jsonReceived(QVariantMap(), statusCode);
+    if (error.error != QJsonParseError::NoError || json.isNull()) {
+        qWarning() << "invalid JSON!" << jsonStr << error.errorString();
+        emit jsonReceived(json, statusCode);
         return true;
     }
 
index ce2c62eee6a91f83e71928be1ab62872d1f777fa..4ddbf83e2dbbecdc6d675ed9a9cbdc0a3ddcb692 100644 (file)
@@ -19,6 +19,7 @@
 #include "abstractnetworkjob.h"
 
 class QUrl;
+class QJsonObject;
 
 namespace OCC {
 
@@ -227,12 +228,12 @@ public:
     explicit CheckServerJob(AccountPtr account, QObject *parent = 0);
     void start() Q_DECL_OVERRIDE;
 
-    static QString version(const QVariantMap &info);
-    static QString versionString(const QVariantMap &info);
-    static bool installed(const QVariantMap &info);
+    static QString version(const QJsonObject &info);
+    static QString versionString(const QJsonObject &info);
+    static bool installed(const QJsonObject &info);
 
 signals:
-    void instanceFound(const QUrl&url, const QVariantMap &info);
+    void instanceFound(const QUrl&url, const QJsonObject &info);
 
     /** Emitted on invalid status.php reply.
      *
@@ -278,8 +279,8 @@ private slots:
  * To be used like this:
  * \code
  * _job = new JsonApiJob(account, QLatin1String("ocs/v1.php/foo/bar"), this);
- * connect(job, SIGNAL(jsonReceived(QVariantMap)), ...)
- * The received QVariantMap is empty in case of error or otherwise is a map as parsed by QtJson
+ * connect(job, SIGNAL(jsonReceived(QJsonDocument)), ...)
+ * The received QVariantMap is null in case of error
  * \encode
  *
  * @ingroup libsync
@@ -309,10 +310,10 @@ signals:
 
     /**
      * @brief jsonReceived - signal to report the json answer from ocs
-     * @param json - the raw json string
+     * @param json - the parsed json document
      * @param statusCode - the OCS status code: 100 (!) for success
      */
-    void jsonReceived(const QVariantMap &json, int statusCode);
+    void jsonReceived(const QJsonDocument &json, int statusCode);
 
 private:
     QList< QPair<QString,QString> > _additionalParams;
index 99e5ca0168287448378cba466ce2fdc01d66b593..14c8b5edccbfa3c55c98e6c122a0fc682607a38f 100644 (file)
@@ -26,7 +26,6 @@
 #include "utility.h"
 #include "account.h"
 #include "asserts.h"
-#include <json.h>
 
 #ifdef Q_OS_WIN
 #include <windef.h>
index 823c491d9962d88777e21560ed2a0fe4aa77c6a6..893f405024ee48896756d28bcf47f64c8422e1e4 100644 (file)
@@ -25,7 +25,6 @@
 #include "checksums.h"
 #include "asserts.h"
 
-#include <json.h>
 #include <QNetworkAccessManager>
 #include <QFileInfo>
 #include <QDir>
index 308294e420248c13b80fe5a48cb84f154a0b3a13..946bdcbbec201756b7277b3d8440330651d1ac31 100644 (file)
@@ -27,7 +27,6 @@
 #include "propagateremotedelete.h"
 #include "asserts.h"
 
-#include <json.h>
 #include <QNetworkAccessManager>
 #include <QFileInfo>
 #include <QDir>