aboutsummaryrefslogtreecommitdiff
path: root/federationapi
diff options
context:
space:
mode:
authorKegsay <kegan@matrix.org>2020-03-14 20:08:54 +0000
committerGitHub <noreply@github.com>2020-03-14 20:08:54 +0000
commitdfd8b93d93a586f0c4400b3a317c978a1c0e04d9 (patch)
tree8ef2da589f9d5b387137b0864eda0117d655d163 /federationapi
parent7353de7dbb146a16696cf2e9683753c3b08291f2 (diff)
Federation: Add event_auth endpoint (#905)
* Federation: Add event_auth endpoint Signed-off-by: Sudhanshu Jaiswal <sudsjaiswal@gmail.com> * Update metric names Signed-off-by: Sudhanshu Jaiswal <sudsjaiswal@gmail.com> * Rebase * Add comment from @APwhitehat Co-authored-by: Sudhanshu Jaiswal <sudsjaiswal@gmail.com>
Diffstat (limited to 'federationapi')
-rw-r--r--federationapi/routing/eventauth.go43
-rw-r--r--federationapi/routing/routing.go14
2 files changed, 55 insertions, 2 deletions
diff --git a/federationapi/routing/eventauth.go b/federationapi/routing/eventauth.go
new file mode 100644
index 00000000..003165c8
--- /dev/null
+++ b/federationapi/routing/eventauth.go
@@ -0,0 +1,43 @@
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package routing
+
+import (
+ "context"
+ "net/http"
+
+ "github.com/matrix-org/dendrite/roomserver/api"
+ "github.com/matrix-org/gomatrixserverlib"
+ "github.com/matrix-org/util"
+)
+
+// GetEventAuth returns event auth for the roomID and eventID
+func GetEventAuth(
+ ctx context.Context,
+ request *gomatrixserverlib.FederationRequest,
+ query api.RoomserverQueryAPI,
+ roomID string,
+ eventID string,
+) util.JSONResponse {
+ // TODO: Optimisation: we shouldn't be querying all the room state
+ // that is in state.StateEvents - we just ignore it.
+ state, err := getState(ctx, request, query, roomID, eventID)
+ if err != nil {
+ return *err
+ }
+
+ return util.JSONResponse{
+ Code: http.StatusOK,
+ JSON: gomatrixserverlib.RespEventAuth{AuthEvents: state.AuthEvents},
+ }
+}
diff --git a/federationapi/routing/routing.go b/federationapi/routing/routing.go
index 3b119301..b5c8e53d 100644
--- a/federationapi/routing/routing.go
+++ b/federationapi/routing/routing.go
@@ -131,7 +131,7 @@ func Setup(
)).Methods(http.MethodGet)
v1fedmux.Handle("/state/{roomID}", common.MakeFedAPI(
- "federation_get_event_auth", cfg.Matrix.ServerName, keys,
+ "federation_get_state", cfg.Matrix.ServerName, keys,
func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse {
vars, err := common.URLDecodeMapValues(mux.Vars(httpReq))
if err != nil {
@@ -144,7 +144,7 @@ func Setup(
)).Methods(http.MethodGet)
v1fedmux.Handle("/state_ids/{roomID}", common.MakeFedAPI(
- "federation_get_event_auth", cfg.Matrix.ServerName, keys,
+ "federation_get_state_ids", cfg.Matrix.ServerName, keys,
func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse {
vars, err := common.URLDecodeMapValues(mux.Vars(httpReq))
if err != nil {
@@ -156,6 +156,16 @@ func Setup(
},
)).Methods(http.MethodGet)
+ v1fedmux.Handle("/event_auth/{roomID}/{eventID}", common.MakeFedAPI(
+ "federation_get_event_auth", cfg.Matrix.ServerName, keys,
+ func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse {
+ vars := mux.Vars(httpReq)
+ return GetEventAuth(
+ httpReq.Context(), request, query, vars["roomID"], vars["eventID"],
+ )
+ },
+ )).Methods(http.MethodGet)
+
v1fedmux.Handle("/query/directory", common.MakeFedAPI(
"federation_query_room_alias", cfg.Matrix.ServerName, keys,
func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse {