mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 22:43: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/httputil"
|
||||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||||
"github.com/matrix-org/dendrite/common"
|
"github.com/matrix-org/dendrite/common"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/matrix-org/util"
|
"github.com/matrix-org/util"
|
||||||
sarama "gopkg.in/Shopify/sarama.v1"
|
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
|
// send events to the room server
|
||||||
var m sarama.ProducerMessage
|
msgs, err := eventsToMessages(builtEvents)
|
||||||
value, err := json.Marshal(builtEvents)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return util.ErrorResponse(err)
|
return util.ErrorResponse(err)
|
||||||
}
|
}
|
||||||
m.Topic = "clientapiOutput" // TODO: Make this customisable like roomserver is?
|
if err = producer.SendMessages(msgs); err != nil {
|
||||||
m.Key = sarama.StringEncoder("")
|
|
||||||
m.Value = sarama.ByteEncoder(value)
|
|
||||||
if _, _, err = producer.SendMessage(&m); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
return util.ErrorResponse(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -255,6 +252,35 @@ func authEventsFromStateNeeded(eventsNeeded gomatrixserverlib.StateNeeded,
|
||||||
return
|
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 {
|
type authEventProvider struct {
|
||||||
events map[common.StateKeyTuple]*gomatrixserverlib.Event
|
events map[common.StateKeyTuple]*gomatrixserverlib.Event
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue