diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-09-24 19:20:10 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-09-29 21:59:39 +0900 |
commit | 4244cee8d5e0f760cccd2b45ad587670573ef03c (patch) | |
tree | 4806108543f1402247e6cce1dba987a98d6fe83b /lib/application-service/definitions | |
parent | f5c2e47fa1ab84fdaffe03c30ba973d7dea5ac05 (diff) | |
download | libquotient-4244cee8d5e0f760cccd2b45ad587670573ef03c.tar.gz libquotient-4244cee8d5e0f760cccd2b45ad587670573ef03c.zip |
Prepare for CS API 0.4.0
This commit consists of two parts: upgrading the API infrastructure and trivial but sweeping update to the generated files.
1. The API infrastructure (converters.h, *.mustache and some other non-generated files) now can deal with top-level JSON arrays and response inlining; better supports property maps; and gets some formatting fixes in generated code.
2. Generated files now use QJsonValue instead of QJsonObject as a default type
to (un)marshall Matrix API data structures, to match the change in the infrastructure above
This commit is still using the old Matrix API definitions, before CS API 0.4.0. Getting to CS API 0.4.0 will come next.
Diffstat (limited to 'lib/application-service/definitions')
-rw-r--r-- | lib/application-service/definitions/location.cpp | 21 | ||||
-rw-r--r-- | lib/application-service/definitions/location.h | 4 | ||||
-rw-r--r-- | lib/application-service/definitions/protocol.cpp | 59 | ||||
-rw-r--r-- | lib/application-service/definitions/protocol.h | 12 | ||||
-rw-r--r-- | lib/application-service/definitions/user.cpp | 21 | ||||
-rw-r--r-- | lib/application-service/definitions/user.h | 4 |
6 files changed, 58 insertions, 63 deletions
diff --git a/lib/application-service/definitions/location.cpp b/lib/application-service/definitions/location.cpp index 973bcd22..1ccff315 100644 --- a/lib/application-service/definitions/location.cpp +++ b/lib/application-service/definitions/location.cpp @@ -8,24 +8,23 @@ using namespace QMatrixClient; QJsonObject QMatrixClient::toJson(const ThirdPartyLocation& pod) { - QJsonObject _json; - addParam<IfNotEmpty>(_json, QStringLiteral("alias"), pod.alias); - addParam<IfNotEmpty>(_json, QStringLiteral("protocol"), pod.protocol); - addParam<IfNotEmpty>(_json, QStringLiteral("fields"), pod.fields); - return _json; + QJsonObject jo; + addParam<IfNotEmpty>(jo, QStringLiteral("alias"), pod.alias); + addParam<IfNotEmpty>(jo, QStringLiteral("protocol"), pod.protocol); + addParam<IfNotEmpty>(jo, QStringLiteral("fields"), pod.fields); + return jo; } -ThirdPartyLocation FromJson<ThirdPartyLocation>::operator()(const QJsonValue& jv) +ThirdPartyLocation FromJsonObject<ThirdPartyLocation>::operator()(const QJsonObject& jo) const { - const auto& _json = jv.toObject(); ThirdPartyLocation result; result.alias = - fromJson<QString>(_json.value("alias"_ls)); + fromJson<QString>(jo.value("alias"_ls)); result.protocol = - fromJson<QString>(_json.value("protocol"_ls)); + fromJson<QString>(jo.value("protocol"_ls)); result.fields = - fromJson<QJsonObject>(_json.value("fields"_ls)); - + fromJson<QJsonObject>(jo.value("fields"_ls)); + return result; } diff --git a/lib/application-service/definitions/location.h b/lib/application-service/definitions/location.h index 47d621e0..89b48a43 100644 --- a/lib/application-service/definitions/location.h +++ b/lib/application-service/definitions/location.h @@ -24,9 +24,9 @@ namespace QMatrixClient QJsonObject toJson(const ThirdPartyLocation& pod); - template <> struct FromJson<ThirdPartyLocation> + template <> struct FromJsonObject<ThirdPartyLocation> { - ThirdPartyLocation operator()(const QJsonValue& jv); + ThirdPartyLocation operator()(const QJsonObject& jo) const; }; } // namespace QMatrixClient diff --git a/lib/application-service/definitions/protocol.cpp b/lib/application-service/definitions/protocol.cpp index 5e70ff16..13e58382 100644 --- a/lib/application-service/definitions/protocol.cpp +++ b/lib/application-service/definitions/protocol.cpp @@ -8,67 +8,64 @@ using namespace QMatrixClient; QJsonObject QMatrixClient::toJson(const FieldType& pod) { - QJsonObject _json; - addParam<IfNotEmpty>(_json, QStringLiteral("regexp"), pod.regexp); - addParam<IfNotEmpty>(_json, QStringLiteral("placeholder"), pod.placeholder); - return _json; + QJsonObject jo; + addParam<IfNotEmpty>(jo, QStringLiteral("regexp"), pod.regexp); + addParam<IfNotEmpty>(jo, QStringLiteral("placeholder"), pod.placeholder); + return jo; } -FieldType FromJson<FieldType>::operator()(const QJsonValue& jv) +FieldType FromJsonObject<FieldType>::operator()(const QJsonObject& jo) const { - const auto& _json = jv.toObject(); FieldType result; result.regexp = - fromJson<QString>(_json.value("regexp"_ls)); + fromJson<QString>(jo.value("regexp"_ls)); result.placeholder = - fromJson<QString>(_json.value("placeholder"_ls)); - + fromJson<QString>(jo.value("placeholder"_ls)); + return result; } QJsonObject QMatrixClient::toJson(const FieldTypes& pod) { - QJsonObject _json; - addParam<IfNotEmpty>(_json, QStringLiteral("fieldname"), pod.fieldname); - return _json; + QJsonObject jo; + addParam<IfNotEmpty>(jo, QStringLiteral("fieldname"), pod.fieldname); + return jo; } -FieldTypes FromJson<FieldTypes>::operator()(const QJsonValue& jv) +FieldTypes FromJsonObject<FieldTypes>::operator()(const QJsonObject& jo) const { - const auto& _json = jv.toObject(); FieldTypes result; result.fieldname = - fromJson<FieldType>(_json.value("fieldname"_ls)); - + fromJson<FieldType>(jo.value("fieldname"_ls)); + return result; } QJsonObject QMatrixClient::toJson(const ThirdPartyProtocol& pod) { - QJsonObject _json; - addParam<IfNotEmpty>(_json, QStringLiteral("user_fields"), pod.userFields); - addParam<IfNotEmpty>(_json, QStringLiteral("location_fields"), pod.locationFields); - addParam<IfNotEmpty>(_json, QStringLiteral("icon"), pod.icon); - addParam<IfNotEmpty>(_json, QStringLiteral("field_types"), pod.fieldTypes); - addParam<IfNotEmpty>(_json, QStringLiteral("instances"), pod.instances); - return _json; + QJsonObject jo; + addParam<IfNotEmpty>(jo, QStringLiteral("user_fields"), pod.userFields); + addParam<IfNotEmpty>(jo, QStringLiteral("location_fields"), pod.locationFields); + addParam<IfNotEmpty>(jo, QStringLiteral("icon"), pod.icon); + addParam<IfNotEmpty>(jo, QStringLiteral("field_types"), pod.fieldTypes); + addParam<IfNotEmpty>(jo, QStringLiteral("instances"), pod.instances); + return jo; } -ThirdPartyProtocol FromJson<ThirdPartyProtocol>::operator()(const QJsonValue& jv) +ThirdPartyProtocol FromJsonObject<ThirdPartyProtocol>::operator()(const QJsonObject& jo) const { - const auto& _json = jv.toObject(); ThirdPartyProtocol result; result.userFields = - fromJson<QStringList>(_json.value("user_fields"_ls)); + fromJson<QStringList>(jo.value("user_fields"_ls)); result.locationFields = - fromJson<QStringList>(_json.value("location_fields"_ls)); + fromJson<QStringList>(jo.value("location_fields"_ls)); result.icon = - fromJson<QString>(_json.value("icon"_ls)); + fromJson<QString>(jo.value("icon"_ls)); result.fieldTypes = - fromJson<FieldTypes>(_json.value("field_types"_ls)); + fromJson<FieldTypes>(jo.value("field_types"_ls)); result.instances = - fromJson<QVector<QJsonObject>>(_json.value("instances"_ls)); - + fromJson<QVector<QJsonObject>>(jo.value("instances"_ls)); + return result; } diff --git a/lib/application-service/definitions/protocol.h b/lib/application-service/definitions/protocol.h index a25688e7..4aa400ab 100644 --- a/lib/application-service/definitions/protocol.h +++ b/lib/application-service/definitions/protocol.h @@ -25,9 +25,9 @@ namespace QMatrixClient QJsonObject toJson(const FieldType& pod); - template <> struct FromJson<FieldType> + template <> struct FromJsonObject<FieldType> { - FieldType operator()(const QJsonValue& jv); + FieldType operator()(const QJsonObject& jo) const; }; /// All location or user fields should have an entry here. @@ -39,9 +39,9 @@ namespace QMatrixClient QJsonObject toJson(const FieldTypes& pod); - template <> struct FromJson<FieldTypes> + template <> struct FromJsonObject<FieldTypes> { - FieldTypes operator()(const QJsonValue& jv); + FieldTypes operator()(const QJsonObject& jo) const; }; struct ThirdPartyProtocol @@ -62,9 +62,9 @@ namespace QMatrixClient QJsonObject toJson(const ThirdPartyProtocol& pod); - template <> struct FromJson<ThirdPartyProtocol> + template <> struct FromJsonObject<ThirdPartyProtocol> { - ThirdPartyProtocol operator()(const QJsonValue& jv); + ThirdPartyProtocol operator()(const QJsonObject& jo) const; }; } // namespace QMatrixClient diff --git a/lib/application-service/definitions/user.cpp b/lib/application-service/definitions/user.cpp index 17687cfd..dbe4c104 100644 --- a/lib/application-service/definitions/user.cpp +++ b/lib/application-service/definitions/user.cpp @@ -8,24 +8,23 @@ using namespace QMatrixClient; QJsonObject QMatrixClient::toJson(const ThirdPartyUser& pod) { - QJsonObject _json; - addParam<IfNotEmpty>(_json, QStringLiteral("userid"), pod.userid); - addParam<IfNotEmpty>(_json, QStringLiteral("protocol"), pod.protocol); - addParam<IfNotEmpty>(_json, QStringLiteral("fields"), pod.fields); - return _json; + QJsonObject jo; + addParam<IfNotEmpty>(jo, QStringLiteral("userid"), pod.userid); + addParam<IfNotEmpty>(jo, QStringLiteral("protocol"), pod.protocol); + addParam<IfNotEmpty>(jo, QStringLiteral("fields"), pod.fields); + return jo; } -ThirdPartyUser FromJson<ThirdPartyUser>::operator()(const QJsonValue& jv) +ThirdPartyUser FromJsonObject<ThirdPartyUser>::operator()(const QJsonObject& jo) const { - const auto& _json = jv.toObject(); ThirdPartyUser result; result.userid = - fromJson<QString>(_json.value("userid"_ls)); + fromJson<QString>(jo.value("userid"_ls)); result.protocol = - fromJson<QString>(_json.value("protocol"_ls)); + fromJson<QString>(jo.value("protocol"_ls)); result.fields = - fromJson<QJsonObject>(_json.value("fields"_ls)); - + fromJson<QJsonObject>(jo.value("fields"_ls)); + return result; } diff --git a/lib/application-service/definitions/user.h b/lib/application-service/definitions/user.h index 9c64a7ba..79ca7789 100644 --- a/lib/application-service/definitions/user.h +++ b/lib/application-service/definitions/user.h @@ -24,9 +24,9 @@ namespace QMatrixClient QJsonObject toJson(const ThirdPartyUser& pod); - template <> struct FromJson<ThirdPartyUser> + template <> struct FromJsonObject<ThirdPartyUser> { - ThirdPartyUser operator()(const QJsonValue& jv); + ThirdPartyUser operator()(const QJsonObject& jo) const; }; } // namespace QMatrixClient |