Update producers to roomserver inputs

This commit is contained in:
Neil Alexander 2020-03-16 18:24:08 +00:00
parent 045a1a5c2e
commit 79394650fe
6 changed files with 28 additions and 14 deletions

View file

@ -40,9 +40,11 @@ func (c *RoomserverProducer) SendEvents(
) (string, error) {
ires := make([]api.InputRoomEvent, len(events))
for i, event := range events {
roomVersion := gomatrixserverlib.RoomVersionV1
ires[i] = api.InputRoomEvent{
Kind: api.KindNew,
Event: event,
Event: event.Headered(roomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(sendAsServer),
TransactionID: txnID,
@ -61,11 +63,14 @@ func (c *RoomserverProducer) SendEventWithState(
return err
}
// TODO: Room version here
roomVersion := gomatrixserverlib.RoomVersionV1
ires := make([]api.InputRoomEvent, len(outliers)+1)
for i, outlier := range outliers {
ires[i] = api.InputRoomEvent{
Kind: api.KindOutlier,
Event: outlier,
Event: outlier.Headered(roomVersion),
AuthEventIDs: outlier.AuthEventIDs(),
}
}
@ -77,7 +82,7 @@ func (c *RoomserverProducer) SendEventWithState(
ires[len(outliers)] = api.InputRoomEvent{
Kind: api.KindNew,
Event: event,
Event: event.Headered(roomVersion),
AuthEventIDs: event.AuthEventIDs(),
HasState: true,
StateEventIDs: stateEventIDs,
@ -104,8 +109,13 @@ func (c *RoomserverProducer) SendInputRoomEvents(
func (c *RoomserverProducer) SendInvite(
ctx context.Context, inviteEvent gomatrixserverlib.Event,
) error {
// TODO: Room version here
roomVersion := gomatrixserverlib.RoomVersionV1
request := api.InputRoomEventsRequest{
InputInviteEvents: []api.InputInviteEvent{{Event: inviteEvent}},
InputInviteEvents: []api.InputInviteEvent{{
Event: inviteEvent.Headered(roomVersion),
}},
}
var response api.InputRoomEventsResponse
return c.InputAPI.InputRoomEvents(ctx, &request, &response)

View file

@ -180,7 +180,8 @@ func createRoom(
}
r.CreationContent["creator"] = userID
r.CreationContent["room_version"] = "1" // TODO: We set this to 1 before we support Room versioning
// TODO: Room version here
r.CreationContent["room_version"] = gomatrixserverlib.RoomVersionV1
// TODO: visibility/presets/raw initial state
// TODO: Create room alias association

View file

@ -125,7 +125,7 @@ func writeEvent(event gomatrixserverlib.Event) {
if *format == "InputRoomEvent" {
var ire api.InputRoomEvent
ire.Kind = api.KindNew
ire.Event = event
ire.Event = event.Headered(gomatrixserverlib.RoomVersionV1)
authEventIDs := []string{}
for _, ref := range b.AuthEvents {
authEventIDs = append(authEventIDs, ref.EventID)

View file

@ -250,10 +250,13 @@ func (r *RoomserverAliasAPI) sendUpdatedAliasesEvent(
return err
}
// TODO: Room version here
roomVersion := gomatrixserverlib.RoomVersionV1
// Create the request
ire := roomserverAPI.InputRoomEvent{
Kind: roomserverAPI.KindNew,
Event: event,
Event: event.Headered(roomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: serverName,
}

View file

@ -51,7 +51,7 @@ type InputRoomEvent struct {
// This controls how the event is processed.
Kind int `json:"kind"`
// The event JSON for the event to add.
Event gomatrixserverlib.Event `json:"event"`
Event gomatrixserverlib.HeaderedEvent `json:"event"`
// List of state event IDs that authenticate this event.
// These are likely derived from the "auth_events" JSON key of the event.
// But can be different because the "auth_events" key can be incomplete or wrong.
@ -85,7 +85,7 @@ type TransactionID struct {
// the usual context a matrix room event would have. We usually do not have
// access to the events needed to check the event auth rules for the invite.
type InputInviteEvent struct {
Event gomatrixserverlib.Event `json:"event"`
Event gomatrixserverlib.HeaderedEvent `json:"event"`
}
// InputRoomEventsRequest is a request to InputRoomEvents

View file

@ -95,7 +95,7 @@ func processRoomEvent(
event := input.Event
// Check that the event passes authentication checks and work out the numeric IDs for the auth events.
authEventNIDs, err := checkAuthEvents(ctx, db, event, input.AuthEventIDs)
authEventNIDs, err := checkAuthEvents(ctx, db, event.Event, input.AuthEventIDs)
if err != nil {
return
}
@ -112,7 +112,7 @@ func processRoomEvent(
}
// Store the event
roomNID, stateAtEvent, err := db.StoreEvent(ctx, event, input.TransactionID, authEventNIDs)
roomNID, stateAtEvent, err := db.StoreEvent(ctx, event.Event, input.TransactionID, authEventNIDs)
if err != nil {
return
}
@ -127,7 +127,7 @@ func processRoomEvent(
if stateAtEvent.BeforeStateSnapshotNID == 0 {
// We haven't calculated a state for this event yet.
// Lets calculate one.
err = calculateAndSetState(ctx, db, input, roomNID, &stateAtEvent, event)
err = calculateAndSetState(ctx, db, input, roomNID, &stateAtEvent, event.Event)
if err != nil {
return
}
@ -140,7 +140,7 @@ func processRoomEvent(
// Update the extremities of the event graph for the room
return event.EventID(), updateLatestEvents(
ctx, db, ow, roomNID, stateAtEvent, event, input.SendAsServer, input.TransactionID,
ctx, db, ow, roomNID, stateAtEvent, event.Event, input.SendAsServer, input.TransactionID,
)
}
@ -234,7 +234,7 @@ func processInviteEvent(
return nil
}
outputUpdates, err := updateToInviteMembership(updater, &input.Event, nil)
outputUpdates, err := updateToInviteMembership(updater, &input.Event.Event, nil)
if err != nil {
return err
}