mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 13:22:46 +00:00
Use PDU not *Event in HeaderedEvent (#3073)
Requires https://github.com/matrix-org/gomatrixserverlib/pull/376 This has numerous upsides: - Less type casting to `*Event` is required. - Making Dendrite work with `PDU` interfaces means we can swap out Event impls more easily. - Tests which represent weird event shapes are easier to write. Part of a series of refactors on GMSL.
This commit is contained in:
parent
696cbb70b8
commit
f5b3144dc3
64 changed files with 296 additions and 284 deletions
|
@ -103,18 +103,18 @@ func Backfill(
|
|||
}
|
||||
|
||||
// Filter any event that's not from the requested room out.
|
||||
evs := make([]*gomatrixserverlib.Event, 0)
|
||||
evs := make([]gomatrixserverlib.PDU, 0)
|
||||
|
||||
var ev *types.HeaderedEvent
|
||||
for _, ev = range res.Events {
|
||||
if ev.RoomID() == roomID {
|
||||
evs = append(evs, ev.Event)
|
||||
evs = append(evs, ev.PDU)
|
||||
}
|
||||
}
|
||||
|
||||
eventJSONs := []json.RawMessage{}
|
||||
for _, e := range gomatrixserverlib.ReverseTopologicalOrdering(
|
||||
gomatrixserverlib.ToPDUs(evs),
|
||||
evs,
|
||||
gomatrixserverlib.TopologicalOrderByPrevEvents,
|
||||
) {
|
||||
eventJSONs = append(eventJSONs, e.JSON())
|
||||
|
|
|
@ -80,7 +80,7 @@ func allowedToSeeEvent(
|
|||
}
|
||||
|
||||
// fetchEvent fetches the event without auth checks. Returns an error if the event cannot be found.
|
||||
func fetchEvent(ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID, eventID string) (*gomatrixserverlib.Event, *util.JSONResponse) {
|
||||
func fetchEvent(ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID, eventID string) (gomatrixserverlib.PDU, *util.JSONResponse) {
|
||||
var eventsResponse api.QueryEventsByIDResponse
|
||||
err := rsAPI.QueryEventsByID(
|
||||
ctx,
|
||||
|
@ -99,5 +99,5 @@ func fetchEvent(ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID,
|
|||
}
|
||||
}
|
||||
|
||||
return eventsResponse.Events[0].Event, nil
|
||||
return eventsResponse.Events[0].PDU, nil
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ func InviteV1(
|
|||
func processInvite(
|
||||
ctx context.Context,
|
||||
isInviteV2 bool,
|
||||
event *gomatrixserverlib.Event,
|
||||
event gomatrixserverlib.PDU,
|
||||
roomVer gomatrixserverlib.RoomVersion,
|
||||
strippedState []fclient.InviteV2StrippedState,
|
||||
roomID string,
|
||||
|
@ -198,7 +198,7 @@ func processInvite(
|
|||
)
|
||||
|
||||
// Add the invite event to the roomserver.
|
||||
inviteEvent := &types.HeaderedEvent{Event: &signedEvent}
|
||||
inviteEvent := &types.HeaderedEvent{PDU: signedEvent}
|
||||
request := &api.PerformInviteRequest{
|
||||
Event: inviteEvent,
|
||||
InviteRoomState: strippedState,
|
||||
|
|
|
@ -163,13 +163,13 @@ func MakeJoin(
|
|||
}
|
||||
|
||||
// Check that the join is allowed or not
|
||||
stateEvents := make([]*gomatrixserverlib.Event, len(queryRes.StateEvents))
|
||||
stateEvents := make([]gomatrixserverlib.PDU, len(queryRes.StateEvents))
|
||||
for i := range queryRes.StateEvents {
|
||||
stateEvents[i] = queryRes.StateEvents[i].Event
|
||||
stateEvents[i] = queryRes.StateEvents[i].PDU
|
||||
}
|
||||
|
||||
provider := gomatrixserverlib.NewAuthEvents(gomatrixserverlib.ToPDUs(stateEvents))
|
||||
if err = gomatrixserverlib.Allowed(event.Event, &provider); err != nil {
|
||||
provider := gomatrixserverlib.NewAuthEvents(stateEvents)
|
||||
if err = gomatrixserverlib.Allowed(event.PDU, &provider); err != nil {
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusForbidden,
|
||||
JSON: jsonerror.Forbidden(err.Error()),
|
||||
|
@ -414,7 +414,7 @@ func SendJoin(
|
|||
InputRoomEvents: []api.InputRoomEvent{
|
||||
{
|
||||
Kind: api.KindNew,
|
||||
Event: &types.HeaderedEvent{Event: &signed},
|
||||
Event: &types.HeaderedEvent{PDU: signed},
|
||||
SendAsServer: string(cfg.Matrix.ServerName),
|
||||
TransactionID: nil,
|
||||
},
|
||||
|
|
|
@ -110,12 +110,12 @@ func MakeLeave(
|
|||
}
|
||||
|
||||
// Check that the leave is allowed or not
|
||||
stateEvents := make([]*gomatrixserverlib.Event, len(queryRes.StateEvents))
|
||||
stateEvents := make([]gomatrixserverlib.PDU, len(queryRes.StateEvents))
|
||||
for i := range queryRes.StateEvents {
|
||||
stateEvents[i] = queryRes.StateEvents[i].Event
|
||||
stateEvents[i] = queryRes.StateEvents[i].PDU
|
||||
}
|
||||
provider := gomatrixserverlib.NewAuthEvents(gomatrixserverlib.ToPDUs(stateEvents))
|
||||
if err = gomatrixserverlib.Allowed(event.Event, &provider); err != nil {
|
||||
provider := gomatrixserverlib.NewAuthEvents(stateEvents)
|
||||
if err = gomatrixserverlib.Allowed(event, &provider); err != nil {
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusForbidden,
|
||||
JSON: jsonerror.Forbidden(err.Error()),
|
||||
|
@ -313,7 +313,7 @@ func SendLeave(
|
|||
InputRoomEvents: []api.InputRoomEvent{
|
||||
{
|
||||
Kind: api.KindNew,
|
||||
Event: &types.HeaderedEvent{Event: event},
|
||||
Event: &types.HeaderedEvent{PDU: event},
|
||||
SendAsServer: string(cfg.Matrix.ServerName),
|
||||
TransactionID: nil,
|
||||
},
|
||||
|
|
|
@ -91,7 +91,7 @@ func Peek(
|
|||
StateEvents: types.NewEventJSONsFromHeaderedEvents(response.StateEvents),
|
||||
AuthEvents: types.NewEventJSONsFromHeaderedEvents(response.AuthChainEvents),
|
||||
RoomVersion: response.RoomVersion,
|
||||
LatestEvent: response.LatestEvent.Event,
|
||||
LatestEvent: response.LatestEvent.PDU,
|
||||
RenewalInterval: renewalInterval,
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ func CreateInvitesFrom3PIDInvites(
|
|||
return jsonerror.InternalServerError()
|
||||
}
|
||||
if event != nil {
|
||||
evs = append(evs, &types.HeaderedEvent{Event: event})
|
||||
evs = append(evs, &types.HeaderedEvent{PDU: event})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -210,7 +210,7 @@ func ExchangeThirdPartyInvite(
|
|||
httpReq.Context(), rsAPI,
|
||||
api.KindNew,
|
||||
[]*types.HeaderedEvent{
|
||||
{Event: inviteEvent},
|
||||
{PDU: inviteEvent},
|
||||
},
|
||||
request.Destination(),
|
||||
request.Origin(),
|
||||
|
@ -325,7 +325,7 @@ func buildMembershipEvent(
|
|||
authEvents := gomatrixserverlib.NewAuthEvents(nil)
|
||||
|
||||
for i := range queryRes.StateEvents {
|
||||
err = authEvents.AddEvent(queryRes.StateEvents[i].Event)
|
||||
err = authEvents.AddEvent(queryRes.StateEvents[i].PDU)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue