mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-30 04:52:46 +00:00
Implement gomatrixserverlib.HeaderedEvent in roomserver query API (#912)
* Implement gomatrixserverlib.HeaderedEvent, which should allow us to store room version headers along with the event across API boundaries and consumers/producers, and intercept unmarshalling to get the event structure right * Add federationsender to previous
This commit is contained in:
parent
452f393dd7
commit
acb505b717
21 changed files with 163 additions and 36 deletions
|
@ -84,10 +84,10 @@ func Backfill(
|
|||
// Filter any event that's not from the requested room out.
|
||||
evs := make([]gomatrixserverlib.Event, 0)
|
||||
|
||||
var ev gomatrixserverlib.Event
|
||||
var ev gomatrixserverlib.HeaderedEvent
|
||||
for _, ev = range res.Events {
|
||||
if ev.RoomID() == roomID {
|
||||
evs = append(evs, ev)
|
||||
evs = append(evs, ev.Event)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -80,5 +80,5 @@ func getEvent(
|
|||
return nil, &util.JSONResponse{Code: http.StatusNotFound, JSON: nil}
|
||||
}
|
||||
|
||||
return &eventsResponse.Events[0], nil
|
||||
return &eventsResponse.Events[0].Event, nil
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ func MakeJoin(
|
|||
// Check that the join is allowed or not
|
||||
stateEvents := make([]*gomatrixserverlib.Event, len(queryRes.StateEvents))
|
||||
for i := range queryRes.StateEvents {
|
||||
stateEvents[i] = &queryRes.StateEvents[i]
|
||||
stateEvents[i] = &queryRes.StateEvents[i].Event
|
||||
}
|
||||
provider := gomatrixserverlib.NewAuthEvents(stateEvents)
|
||||
if err = gomatrixserverlib.Allowed(*event, &provider); err != nil {
|
||||
|
|
|
@ -76,7 +76,7 @@ func MakeLeave(
|
|||
// Check that the leave is allowed or not
|
||||
stateEvents := make([]*gomatrixserverlib.Event, len(queryRes.StateEvents))
|
||||
for i := range queryRes.StateEvents {
|
||||
stateEvents[i] = &queryRes.StateEvents[i]
|
||||
stateEvents[i] = &queryRes.StateEvents[i].Event
|
||||
}
|
||||
provider := gomatrixserverlib.NewAuthEvents(stateEvents)
|
||||
if err = gomatrixserverlib.Allowed(*event, &provider); err != nil {
|
||||
|
|
|
@ -68,8 +68,8 @@ func GetMissingEvents(
|
|||
|
||||
// filterEvents returns only those events with matching roomID and having depth greater than minDepth
|
||||
func filterEvents(
|
||||
events []gomatrixserverlib.Event, minDepth int64, roomID string,
|
||||
) []gomatrixserverlib.Event {
|
||||
events []gomatrixserverlib.HeaderedEvent, minDepth int64, roomID string,
|
||||
) []gomatrixserverlib.HeaderedEvent {
|
||||
ref := events[:0]
|
||||
for _, ev := range events {
|
||||
if ev.Depth() >= minDepth && ev.RoomID() == roomID {
|
||||
|
|
|
@ -162,7 +162,11 @@ func (t *txnReq) processEvent(e gomatrixserverlib.Event) error {
|
|||
}
|
||||
|
||||
// Check that the event is allowed by the state at the event.
|
||||
if err := checkAllowedByState(e, stateResp.StateEvents); err != nil {
|
||||
var events []gomatrixserverlib.Event
|
||||
for _, headeredEvent := range stateResp.StateEvents {
|
||||
events = append(events, headeredEvent.Event)
|
||||
}
|
||||
if err := checkAllowedByState(e, events); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -129,9 +129,17 @@ func getState(
|
|||
return nil, &util.JSONResponse{Code: http.StatusNotFound, JSON: nil}
|
||||
}
|
||||
|
||||
var stateEvents, authEvents []gomatrixserverlib.Event
|
||||
for _, headeredEvent := range response.StateEvents {
|
||||
stateEvents = append(stateEvents, headeredEvent.Event)
|
||||
}
|
||||
for _, headeredEvent := range response.AuthChainEvents {
|
||||
authEvents = append(authEvents, headeredEvent.Event)
|
||||
}
|
||||
|
||||
return &gomatrixserverlib.RespState{
|
||||
StateEvents: response.StateEvents,
|
||||
AuthEvents: response.AuthChainEvents,
|
||||
StateEvents: stateEvents,
|
||||
AuthEvents: authEvents,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ func buildMembershipEvent(
|
|||
authEvents := gomatrixserverlib.NewAuthEvents(nil)
|
||||
|
||||
for i := range queryRes.StateEvents {
|
||||
err = authEvents.AddEvent(&queryRes.StateEvents[i])
|
||||
err = authEvents.AddEvent(&queryRes.StateEvents[i].Event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue