mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 16:54:49 -04:00
Split admin API for reported events into a detail and a list view (#8539)
Split admin API for reported events in detail und list view. API was introduced with #8217 in synapse v.1.21.0. It makes the list (`GET /_synapse/admin/v1/event_reports`) less complex and provides a better overview. The details can be queried with: `GET /_synapse/admin/v1/event_reports/<report_id>`. It is similar to room and users API. It is a kind of regression in `GET /_synapse/admin/v1/event_reports`. `event_json` was removed. But the api was introduced one version before and it is an admin API (not under spec). Signed-off-by: Dirk Klimpel dirk@klimpel.org
This commit is contained in:
parent
6c9ab61df5
commit
66e6801c3e
6 changed files with 410 additions and 85 deletions
|
@ -15,7 +15,7 @@
|
|||
|
||||
import logging
|
||||
|
||||
from synapse.api.errors import Codes, SynapseError
|
||||
from synapse.api.errors import Codes, NotFoundError, SynapseError
|
||||
from synapse.http.servlet import RestServlet, parse_integer, parse_string
|
||||
from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin
|
||||
|
||||
|
@ -86,3 +86,47 @@ class EventReportsRestServlet(RestServlet):
|
|||
ret["next_token"] = start + len(event_reports)
|
||||
|
||||
return 200, ret
|
||||
|
||||
|
||||
class EventReportDetailRestServlet(RestServlet):
|
||||
"""
|
||||
Get a specific reported event that is known to the homeserver. Results are returned
|
||||
in a dictionary containing report information.
|
||||
The requester must have administrator access in Synapse.
|
||||
|
||||
GET /_synapse/admin/v1/event_reports/<report_id>
|
||||
returns:
|
||||
200 OK with details report if success otherwise an error.
|
||||
|
||||
Args:
|
||||
The parameter `report_id` is the ID of the event report in the database.
|
||||
Returns:
|
||||
JSON blob of information about the event report
|
||||
"""
|
||||
|
||||
PATTERNS = admin_patterns("/event_reports/(?P<report_id>[^/]*)$")
|
||||
|
||||
def __init__(self, hs):
|
||||
self.hs = hs
|
||||
self.auth = hs.get_auth()
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
async def on_GET(self, request, report_id):
|
||||
await assert_requester_is_admin(self.auth, request)
|
||||
|
||||
message = (
|
||||
"The report_id parameter must be a string representing a positive integer."
|
||||
)
|
||||
try:
|
||||
report_id = int(report_id)
|
||||
except ValueError:
|
||||
raise SynapseError(400, message, errcode=Codes.INVALID_PARAM)
|
||||
|
||||
if report_id < 0:
|
||||
raise SynapseError(400, message, errcode=Codes.INVALID_PARAM)
|
||||
|
||||
ret = await self.store.get_event_report(report_id)
|
||||
if not ret:
|
||||
raise NotFoundError("Event report not found")
|
||||
|
||||
return 200, ret
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue