MCPcopy Create free account
hub / github.com/daodst/chat / GetEventAuth

Function GetEventAuth

federationapi/routing/eventauth.go:26–77  ·  view source on GitHub ↗

GetEventAuth returns event auth for the roomID and eventID

(
	ctx context.Context,
	request *gomatrixserverlib.FederationRequest,
	rsAPI api.FederationRoomserverAPI,
	roomID string,
	eventID string,
)

Source from the content-addressed store, hash-verified

24
25// GetEventAuth returns event auth for the roomID and eventID
26func GetEventAuth(
27 ctx context.Context,
28 request *gomatrixserverlib.FederationRequest,
29 rsAPI api.FederationRoomserverAPI,
30 roomID string,
31 eventID string,
32) util.JSONResponse {
33 // If we don't think we belong to this room then don't waste the effort
34 // responding to expensive requests for it.
35 if err := ErrorIfLocalServerNotInRoom(ctx, rsAPI, roomID); err != nil {
36 return *err
37 }
38
39 event, resErr := fetchEvent(ctx, rsAPI, eventID)
40 if resErr != nil {
41 return *resErr
42 }
43
44 if event.RoomID() != roomID {
45 return util.JSONResponse{Code: http.StatusNotFound, JSON: jsonerror.NotFound("event does not belong to this room")}
46 }
47 resErr = allowedToSeeEvent(ctx, request.Origin(), rsAPI, eventID)
48 if resErr != nil {
49 return *resErr
50 }
51
52 var response api.QueryStateAndAuthChainResponse
53 err := rsAPI.QueryStateAndAuthChain(
54 ctx,
55 &api.QueryStateAndAuthChainRequest{
56 RoomID: roomID,
57 PrevEventIDs: []string{eventID},
58 AuthEventIDs: event.AuthEventIDs(),
59 OnlyFetchAuthChain: true,
60 },
61 &response,
62 )
63 if err != nil {
64 return util.ErrorResponse(err)
65 }
66
67 if !response.RoomExists {
68 return util.JSONResponse{Code: http.StatusNotFound, JSON: nil}
69 }
70
71 return util.JSONResponse{
72 Code: http.StatusOK,
73 JSON: gomatrixserverlib.RespEventAuth{
74 AuthEvents: gomatrixserverlib.NewEventJSONsFromHeaderedEvents(response.AuthChainEvents),
75 },
76 }
77}

Callers 1

SetupFunction · 0.85

Calls 4

fetchEventFunction · 0.85
allowedToSeeEventFunction · 0.85

Tested by

no test coverage detected