mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 14:33:10 -06:00
Send InputRoomEvents instead of an array of events
This commit is contained in:
parent
38526cac52
commit
53cd6546d3
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/clientapi/httputil"
|
||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/dendrite/common"
|
||||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/util"
|
||||
sarama "gopkg.in/Shopify/sarama.v1"
|
||||
|
|
@ -180,15 +181,11 @@ func createRoom(req *http.Request, cfg config.ClientAPI, roomID string, producer
|
|||
}
|
||||
|
||||
// send events to the room server
|
||||
var m sarama.ProducerMessage
|
||||
value, err := json.Marshal(builtEvents)
|
||||
msgs, err := eventsToMessages(builtEvents)
|
||||
if err != nil {
|
||||
return util.ErrorResponse(err)
|
||||
}
|
||||
m.Topic = "clientapiOutput" // TODO: Make this customisable like roomserver is?
|
||||
m.Key = sarama.StringEncoder("")
|
||||
m.Value = sarama.ByteEncoder(value)
|
||||
if _, _, err = producer.SendMessage(&m); err != nil {
|
||||
if err = producer.SendMessages(msgs); err != nil {
|
||||
return util.ErrorResponse(err)
|
||||
}
|
||||
|
||||
|
|
@ -255,6 +252,35 @@ func authEventsFromStateNeeded(eventsNeeded gomatrixserverlib.StateNeeded,
|
|||
return
|
||||
}
|
||||
|
||||
func eventsToMessages(events []*gomatrixserverlib.Event) ([]*sarama.ProducerMessage, error) {
|
||||
msgs := make([]*sarama.ProducerMessage, len(events))
|
||||
for i, e := range events {
|
||||
var m sarama.ProducerMessage
|
||||
|
||||
// map auth event references to IDs
|
||||
var authEventIDs []string
|
||||
for _, ref := range e.AuthEvents() {
|
||||
authEventIDs = append(authEventIDs, ref.EventID)
|
||||
}
|
||||
|
||||
ire := api.InputRoomEvent{
|
||||
Kind: api.KindNew,
|
||||
Event: e.JSON(),
|
||||
AuthEventIDs: authEventIDs,
|
||||
}
|
||||
|
||||
value, err := json.Marshal(ire)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.Topic = "clientapiOutput" // TODO: Make this customisable like roomserver is?
|
||||
m.Key = sarama.StringEncoder("")
|
||||
m.Value = sarama.ByteEncoder(value)
|
||||
msgs[i] = &m
|
||||
}
|
||||
return msgs, nil
|
||||
}
|
||||
|
||||
type authEventProvider struct {
|
||||
events map[common.StateKeyTuple]*gomatrixserverlib.Event
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue