1717
1818import logging
1919import platform
20+ from typing import TYPE_CHECKING , Optional , Tuple
2021
2122import synapse
2223from synapse .api .errors import Codes , NotFoundError , SynapseError
23- from synapse .http .server import JsonResource
24+ from synapse .http .server import HttpServer , JsonResource
2425from synapse .http .servlet import RestServlet , parse_json_object_from_request
26+ from synapse .http .site import SynapseRequest
2527from synapse .rest .admin ._base import admin_patterns , assert_requester_is_admin
2628from synapse .rest .admin .devices import (
2729 DeleteDevicesRestServlet ,
6668 UserTokenRestServlet ,
6769 WhoisRestServlet ,
6870)
69- from synapse .types import RoomStreamToken
71+ from synapse .types import JsonDict , RoomStreamToken
7072from synapse .util .versionstring import get_version_string
7173
74+ if TYPE_CHECKING :
75+ from synapse .server import HomeServer
76+
7277logger = logging .getLogger (__name__ )
7378
7479
7580class VersionServlet (RestServlet ):
7681 PATTERNS = admin_patterns ("/server_version$" )
7782
78- def __init__ (self , hs ):
83+ def __init__ (self , hs : "HomeServer" ):
7984 self .res = {
8085 "server_version" : get_version_string (synapse ),
8186 "python_version" : platform .python_version (),
8287 }
8388
84- def on_GET (self , request ) :
89+ def on_GET (self , request : SynapseRequest ) -> Tuple [ int , JsonDict ] :
8590 return 200 , self .res
8691
8792
@@ -90,17 +95,14 @@ class PurgeHistoryRestServlet(RestServlet):
9095 "/purge_history/(?P<room_id>[^/]*)(/(?P<event_id>[^/]+))?"
9196 )
9297
93- def __init__ (self , hs ):
94- """
95-
96- Args:
97- hs (synapse.server.HomeServer)
98- """
98+ def __init__ (self , hs : "HomeServer" ):
9999 self .pagination_handler = hs .get_pagination_handler ()
100100 self .store = hs .get_datastore ()
101101 self .auth = hs .get_auth ()
102102
103- async def on_POST (self , request , room_id , event_id ):
103+ async def on_POST (
104+ self , request : SynapseRequest , room_id : str , event_id : Optional [str ]
105+ ) -> Tuple [int , JsonDict ]:
104106 await assert_requester_is_admin (self .auth , request )
105107
106108 body = parse_json_object_from_request (request , allow_empty_body = True )
@@ -119,6 +121,8 @@ async def on_POST(self, request, room_id, event_id):
119121 if event .room_id != room_id :
120122 raise SynapseError (400 , "Event is for wrong room." )
121123
124+ # RoomStreamToken expects [int] not Optional[int]
125+ assert event .internal_metadata .stream_ordering is not None
122126 room_token = RoomStreamToken (
123127 event .depth , event .internal_metadata .stream_ordering
124128 )
@@ -173,16 +177,13 @@ async def on_POST(self, request, room_id, event_id):
173177class PurgeHistoryStatusRestServlet (RestServlet ):
174178 PATTERNS = admin_patterns ("/purge_history_status/(?P<purge_id>[^/]+)" )
175179
176- def __init__ (self , hs ):
177- """
178-
179- Args:
180- hs (synapse.server.HomeServer)
181- """
180+ def __init__ (self , hs : "HomeServer" ):
182181 self .pagination_handler = hs .get_pagination_handler ()
183182 self .auth = hs .get_auth ()
184183
185- async def on_GET (self , request , purge_id ):
184+ async def on_GET (
185+ self , request : SynapseRequest , purge_id : str
186+ ) -> Tuple [int , JsonDict ]:
186187 await assert_requester_is_admin (self .auth , request )
187188
188189 purge_status = self .pagination_handler .get_purge_status (purge_id )
@@ -203,12 +204,12 @@ async def on_GET(self, request, purge_id):
203204class AdminRestResource (JsonResource ):
204205 """The REST resource which gets mounted at /_synapse/admin"""
205206
206- def __init__ (self , hs ):
207+ def __init__ (self , hs : "HomeServer" ):
207208 JsonResource .__init__ (self , hs , canonical_json = False )
208209 register_servlets (hs , self )
209210
210211
211- def register_servlets (hs , http_server ) :
212+ def register_servlets (hs : "HomeServer" , http_server : HttpServer ) -> None :
212213 """
213214 Register all the admin servlets.
214215 """
@@ -242,7 +243,9 @@ def register_servlets(hs, http_server):
242243 RateLimitRestServlet (hs ).register (http_server )
243244
244245
245- def register_servlets_for_client_rest_resource (hs , http_server ):
246+ def register_servlets_for_client_rest_resource (
247+ hs : "HomeServer" , http_server : HttpServer
248+ ) -> None :
246249 """Register only the servlets which need to be exposed on /_matrix/client/xxx"""
247250 WhoisRestServlet (hs ).register (http_server )
248251 PurgeHistoryStatusRestServlet (hs ).register (http_server )
0 commit comments