Merge pull request #2067 from matrix-org/travis/1.0/stripped-state

Clarify exactly what StrippedState is
This commit is contained in:
Travis Ralston 2019-06-07 07:12:17 -06:00 committed by GitHub
commit 70da564e2b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 85 additions and 191 deletions

View file

@ -212,30 +212,7 @@ paths:
events: events:
description: The StrippedState events that form the invite state. description: The StrippedState events that form the invite state.
items: items:
description: |- $ref: "definitions/event-schemas/schema/stripped_state.yaml"
A stripped down state event, with only the ``type``, ``state_key``,
``sender``, and ``content`` keys.
properties:
content:
description: The ``content`` for the event.
title: EventContent
type: object
state_key:
description: The ``state_key`` for the event.
type: string
type:
description: The ``type`` for the event.
type: string
sender:
description: The ``sender`` for the event.
type: string
required:
- type
- state_key
- content
- sender
title: StrippedState
type: object
type: array type: array
leave: leave:
title: Left rooms title: Left rooms

View file

@ -82,35 +82,9 @@ paths:
identify the room. The recommended events to include are the join rules, identify the room. The recommended events to include are the join rules,
canonical alias, avatar, and name of the room. canonical alias, avatar, and name of the room.
items: items:
type: object $ref: "../../event-schemas/schema/stripped_state.yaml"
title: Invite Room State Event example:
properties: $ref: "../../event-schemas/examples/invite_room_state.json"
type:
type: string
description: The type of event.
example: "m.room.join_rules"
state_key:
type: string
description: The state key for the event. May be an empty string.
example: ""
content:
type: object
description: The content for the event.
sender:
type: string
description: The sender of the event.
example: "@someone:matrix.org"
required: ['type', 'state_key', 'content', 'sender']
example: [
{
"type": "m.room.join_rules",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
}
]
example: { example: {
"$ref": "examples/minimal_pdu.json", "$ref": "examples/minimal_pdu.json",
"type": "m.room.member", "type": "m.room.member",
@ -118,26 +92,6 @@ paths:
"origin": "example.org", "origin": "example.org",
"origin_server_ts": 1549041175876, "origin_server_ts": 1549041175876,
"sender": "@someone:example.org", "sender": "@someone:example.org",
"unsigned": {
"invite_room_state": [
{
"type": "m.room.join_rules",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
},
{
"type": "m.room.name",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"name": "Cool New Room"
}
}
]
},
"content": { "content": {
"membership": "invite" "membership": "invite"
}, },
@ -180,24 +134,9 @@ paths:
"origin_server_ts": 1549041175876, "origin_server_ts": 1549041175876,
"sender": "@someone:example.org", "sender": "@someone:example.org",
"unsigned": { "unsigned": {
"invite_room_state": [ "invite_room_state": {
{ "$ref": "../../../event-schemas/examples/invite_room_state.json"
"type": "m.room.join_rules", }
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
},
{
"type": "m.room.name",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"name": "Cool New Room"
}
}
]
}, },
"content": { "content": {
"membership": "invite" "membership": "invite"

View file

@ -83,35 +83,9 @@ paths:
identify the room. The recommended events to include are the join rules, identify the room. The recommended events to include are the join rules,
canonical alias, avatar, and name of the room. canonical alias, avatar, and name of the room.
items: items:
type: object $ref: "../../event-schemas/schema/stripped_state.yaml"
title: Invite Room State Event example:
properties: $ref: "../../event-schemas/examples/invite_room_state.json"
type:
type: string
description: The type of event.
example: "m.room.join_rules"
state_key:
type: string
description: The state key for the event. May be an empty string.
example: ""
content:
type: object
description: The content for the event.
sender:
type: string
description: The sender of the event.
example: "@someone:matrix.org"
required: ['type', 'state_key', 'content', 'sender']
example: [
{
"type": "m.room.join_rules",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
}
]
required: ['room_version', 'event'] required: ['room_version', 'event']
example: { example: {
"room_version": "2", "room_version": "2",
@ -130,25 +104,7 @@ paths:
"ed25519:key_version": "SomeSignatureHere" "ed25519:key_version": "SomeSignatureHere"
}, },
} }
}, }
"invite_room_state": [
{
"type": "m.room.join_rules",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
},
{
"type": "m.room.name",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"name": "Cool New Room"
}
}
]
} }
responses: responses:
200: 200:
@ -174,24 +130,9 @@ paths:
"origin_server_ts": 1549041175876, "origin_server_ts": 1549041175876,
"sender": "@someone:example.org", "sender": "@someone:example.org",
"unsigned": { "unsigned": {
"invite_room_state": [ "invite_room_state": {
{ "$ref": "../../../event-schemas/examples/invite_room_state.json"
"type": "m.room.join_rules", }
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"join_rule": "public"
}
},
{
"type": "m.room.name",
"sender": "@someone:matrix.org",
"state_key": "",
"content": {
"name": "Cool New Room"
}
}
]
}, },
"content": { "content": {
"membership": "invite" "membership": "invite"

View file

@ -0,0 +1 @@
Clarify exactly what invite_room_state consists of.

View file

@ -0,0 +1 @@
Clarify exactly what invite_room_state consists of.

View file

@ -106,6 +106,9 @@ def check_example_dir(exampledir, schemadir):
if filename.startswith("."): if filename.startswith("."):
# Skip over any vim .swp files. # Skip over any vim .swp files.
continue continue
if filename.endswith(".json"):
# Skip over any explicit examples (partial event definitions)
continue
cwd = os.path.basename(os.path.dirname(os.path.join(root, filename))) cwd = os.path.basename(os.path.dirname(os.path.join(root, filename)))
if cwd == "core": if cwd == "core":
# Skip checking the underlying definitions # Skip checking the underlying definitions

View file

@ -0,0 +1,18 @@
[
{
"type": "m.room.name",
"sender": "@bob:example.org",
"state_key": "",
"content": {
"name": "Example Room"
}
},
{
"type": "m.room.join_rules",
"sender": "@bob:example.org",
"state_key": "",
"content": {
"join_rule": "invite"
}
}
]

View file

@ -7,21 +7,8 @@
}, },
"unsigned": { "unsigned": {
"age": 1234, "age": 1234,
"invite_room_state": [ "invite_room_state": {
{ "$ref": "invite_room_state.json"
"type": "m.room.name", }
"state_key": "",
"content": {
"name": "Forest of Magic"
}
},
{
"type": "m.room.join_rules",
"state_key": "",
"content": {
"join_rule": "invite"
}
}
]
} }
} }

