Add room event types

This commit is contained in:
nxshock 2019-07-20 22:05:57 +05:00
parent 25bc8f82fd
commit c084dce5ec
2 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,38 @@
package events
import (
"encoding/json"
)
// Type is type of event
type Type string
const (
// https://matrix.org/docs/spec/client_server/latest#m-room-aliases
RoomAliases Type = "m.room.aliases"
// https://matrix.org/docs/spec/client_server/latest#m-room-canonical-alias
RoomCanonicalAlias Type = "m.room.canonical_alias"
// https://matrix.org/docs/spec/client_server/latest#m-room-create
RoomCreate Type = "m.room.create"
// https://matrix.org/docs/spec/client_server/latest#m-room-join-rules
RoomJoinRules Type = "m.room.join_rules"
// https://matrix.org/docs/spec/client_server/latest#m-room-member
RoomMember Type = "m.room.member"
// https://matrix.org/docs/spec/client_server/latest#m-room-power-levels
RoomPowerLevels Type = "m.room.power_levels"
// https://matrix.org/docs/spec/client_server/latest#m-room-redaction
RoomRedaction Type = "m.room.redaction"
)
// Event is the basic set of fields all events must have
// https://matrix.org/docs/spec/client_server/latest#event-fields
type Event struct {
Content json.RawMessage `json:"content"` // Required. The fields in this object will vary depending on the type of event. When interacting with the REST API, this is the HTTP body.
Type Type `json:"type"` // Required. The type of event. This SHOULD be namespaced similar to Java package naming conventions e.g. 'com.example.subdomain.event.type'
}

View File

@ -0,0 +1,24 @@
package rooms
import (
"encoding/json"
"github.com/nxshock/signaller/internal/models/events"
)
// https://matrix.org/docs/spec/client_server/latest#room-event-fields
type Event struct {
Content json.RawMessage `json:"content"` // Required. The fields in this object will vary depending on the type of event. When interacting with the REST API, this is the HTTP body.
Type string `json:"type"` // Required. The type of event. This SHOULD be namespaced similar to Java package naming conventions e.g. 'com.example.subdomain.event.type'
EventID string `json:"event_id"` // Required. The globally unique event identifier.
Sender string `json:"sender"` // Required. Contains the fully-qualified ID of the user who sent this event.
OriginServerTS int `json:"origin_server_ts"` // Required. Timestamp in milliseconds on originating homeserver when this event was sent.
Unsigned UnsignedData `json:"unsigned,omitempty"` // Contains optional extra information about the event.
RoomID string `json:"room_id"` // Required. The ID of the room associated with this event. Will not be present on events that arrive through /sync, despite being required everywhere else.
}
type UnsignedData struct {
Age int `json:"age"` // The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is.
RedactedBecause events.Event `json:"redacted_because,omitempty"` // Optional. The event that redacted this event, if any.
TransactionID string `json:"transaction_id"` // The client-supplied transaction ID, if the client being given the event is the same one which sent it.
}