From 1878b75367d7b152b508c7a53f89c4275a3cc6b1 Mon Sep 17 00:00:00 2001 From: Krombel Date: Tue, 7 Aug 2018 17:14:35 +0200 Subject: [PATCH] Move generateSendEvent below SendEvent --- .../dendrite/clientapi/routing/sendevent.go | 108 +++++++++--------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/clientapi/routing/sendevent.go b/src/github.com/matrix-org/dendrite/clientapi/routing/sendevent.go index 6cdafed8a..e7c2c13bf 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/routing/sendevent.go +++ b/src/github.com/matrix-org/dendrite/clientapi/routing/sendevent.go @@ -35,6 +35,60 @@ type sendEventResponse struct { EventID string `json:"event_id"` } +// SendEvent implements: +// /rooms/{roomID}/send/{eventType} +// /rooms/{roomID}/send/{eventType}/{txnID} +// /rooms/{roomID}/state/{eventType}/{stateKey} +func SendEvent( + req *http.Request, + device *authtypes.Device, + roomID, eventType string, txnID, stateKey *string, + cfg config.Dendrite, + queryAPI api.RoomserverQueryAPI, + producer *producers.RoomserverProducer, + txnCache *transactions.Cache, +) util.JSONResponse { + if txnID != nil { + // Try to fetch response from transactionsCache + if res, ok := txnCache.FetchTransaction(*txnID); ok { + return *res + } + } + + e, resErr := generateSendEvent(req, device, roomID, eventType, stateKey, cfg, queryAPI) + if resErr != nil { + return *resErr + } + + var txnAndDeviceID *api.TransactionID + if txnID != nil { + txnAndDeviceID = &api.TransactionID{ + TransactionID: *txnID, + DeviceID: device.ID, + } + } + + // pass the new event to the roomserver and receive the correct event ID + // event ID in case of duplicate transaction is discarded + eventID, err := producer.SendEvents( + req.Context(), []gomatrixserverlib.Event{*e}, cfg.Matrix.ServerName, txnAndDeviceID, + ) + if err != nil { + return httputil.LogThenError(req, err) + } + + res := util.JSONResponse{ + Code: http.StatusOK, + JSON: sendEventResponse{eventID}, + } + // Add response to transactionsCache + if txnID != nil { + txnCache.AddTransaction(*txnID, &res) + } + + return res +} + func generateSendEvent( req *http.Request, device *authtypes.Device, @@ -94,57 +148,3 @@ func generateSendEvent( } return e, nil } - -// SendEvent implements: -// /rooms/{roomID}/send/{eventType} -// /rooms/{roomID}/send/{eventType}/{txnID} -// /rooms/{roomID}/state/{eventType}/{stateKey} -func SendEvent( - req *http.Request, - device *authtypes.Device, - roomID, eventType string, txnID, stateKey *string, - cfg config.Dendrite, - queryAPI api.RoomserverQueryAPI, - producer *producers.RoomserverProducer, - txnCache *transactions.Cache, -) util.JSONResponse { - if txnID != nil { - // Try to fetch response from transactionsCache - if res, ok := txnCache.FetchTransaction(*txnID); ok { - return *res - } - } - - e, resErr := generateSendEvent(req, device, roomID, eventType, stateKey, cfg, queryAPI) - if resErr != nil { - return *resErr - } - - var txnAndDeviceID *api.TransactionID - if txnID != nil { - txnAndDeviceID = &api.TransactionID{ - TransactionID: *txnID, - DeviceID: device.ID, - } - } - - // pass the new event to the roomserver and receive the correct event ID - // event ID in case of duplicate transaction is discarded - eventID, err := producer.SendEvents( - req.Context(), []gomatrixserverlib.Event{*e}, cfg.Matrix.ServerName, txnAndDeviceID, - ) - if err != nil { - return httputil.LogThenError(req, err) - } - - res := util.JSONResponse{ - Code: http.StatusOK, - JSON: sendEventResponse{eventID}, - } - // Add response to transactionsCache - if txnID != nil { - txnCache.AddTransaction(*txnID, &res) - } - - return res -}