Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Convert status codes to HTTPStatus in synapse.rest.admin #11452

Merged
merged 4 commits into from
Nov 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/11452.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Convert status codes to `HTTPStatus` in `synapse.rest.admin`.
19 changes: 12 additions & 7 deletions synapse/rest/admin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import logging
import platform
from http import HTTPStatus
from typing import TYPE_CHECKING, Optional, Tuple

import synapse
Expand Down Expand Up @@ -98,7 +99,7 @@ def __init__(self, hs: "HomeServer"):
}

def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
return 200, self.res
return HTTPStatus.OK, self.res


class PurgeHistoryRestServlet(RestServlet):
Expand Down Expand Up @@ -130,7 +131,7 @@ async def on_POST(
event = await self.store.get_event(event_id)

if event.room_id != room_id:
raise SynapseError(400, "Event is for wrong room.")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Event is for wrong room.")

# RoomStreamToken expects [int] not Optional[int]
assert event.internal_metadata.stream_ordering is not None
Expand All @@ -144,7 +145,9 @@ async def on_POST(
ts = body["purge_up_to_ts"]
if not isinstance(ts, int):
raise SynapseError(
400, "purge_up_to_ts must be an int", errcode=Codes.BAD_JSON
HTTPStatus.BAD_REQUEST,
"purge_up_to_ts must be an int",
errcode=Codes.BAD_JSON,
)

stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts)
Expand All @@ -160,7 +163,9 @@ async def on_POST(
stream_ordering,
)
raise SynapseError(
404, "there is no event to be purged", errcode=Codes.NOT_FOUND
HTTPStatus.NOT_FOUND,
"there is no event to be purged",
errcode=Codes.NOT_FOUND,
)
(stream, topo, _event_id) = r
token = "t%d-%d" % (topo, stream)
Expand All @@ -173,7 +178,7 @@ async def on_POST(
)
else:
raise SynapseError(
400,
HTTPStatus.BAD_REQUEST,
"must specify purge_up_to_event_id or purge_up_to_ts",
errcode=Codes.BAD_JSON,
)
Expand All @@ -182,7 +187,7 @@ async def on_POST(
room_id, token, delete_local_events=delete_local_events
)

return 200, {"purge_id": purge_id}
return HTTPStatus.OK, {"purge_id": purge_id}


class PurgeHistoryStatusRestServlet(RestServlet):
Expand All @@ -201,7 +206,7 @@ async def on_GET(
if purge_status is None:
raise NotFoundError("purge id '%s' not found" % purge_id)

return 200, purge_status.asdict()
return HTTPStatus.OK, purge_status.asdict()


########################################################################################
Expand Down
3 changes: 2 additions & 1 deletion synapse/rest/admin/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.

import re
from http import HTTPStatus
from typing import Iterable, Pattern

from synapse.api.auth import Auth
Expand Down Expand Up @@ -62,4 +63,4 @@ async def assert_user_is_admin(auth: Auth, user_id: UserID) -> None:
"""
is_admin = await auth.is_server_admin(user_id)
if not is_admin:
raise AuthError(403, "You are not a server admin")
raise AuthError(HTTPStatus.FORBIDDEN, "You are not a server admin")
21 changes: 11 additions & 10 deletions synapse/rest/admin/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from http import HTTPStatus
from typing import TYPE_CHECKING, Tuple

from synapse.api.errors import NotFoundError, SynapseError
Expand Down Expand Up @@ -53,7 +54,7 @@ async def on_GET(

target_user = UserID.from_string(user_id)
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only lookup local users")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users")

u = await self.store.get_user_by_id(target_user.to_string())
if u is None:
Expand All @@ -62,7 +63,7 @@ async def on_GET(
device = await self.device_handler.get_device(
target_user.to_string(), device_id
)
return 200, device
return HTTPStatus.OK, device

async def on_DELETE(
self, request: SynapseRequest, user_id: str, device_id: str
Expand All @@ -71,14 +72,14 @@ async def on_DELETE(

target_user = UserID.from_string(user_id)
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only lookup local users")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users")

u = await self.store.get_user_by_id(target_user.to_string())
if u is None:
raise NotFoundError("Unknown user")

await self.device_handler.delete_device(target_user.to_string(), device_id)
return 200, {}
return HTTPStatus.OK, {}

async def on_PUT(
self, request: SynapseRequest, user_id: str, device_id: str
Expand All @@ -87,7 +88,7 @@ async def on_PUT(

target_user = UserID.from_string(user_id)
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only lookup local users")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users")

u = await self.store.get_user_by_id(target_user.to_string())
if u is None:
Expand All @@ -97,7 +98,7 @@ async def on_PUT(
await self.device_handler.update_device(
target_user.to_string(), device_id, body
)
return 200, {}
return HTTPStatus.OK, {}


class DevicesRestServlet(RestServlet):
Expand All @@ -124,14 +125,14 @@ async def on_GET(

target_user = UserID.from_string(user_id)
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only lookup local users")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users")

u = await self.store.get_user_by_id(target_user.to_string())
if u is None:
raise NotFoundError("Unknown user")

devices = await self.device_handler.get_devices_by_user(target_user.to_string())
return 200, {"devices": devices, "total": len(devices)}
return HTTPStatus.OK, {"devices": devices, "total": len(devices)}


class DeleteDevicesRestServlet(RestServlet):
Expand All @@ -155,7 +156,7 @@ async def on_POST(

target_user = UserID.from_string(user_id)
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only lookup local users")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only lookup local users")

u = await self.store.get_user_by_id(target_user.to_string())
if u is None:
Expand All @@ -167,4 +168,4 @@ async def on_POST(
await self.device_handler.delete_devices(
target_user.to_string(), body["devices"]
)
return 200, {}
return HTTPStatus.OK, {}
21 changes: 14 additions & 7 deletions synapse/rest/admin/event_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.

import logging
from http import HTTPStatus
from typing import TYPE_CHECKING, Tuple

from synapse.api.errors import Codes, NotFoundError, SynapseError
Expand Down Expand Up @@ -66,21 +67,23 @@ async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:

if start < 0:
raise SynapseError(
400,
HTTPStatus.BAD_REQUEST,
"The start parameter must be a positive integer.",
errcode=Codes.INVALID_PARAM,
)

if limit < 0:
raise SynapseError(
400,
HTTPStatus.BAD_REQUEST,
"The limit parameter must be a positive integer.",
errcode=Codes.INVALID_PARAM,
)

if direction not in ("f", "b"):
raise SynapseError(
400, "Unknown direction: %s" % (direction,), errcode=Codes.INVALID_PARAM
HTTPStatus.BAD_REQUEST,
"Unknown direction: %s" % (direction,),
errcode=Codes.INVALID_PARAM,
)

event_reports, total = await self.store.get_event_reports_paginate(
Expand All @@ -90,7 +93,7 @@ async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
if (start + limit) < total:
ret["next_token"] = start + len(event_reports)

return 200, ret
return HTTPStatus.OK, ret


class EventReportDetailRestServlet(RestServlet):
Expand Down Expand Up @@ -127,13 +130,17 @@ async def on_GET(
try:
resolved_report_id = int(report_id)
except ValueError:
raise SynapseError(400, message, errcode=Codes.INVALID_PARAM)
raise SynapseError(
HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM
)

if resolved_report_id < 0:
raise SynapseError(400, message, errcode=Codes.INVALID_PARAM)
raise SynapseError(
HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM
)

ret = await self.store.get_event_report(resolved_report_id)
if not ret:
raise NotFoundError("Event report not found")

return 200, ret
return HTTPStatus.OK, ret
5 changes: 3 additions & 2 deletions synapse/rest/admin/groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from http import HTTPStatus
from typing import TYPE_CHECKING, Tuple

from synapse.api.errors import SynapseError
Expand Down Expand Up @@ -43,7 +44,7 @@ async def on_POST(
await assert_user_is_admin(self.auth, requester.user)

if not self.is_mine_id(group_id):
raise SynapseError(400, "Can only delete local groups")
raise SynapseError(HTTPStatus.BAD_REQUEST, "Can only delete local groups")

await self.group_server.delete_group(group_id, requester.user.to_string())
return 200, {}
return HTTPStatus.OK, {}
Loading