View file

@ -104,24 +104,7 @@ properties:
invite_room_state: invite_room_state:
description: 'A subset of the state of the room at the time of the invite, if ``membership`` is ``invite``. Note that this state is informational, and SHOULD NOT be trusted; once the client has joined the room, it SHOULD fetch the live state from the server and discard the invite_room_state. Also, clients must not rely on any particular state being present here; they SHOULD behave properly (with possibly a degraded but not a broken experience) in the absence of any particular events here. If they are set on the room, at least the state for ``m.room.avatar``, ``m.room.canonical_alias``, ``m.room.join_rules``, and ``m.room.name`` SHOULD be included.' description: 'A subset of the state of the room at the time of the invite, if ``membership`` is ``invite``. Note that this state is informational, and SHOULD NOT be trusted; once the client has joined the room, it SHOULD fetch the live state from the server and discard the invite_room_state. Also, clients must not rely on any particular state being present here; they SHOULD behave properly (with possibly a degraded but not a broken experience) in the absence of any particular events here. If they are set on the room, at least the state for ``m.room.avatar``, ``m.room.canonical_alias``, ``m.room.join_rules``, and ``m.room.name`` SHOULD be included.'
items: items:
description: 'A stripped down state event, with only the ``type``, ``state_key`` and ``content`` keys.' $ref: "stripped_state.yaml"
properties:
content:
description: The ``content`` for the event.
title: EventContent
type: object
state_key:
description: The ``state_key`` for the event.
type: string
type:
description: The ``type`` for the event.
type: string
required:
- type
- state_key
- content
title: StrippedState
type: object
type: array type: array
required: required:
- membership - membership

View file

@ -0,0 +1,44 @@
# Copyright 2019 The Matrix.org Foundation C.I.C.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Note: this, and the example, are in the `event-schemas` directory because
# the CS API uses a symlink. In order for the `m.room.member` event to
# reference this, we'd need to use relative pathing. The symlink makes this
# difficult because the schema would be at two different locations, with
# different relative pathing.
title: StrippedState
type: object
description: |-
A stripped down state event, with only the ``type``, ``state_key``,
``sender``, and ``content`` keys.
properties:
content:
description: The ``content`` for the event.
title: EventContent
type: object
state_key:
description: The ``state_key`` for the event.
type: string
type:
description: The ``type`` for the event.
type: string
sender:
description: The ``sender`` for the event.
type: string
required:
- type
- state_key
- content
- sender