aboutsummaryrefslogtreecommitdiff
path: root/gtad
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-08-24 09:41:51 +0200
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-08-24 09:41:51 +0200
commit82f4efb0227e7e22e831733fae3952818b063ac2 (patch)
tree3b154a16f9d355996a59c611230d0e010edab57f /gtad
parent16d4f4e48304543a0ab59b235edba07f5f2c2204 (diff)
parent6308bff3336ca7680eee54d9bd125f780fa9f033 (diff)
downloadlibquotient-82f4efb0227e7e22e831733fae3952818b063ac2.tar.gz
libquotient-82f4efb0227e7e22e831733fae3952818b063ac2.zip
Merge branch 'dev' into device-verification
# Conflicts: # autotests/testfilecrypto.cpp # lib/connection.cpp # lib/connection.h # lib/database.cpp # lib/database.h # lib/e2ee/qolmoutboundsession.cpp # lib/e2ee/qolmoutboundsession.h # lib/eventitem.h # lib/events/encryptedevent.cpp # lib/events/encryptedevent.h # lib/events/encryptedfile.cpp # lib/events/encryptedfile.h # lib/events/keyverificationevent.cpp # lib/events/keyverificationevent.h # lib/events/roomkeyevent.h # lib/room.cpp # lib/room.h
Diffstat (limited to 'gtad')
m---------gtad/gtad0
-rw-r--r--gtad/gtad.yaml52
-rw-r--r--gtad/operation.cpp.mustache14
3 files changed, 40 insertions, 26 deletions
diff --git a/gtad/gtad b/gtad/gtad
new file mode 160000
+Subproject 9ea32fb74767a62a3a0d27b3b181e8c18fb0c69
diff --git a/gtad/gtad.yaml b/gtad/gtad.yaml
index 03c23886..0bec3b7a 100644
--- a/gtad/gtad.yaml
+++ b/gtad/gtad.yaml
@@ -29,6 +29,8 @@ analyzer:
login>/user: ""
login>/medium: ""
login>/address: ""
+ login</home_server: ""
+ register</home_server: ""
# Structure inside `types`:
# - swaggerType: <targetTypeSpec>
@@ -85,11 +87,11 @@ analyzer:
imports: '"events/eventloader.h"'
+on:
- /state_event.yaml$/: StateEventPtr
- - /room_event.yaml$/: RoomEventPtr
- - /event.yaml$/: EventPtr
- - /m\.room\.member/: void # Skip resolving; see EventsArray<> below
+ - /(room|client)_event.yaml$/: RoomEventPtr
+ - /event(_without_room_id)?.yaml$/: EventPtr
- +set:
- # This renderer actually applies to all $ref things
+ # This renderer applies to everything actually $ref'ed
+ # (not substituted)
_importRenderer: '"{{#segments}}{{_}}{{#_join}}/{{/_join}}{{/segments}}.h"'
+on:
- '/^(\./)?definitions/request_email_validation.yaml$/':
@@ -97,38 +99,53 @@ analyzer:
- '/^(\./)?definitions/request_msisdn_validation.yaml$/':
title: MsisdnValidationData
- /_filter.yaml$/: # Event/RoomEventFilters do NOT need Omittable<>
+
+ # Despite being used in two calls, it's more practical to have those
+ # fields available as getters right from the respective job classes
- /public_rooms_response.yaml$/: { _inline: true }
+
+ # list_public_rooms.yaml (via public_rooms_response.yaml) and
+ # space_hierarchy.yaml use public_rooms_chunk.yaml as a common base
+ # structure, adding (space_hiearchy) or overriding
+ # (public_rooms_response) fields for their purposes. The spec text
+ # confusingly ends up with having two different structures named
+ # "PublicRoomsChunk". To make sure the types are distinct in
+ # libQuotient, this common base is inlined into the actually used
+ # data structures (that have distinct names) defined
+ # in space_hierarchy.h and public_rooms_response.h, respectively
+ - /public_rooms_chunk.yaml$/: { _inline: true }
- //: *UseOmittable # Also apply "avoidCopy" to all other ref'ed types
- schema:
- getTurnServer<: *QJsonObject # It's used as an opaque JSON object
- - PublicRoomResponse: { _inline: true }
# - defineFilter>: &Filter # Force folding into a structure
# type: Filter
# imports: '"csapi/definitions/sync_filter.h"'
# - getFilter<: *Filter
+ - StrippedChildStateEvent: void # only used in an array, see below
- RoomFilter: # A structure inside Filter, same story as with *_filter.yaml
+ - OneTimeKeys:
+ type: OneTimeKeys
+ imports: '"e2ee/e2ee.h"'
- //: *UseOmittable
- array:
- string: QStringList
- +set: { moveOnly: }
+on:
- - /^Notification|Result$/:
- type: "std::vector<{{1}}>"
+ - /^Notification|Result|ChildRoomsChunk$/: "std::vector<{{1}}>"
+ - StrippedChildStateEvent:
+ type: StateEvents
imports: '"events/eventloader.h"'
- - /m\.room\.member/: # Only used in an array (see also above)
- type: "EventsArray<RoomMemberEvent>"
- imports: '"events/roommemberevent.h"'
- - /state_event.yaml$/: StateEvents
- - /room_event.yaml$/: RoomEvents
- - /event.yaml$/: Events
+ - /state_event.yaml$/: StateEvents # 'imports' already set under $ref
+ - /(room|client)_event.yaml$/: RoomEvents # ditto
+ - /event(_without_room_id)?.yaml$/: Events # ditto
- //: "QVector<{{1}}>"
- map: # `additionalProperties` in OpenAPI
- RoomState:
type: "UnorderedMap<QString, {{1}}>"
moveOnly:
- /.+/: "QHash<QString, {{1}}>"
- - //: QVariantHash
- - variant: # A sequence `type` (multitype) in OpenAPI
+ - //: QVariantHash # QJsonObject?..
+ - variant: # A sequence `type` or a 'oneOf' group in OpenAPI
- /^string,null|null,string$/: *QString
- //: QVariant
@@ -164,11 +181,8 @@ mustache:
qualifiedMaybeOmittableType:
"{{>openOmittable}}{{dataType.qualifiedName}}{{>closeOmittable}}"
- ref: "{{#avoidCopy}}&{{/avoidCopy}}{{#moveOnly}}&&{{/moveOnly}}"
maybeCrefType:
- "{{#avoidCopy}}const {{/avoidCopy}}{{>maybeOmittableType}}{{>ref}}"
- qualifiedMaybeCrefType:
- "{{#avoidCopy}}const {{/avoidCopy}}{{>qualifiedMaybeOmittableType}}{{>ref}}"
+ "{{#avoidCopy}}const {{/avoidCopy}}{{>maybeOmittableType}}{{#avoidCopy}}&{{/avoidCopy}}"
maybeCrefJsonObject:
"{{^propertyMap}}const QJsonObject&{{/propertyMap}}\
diff --git a/gtad/operation.cpp.mustache b/gtad/operation.cpp.mustache
index 3d26ec73..4b75434c 100644
--- a/gtad/operation.cpp.mustache
+++ b/gtad/operation.cpp.mustache
@@ -34,20 +34,20 @@ QUrl {{camelCaseOperationId}}Job::makeRequestUrl(QUrl baseUrl{{#allParams?}},
{ {{#headerParams}}
setRequestHeader("{{baseName}}", {{paramName}}.toLatin1());
{{/headerParams}}{{#inlineBody}}{{^propertyMap}}{{^bodyParams?}}
- setRequestData(RequestData({{#consumesNonJson?}}{{nameCamelCase}}{{/consumesNonJson?
- }}{{^consumesNonJson?}}toJson({{nameCamelCase}}){{/consumesNonJson?}}));
+ setRequestData({ {{#consumesNonJson?}}{{nameCamelCase}}{{/consumesNonJson?
+ }}{{^consumesNonJson?}}toJson({{nameCamelCase}}){{/consumesNonJson?}} });
{{/bodyParams?}}{{/propertyMap}}{{/inlineBody
}}{{^consumesNonJson?}}{{#bodyParams?}}
- QJsonObject _data;
+ QJsonObject _dataJson;
{{#propertyMap}}
- fillJson(_data, {{nameCamelCase}});
+ fillJson(_dataJson, {{nameCamelCase}});
{{/propertyMap}}{{#inlineBody}}
- fillJson<{{>maybeOmittableType}}>(_data, {{paramName}});
+ fillJson<{{>maybeOmittableType}}>(_dataJson, {{paramName}});
{{/inlineBody}}{{#bodyParams}}
- addParam<{{^required?}}IfNotEmpty{{/required?}}>(_data,
+ addParam<{{^required?}}IfNotEmpty{{/required?}}>(_dataJson,
QStringLiteral("{{baseName}}"), {{paramName}});
{{/bodyParams}}
- setRequestData(std::move(_data));
+ setRequestData({ _dataJson });
{{/bodyParams?}}{{/consumesNonJson?}}{{#producesNonJson?}}
setExpectedContentTypes({ {{#produces}}"{{_}}"{{>cjoin}}{{/produces}} });
{{/producesNonJson?}}{{^producesNonJson?