mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 14:33:10 -06:00
Use gomatrixserverlib.ClientEvent
This commit is contained in:
parent
15ee4a374c
commit
97d7a0bc34
|
|
@ -1,38 +0,0 @@
|
|||
package events
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
)
|
||||
|
||||
// ClientEvent is an event which is fit for consumption by clients, in accordance with the specification.
|
||||
type ClientEvent struct {
|
||||
Content json.RawMessage `json:"content"`
|
||||
Sender string `json:"sender"`
|
||||
Type string `json:"type"`
|
||||
StateKey *string `json:"state_key,omitempty"`
|
||||
Unsigned json.RawMessage `json:"unsigned,omitempty"`
|
||||
OriginServerTS int64 `json:"origin_server_ts"`
|
||||
EventID string `json:"event_id"`
|
||||
}
|
||||
|
||||
// ToClientEvents converts server events to client events
|
||||
func ToClientEvents(serverEvs []gomatrixserverlib.Event) []ClientEvent {
|
||||
evs := make([]ClientEvent, len(serverEvs))
|
||||
for i, se := range serverEvs {
|
||||
evs[i] = ToClientEvent(se)
|
||||
}
|
||||
return evs
|
||||
}
|
||||
|
||||
// ToClientEvent converts a single server event to a client event
|
||||
func ToClientEvent(se gomatrixserverlib.Event) ClientEvent {
|
||||
return ClientEvent{
|
||||
Content: json.RawMessage(se.Content()),
|
||||
Sender: se.Sender(),
|
||||
Type: se.Type(),
|
||||
StateKey: se.StateKey(),
|
||||
// TODO: No unsigned / origin_server_ts fields?
|
||||
EventID: se.EventID(),
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,6 @@ import (
|
|||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/matrix-org/dendrite/clientapi/auth"
|
||||
"github.com/matrix-org/dendrite/clientapi/events"
|
||||
"github.com/matrix-org/dendrite/clientapi/httputil"
|
||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/dendrite/syncserver/storage"
|
||||
|
|
@ -149,9 +148,9 @@ func (rp *RequestPool) currentSyncForUser(req syncRequest) (*types.Response, err
|
|||
res.NextBatch = pos.String()
|
||||
for roomID, d := range data {
|
||||
jr := types.NewJoinResponse()
|
||||
jr.Timeline.Events = events.ToClientEvents(d.RecentEvents)
|
||||
jr.Timeline.Events = gomatrixserverlib.ToClientEvents(d.RecentEvents, gomatrixserverlib.FormatSync)
|
||||
jr.Timeline.Limited = true
|
||||
jr.State.Events = events.ToClientEvents(d.State)
|
||||
jr.State.Events = gomatrixserverlib.ToClientEvents(d.State, gomatrixserverlib.FormatSync)
|
||||
res.Rooms.Join[roomID] = *jr
|
||||
}
|
||||
return res, nil
|
||||
|
|
@ -180,7 +179,7 @@ func (rp *RequestPool) currentSyncForUser(req syncRequest) (*types.Response, err
|
|||
// for now, dump everything as join timeline events
|
||||
for _, ev := range evs {
|
||||
roomData := res.Rooms.Join[ev.RoomID()]
|
||||
roomData.Timeline.Events = append(roomData.Timeline.Events, events.ToClientEvent(ev))
|
||||
roomData.Timeline.Events = append(roomData.Timeline.Events, gomatrixserverlib.ToClientEvent(ev, gomatrixserverlib.FormatSync))
|
||||
res.Rooms.Join[ev.RoomID()] = roomData
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
package types
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/matrix-org/dendrite/clientapi/events"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// StreamPosition represents the offset in the sync stream a client is at.
|
||||
|
|
@ -25,10 +23,10 @@ type RoomData struct {
|
|||
type Response struct {
|
||||
NextBatch string `json:"next_batch"`
|
||||
AccountData struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"account_data"`
|
||||
Presence struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"presence"`
|
||||
Rooms struct {
|
||||
Join map[string]JoinResponse `json:"join"`
|
||||
|
|
@ -50,8 +48,8 @@ func NewResponse() *Response {
|
|||
// TODO: We really shouldn't have to do all this to coerce encoding/json to Do The Right Thing. We should
|
||||
// really be using our own Marshal/Unmarshal implementations otherwise this may prove to be a CPU bottleneck.
|
||||
// This also applies to NewJoinResponse, NewInviteResponse and NewLeaveResponse.
|
||||
res.AccountData.Events = make([]events.ClientEvent, 0)
|
||||
res.Presence.Events = make([]events.ClientEvent, 0)
|
||||
res.AccountData.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
res.Presence.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
|
||||
return &res
|
||||
}
|
||||
|
|
@ -59,61 +57,61 @@ func NewResponse() *Response {
|
|||
// JoinResponse represents a /sync response for a room which is under the 'join' key.
|
||||
type JoinResponse struct {
|
||||
State struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"state"`
|
||||
Timeline struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Limited bool `json:"limited"`
|
||||
PrevBatch string `json:"prev_batch"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
Limited bool `json:"limited"`
|
||||
PrevBatch string `json:"prev_batch"`
|
||||
} `json:"timeline"`
|
||||
Ephemeral struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"ephemeral"`
|
||||
AccountData struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"account_data"`
|
||||
}
|
||||
|
||||
// NewJoinResponse creates an empty response with initialised arrays.
|
||||
func NewJoinResponse() *JoinResponse {
|
||||
res := JoinResponse{}
|
||||
res.State.Events = make([]events.ClientEvent, 0)
|
||||
res.Timeline.Events = make([]events.ClientEvent, 0)
|
||||
res.Ephemeral.Events = make([]events.ClientEvent, 0)
|
||||
res.AccountData.Events = make([]events.ClientEvent, 0)
|
||||
res.State.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
res.Timeline.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
res.Ephemeral.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
res.AccountData.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
return &res
|
||||
}
|
||||
|
||||
// InviteResponse represents a /sync response for a room which is under the 'invite' key.
|
||||
type InviteResponse struct {
|
||||
InviteState struct {
|
||||
Events []events.ClientEvent
|
||||
Events []gomatrixserverlib.ClientEvent
|
||||
} `json:"invite_state"`
|
||||
}
|
||||
|
||||
// NewInviteResponse creates an empty response with initialised arrays.
|
||||
func NewInviteResponse() *InviteResponse {
|
||||
res := InviteResponse{}
|
||||
res.InviteState.Events = make([]events.ClientEvent, 0)
|
||||
res.InviteState.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
return &res
|
||||
}
|
||||
|
||||
// LeaveResponse represents a /sync response for a room which is under the 'leave' key.
|
||||
type LeaveResponse struct {
|
||||
State struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
} `json:"state"`
|
||||
Timeline struct {
|
||||
Events []events.ClientEvent `json:"events"`
|
||||
Limited bool `json:"limited"`
|
||||
PrevBatch string `json:"prev_batch"`
|
||||
Events []gomatrixserverlib.ClientEvent `json:"events"`
|
||||
Limited bool `json:"limited"`
|
||||
PrevBatch string `json:"prev_batch"`
|
||||
} `json:"timeline"`
|
||||
}
|
||||
|
||||
// NewLeaveResponse creates an empty response with initialised arrays.
|
||||
func NewLeaveResponse() *LeaveResponse {
|
||||
res := LeaveResponse{}
|
||||
res.State.Events = make([]events.ClientEvent, 0)
|
||||
res.Timeline.Events = make([]events.ClientEvent, 0)
|
||||
res.State.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
res.Timeline.Events = make([]gomatrixserverlib.ClientEvent, 0)
|
||||
return &res
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue