diff options
author | Richard van der Hoff <github@rvanderhoff.org.uk> | 2018-02-02 11:41:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-02 11:41:03 +0100 |
commit | 33cac3dc2978719c2b48c373d80539e14f21ee48 (patch) | |
tree | 35701fcc0456593d736a3405f72a5dfd624b1cad /synapse/rest | |
parent | Merge pull request #2837 from matrix-org/rav/fix_quarantine_media (diff) | |
parent | Merge branch 'develop' into travis/admin-list-media (diff) | |
download | synapse-33cac3dc2978719c2b48c373d80539e14f21ee48.tar.xz |
Merge pull request #2818 from turt2live/travis/admin-list-media
Add an admin route to get all the media in a room
Diffstat (limited to 'synapse/rest')
-rw-r--r-- | synapse/rest/client/v1/admin.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/synapse/rest/client/v1/admin.py b/synapse/rest/client/v1/admin.py index 5022808ea9..0615e5d807 100644 --- a/synapse/rest/client/v1/admin.py +++ b/synapse/rest/client/v1/admin.py @@ -289,6 +289,27 @@ class QuarantineMediaInRoom(ClientV1RestServlet): defer.returnValue((200, {"num_quarantined": num_quarantined})) +class ListMediaInRoom(ClientV1RestServlet): + """Lists all of the media in a given room. + """ + PATTERNS = client_path_patterns("/admin/room/(?P<room_id>[^/]+)/media") + + def __init__(self, hs): + super(ListMediaInRoom, self).__init__(hs) + self.store = hs.get_datastore() + + @defer.inlineCallbacks + def on_GET(self, request, room_id): + requester = yield self.auth.get_user_by_req(request) + is_admin = yield self.auth.is_server_admin(requester.user) + if not is_admin: + raise AuthError(403, "You are not a server admin") + + local_mxcs, remote_mxcs = yield self.store.get_media_mxcs_in_room(room_id) + + defer.returnValue((200, {"local": local_mxcs, "remote": remote_mxcs})) + + class ResetPasswordRestServlet(ClientV1RestServlet): """Post request to allow an administrator reset password for a user. This needs user to have administrator access in Synapse. @@ -487,3 +508,4 @@ def register_servlets(hs, http_server): SearchUsersRestServlet(hs).register(http_server) ShutdownRoomRestServlet(hs).register(http_server) QuarantineMediaInRoom(hs).register(http_server) + ListMediaInRoom(hs).register(http_server) |