From eb896dd6b5812c189d40b31597d729c9cb18d687 Mon Sep 17 00:00:00 2001 From: Anant Prakash Date: Wed, 6 Jun 2018 20:23:20 +0530 Subject: [PATCH] Refactor GetEvents --- .../dendrite/federationapi/routing/events.go | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/federationapi/routing/events.go b/src/github.com/matrix-org/dendrite/federationapi/routing/events.go index 022628913..74a91606e 100644 --- a/src/github.com/matrix-org/dendrite/federationapi/routing/events.go +++ b/src/github.com/matrix-org/dendrite/federationapi/routing/events.go @@ -35,6 +35,22 @@ func GetEvent( _ gomatrixserverlib.KeyRing, eventID string, ) util.JSONResponse { + event, err := getEvent(ctx, request, query, eventID) + if err != nil { + return *err + } + + return util.JSONResponse{Code: http.StatusOK, JSON: event} +} + +// getEvent returns the requested event. +// Or returns an error response which can be sent to the client. +func getEvent( + ctx context.Context, + request *gomatrixserverlib.FederationRequest, + query api.RoomserverQueryAPI, + eventID string, +) (*gomatrixserverlib.Event, *util.JSONResponse) { var authResponse api.QueryServerAllowedToSeeEventResponse err := query.QueryServerAllowedToSeeEvent( ctx, @@ -45,11 +61,13 @@ func GetEvent( &authResponse, ) if err != nil { - return util.ErrorResponse(err) + resErr := util.ErrorResponse(err) + return nil, &resErr } if !authResponse.AllowedToSeeEvent { - return util.MessageResponse(http.StatusForbidden, "server not allowed to see event") + resErr := util.MessageResponse(http.StatusForbidden, "server not allowed to see event") + return nil, &resErr } var eventsResponse api.QueryEventsByIDResponse @@ -59,12 +77,13 @@ func GetEvent( &eventsResponse, ) if err != nil { - return util.ErrorResponse(err) + resErr := util.ErrorResponse(err) + return nil, &resErr } if len(eventsResponse.Events) == 0 { - return util.JSONResponse{Code: http.StatusNotFound, JSON: nil} + return nil, &util.JSONResponse{Code: http.StatusNotFound, JSON: nil} } - return util.JSONResponse{Code: http.StatusOK, JSON: &eventsResponse.Events[0]} + return &eventsResponse.Events[0], nil }