Skip to content

Commit

Permalink
Sharing: Switch from QtJson to Qt5's QJson #5710
Browse files Browse the repository at this point in the history
  • Loading branch information
ckamm authored and guruz committed May 8, 2017
1 parent 1370599 commit c5b6ec2
Show file tree
Hide file tree
Showing 13 changed files with 101 additions and 86 deletions.
17 changes: 10 additions & 7 deletions src/gui/ocsjob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@
#include "ocsjob.h"
#include "networkjobs.h"
#include "account.h"
#include "json.h"

#include <QBuffer>
#include <QJsonDocument>
#include <QJsonObject>

namespace OCC {

Expand Down Expand Up @@ -101,13 +102,14 @@ bool OcsJob::finished()
{
const QString replyData = reply()->readAll();

bool success;
QVariantMap json = QtJson::parse(replyData, success).toMap();
if (!success) {
QJsonParseError error;
auto json = QJsonDocument::fromJson(replyData.toUtf8(), &error);
if (error.error != QJsonParseError::NoError) {
qDebug() << "Could not parse reply to"
<< _verb
<< Utility::concatUrlPath(account()->url(), path())
<< _params
<< error.errorString()
<< ":" << replyData;
}

Expand All @@ -126,11 +128,12 @@ bool OcsJob::finished()
return true;
}

int OcsJob::getJsonReturnCode(const QVariantMap &json, QString &message)
int OcsJob::getJsonReturnCode(const QJsonDocument &json, QString &message)
{
//TODO proper checking
int code = json.value("ocs").toMap().value("meta").toMap().value("statuscode").toInt();
message = json.value("ocs").toMap().value("meta").toMap().value("message").toString();
auto meta = json.object().value("ocs").toObject().value("meta").toObject();
int code = meta.value("statuscode").toInt();
message = meta.value("message").toString();

return code;
}
Expand Down
6 changes: 4 additions & 2 deletions src/gui/ocsjob.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

#define OCS_SUCCESS_STATUS_CODE 100

class QJsonDocument;

namespace OCC {

/**
Expand Down Expand Up @@ -93,7 +95,7 @@ class OcsJob : public AbstractNetworkJob {
* @param message The message that is set in the metadata
* @return The statuscode of the OCS response
*/
static int getJsonReturnCode(const QVariantMap &json, QString &message);
static int getJsonReturnCode(const QJsonDocument &json, QString &message);

protected slots:

Expand All @@ -109,7 +111,7 @@ protected slots:
*
* @param reply the reply
*/
void jobFinished(QVariantMap reply);
void jobFinished(QJsonDocument reply);

/**
* The status code was not one of the expected (passing)
Expand Down
4 changes: 2 additions & 2 deletions src/gui/ocsshareejob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ OcsShareeJob::OcsShareeJob(AccountPtr account)
: OcsJob(account)
{
setPath("ocs/v1.php/apps/files_sharing/api/v1/sharees");
connect(this, SIGNAL(jobFinished(QVariantMap)), SLOT(jobDone(QVariantMap)));
connect(this, SIGNAL(jobFinished(QJsonDocument)), SLOT(jobDone(QJsonDocument)));

}

Expand All @@ -39,7 +39,7 @@ void OcsShareeJob::getSharees(const QString &search,
start();
}

void OcsShareeJob::jobDone(const QVariantMap &reply)
void OcsShareeJob::jobDone(const QJsonDocument &reply)
{
emit shareeJobFinished(reply);
}
Expand Down
7 changes: 4 additions & 3 deletions src/gui/ocsshareejob.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
#define OCSSHAREEJOB_H

#include "ocsjob.h"
#include <QVariantMap>

class QJsonDocument;

namespace OCC {

Expand Down Expand Up @@ -44,10 +45,10 @@ class OcsShareeJob : public OcsJob {
*
* @param reply The reply
*/
void shareeJobFinished(const QVariantMap &reply);
void shareeJobFinished(const QJsonDocument &reply);

private slots:
void jobDone(const QVariantMap &reply);
void jobDone(const QJsonDocument &reply);

};

Expand Down
6 changes: 3 additions & 3 deletions src/gui/ocssharejob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
#include "ocssharejob.h"
#include "networkjobs.h"
#include "account.h"
#include "json.h"

#include <QBuffer>
#include <QJsonDocument>

namespace OCC {

OcsShareJob::OcsShareJob(AccountPtr account)
: OcsJob(account)
{
setPath("ocs/v1.php/apps/files_sharing/api/v1/shares");
connect(this, SIGNAL(jobFinished(QVariantMap)), this, SLOT(jobDone(QVariantMap)));
connect(this, SIGNAL(jobFinished(QJsonDocument)), this, SLOT(jobDone(QJsonDocument)));
}

void OcsShareJob::getShares(const QString &path)
Expand Down Expand Up @@ -151,7 +151,7 @@ void OcsShareJob::getSharedWithMe()
start();
}

void OcsShareJob::jobDone(QVariantMap reply)
void OcsShareJob::jobDone(QJsonDocument reply)
{
emit shareJobFinished(reply, _value);
}
Expand Down
4 changes: 2 additions & 2 deletions src/gui/ocssharejob.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ class OcsShareJob : public OcsJob {
* @param reply The reply
* @param value To what did we set a variable (if we set any).
*/
void shareJobFinished(QVariantMap reply, QVariant value);
void shareJobFinished(QJsonDocument reply, QVariant value);

private slots:
void jobDone(QVariantMap reply);
void jobDone(QJsonDocument reply);

private:
QVariant _value;
Expand Down
42 changes: 23 additions & 19 deletions src/gui/sharee.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
#include "sharee.h"
#include "ocsshareejob.h"

#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>

namespace OCC {

Sharee::Sharee(const QString shareWith,
Expand Down Expand Up @@ -63,52 +67,52 @@ void ShareeModel::fetch(const QString &search, const ShareeSet &blacklist)
_search = search;
_shareeBlacklist = blacklist;
OcsShareeJob *job = new OcsShareeJob(_account);
connect(job, SIGNAL(shareeJobFinished(QVariantMap)), SLOT(shareesFetched(QVariantMap)));
connect(job, SIGNAL(shareeJobFinished(QJsonDocument)), SLOT(shareesFetched(QJsonDocument)));
connect(job, SIGNAL(ocsError(int,QString)), SIGNAL(displayErrorMessage(int,QString)));
job->getSharees(_search, _type, 1, 50);
}

void ShareeModel::shareesFetched(const QVariantMap &reply)
void ShareeModel::shareesFetched(const QJsonDocument &reply)
{
auto data = reply.value("ocs").toMap().value("data").toMap();
auto data = reply.object().value("ocs").toObject().value("data").toObject();

QVector<QSharedPointer<Sharee>> newSharees;

/*
* Todo properly loop all of this
*/
auto exact = data.value("exact").toMap();
auto exact = data.value("exact").toObject();
{
auto users = exact.value("users").toList();
auto users = exact.value("users").toArray();
foreach(auto user, users) {
newSharees.append(parseSharee(user.toMap()));
newSharees.append(parseSharee(user.toObject()));
}
auto groups = exact.value("groups").toList();
auto groups = exact.value("groups").toArray();
foreach(auto group, groups) {
newSharees.append(parseSharee(group.toMap()));
newSharees.append(parseSharee(group.toObject()));
}
auto remotes = exact.value("remotes").toList();
auto remotes = exact.value("remotes").toArray();
foreach(auto remote, remotes) {
newSharees.append(parseSharee(remote.toMap()));
newSharees.append(parseSharee(remote.toObject()));
}
}

{
auto users = data.value("users").toList();
auto users = data.value("users").toArray();
foreach(auto user, users) {
newSharees.append(parseSharee(user.toMap()));
newSharees.append(parseSharee(user.toObject()));
}
}
{
auto groups = data.value("groups").toList();
auto groups = data.value("groups").toArray();
foreach(auto group, groups) {
newSharees.append(parseSharee(group.toMap()));
newSharees.append(parseSharee(group.toObject()));
}
}
{
auto remotes = data.value("remotes").toList();
auto remotes = data.value("remotes").toArray();
foreach(auto remote, remotes) {
newSharees.append(parseSharee(remote.toMap()));
newSharees.append(parseSharee(remote.toObject()));
}
}

Expand All @@ -133,11 +137,11 @@ void ShareeModel::shareesFetched(const QVariantMap &reply)
shareesReady();
}

QSharedPointer<Sharee> ShareeModel::parseSharee(const QVariantMap &data)
QSharedPointer<Sharee> ShareeModel::parseSharee(const QJsonObject &data)
{
const QString displayName = data.value("label").toString();
const QString shareWith = data.value("value").toMap().value("shareWith").toString();
Sharee::Type type = (Sharee::Type)data.value("value").toMap().value("shareType").toInt();
const QString shareWith = data.value("value").toObject().value("shareWith").toString();
Sharee::Type type = (Sharee::Type)data.value("value").toObject().value("shareType").toInt();

return QSharedPointer<Sharee>(new Sharee(shareWith, displayName, type));
}
Expand Down
7 changes: 5 additions & 2 deletions src/gui/sharee.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@

#include "accountfwd.h"

class QJsonDocument;
class QJsonObject;

namespace OCC {

class Sharee {
Expand Down Expand Up @@ -72,10 +75,10 @@ class ShareeModel : public QAbstractListModel {
void displayErrorMessage(int code, const QString &);

private slots:
void shareesFetched(const QVariantMap &reply);
void shareesFetched(const QJsonDocument &reply);

private:
QSharedPointer<Sharee> parseSharee(const QVariantMap &data);
QSharedPointer<Sharee> parseSharee(const QJsonObject &data);
void setNewSharees(const QVector<QSharedPointer<Sharee>> &newSharees);

AccountPtr _account;
Expand Down
1 change: 0 additions & 1 deletion src/gui/sharelinkwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include "sharepermissions.h"
#include "QProgressIndicator.h"
#include <QDialog>
#include <QVariantMap>
#include <QSharedPointer>
#include <QList>

Expand Down

0 comments on commit c5b6ec2

Please sign in to comment.