mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-07-21 01:58:46 -04:00
Add missing type hints to non-client REST servlets. (#10817)
Including admin, consent, key, synapse, and media. All REST servlets (the synapse.rest module) now require typed method definitions.
This commit is contained in:
parent
8c7a531e27
commit
b93259082c
27 changed files with 169 additions and 96 deletions
|
@ -17,17 +17,22 @@ import logging
|
|||
from hashlib import sha256
|
||||
from http import HTTPStatus
|
||||
from os import path
|
||||
from typing import Dict, List
|
||||
from typing import TYPE_CHECKING, Any, Dict, List
|
||||
|
||||
import jinja2
|
||||
from jinja2 import TemplateNotFound
|
||||
|
||||
from twisted.web.server import Request
|
||||
|
||||
from synapse.api.errors import NotFoundError, StoreError, SynapseError
|
||||
from synapse.config import ConfigError
|
||||
from synapse.http.server import DirectServeHtmlResource, respond_with_html
|
||||
from synapse.http.servlet import parse_bytes_from_args, parse_string
|
||||
from synapse.types import UserID
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from synapse.server import HomeServer
|
||||
|
||||
# language to use for the templates. TODO: figure this out from Accept-Language
|
||||
TEMPLATE_LANGUAGE = "en"
|
||||
|
||||
|
@ -69,11 +74,7 @@ class ConsentResource(DirectServeHtmlResource):
|
|||
against the user.
|
||||
"""
|
||||
|
||||
def __init__(self, hs):
|
||||
"""
|
||||
Args:
|
||||
hs (synapse.server.HomeServer): homeserver
|
||||
"""
|
||||
def __init__(self, hs: "HomeServer"):
|
||||
super().__init__()
|
||||
|
||||
self.hs = hs
|
||||
|
@ -106,18 +107,14 @@ class ConsentResource(DirectServeHtmlResource):
|
|||
|
||||
self._hmac_secret = hs.config.form_secret.encode("utf-8")
|
||||
|
||||
async def _async_render_GET(self, request):
|
||||
"""
|
||||
Args:
|
||||
request (twisted.web.http.Request):
|
||||
"""
|
||||
async def _async_render_GET(self, request: Request) -> None:
|
||||
version = parse_string(request, "v", default=self._default_consent_version)
|
||||
username = parse_string(request, "u", default="")
|
||||
userhmac = None
|
||||
has_consented = False
|
||||
public_version = username == ""
|
||||
if not public_version:
|
||||
args: Dict[bytes, List[bytes]] = request.args
|
||||
args: Dict[bytes, List[bytes]] = request.args # type: ignore
|
||||
userhmac_bytes = parse_bytes_from_args(args, "h", required=True)
|
||||
|
||||
self._check_hash(username, userhmac_bytes)
|
||||
|
@ -147,14 +144,10 @@ class ConsentResource(DirectServeHtmlResource):
|
|||
except TemplateNotFound:
|
||||
raise NotFoundError("Unknown policy version")
|
||||
|
||||
async def _async_render_POST(self, request):
|
||||
"""
|
||||
Args:
|
||||
request (twisted.web.http.Request):
|
||||
"""
|
||||
async def _async_render_POST(self, request: Request) -> None:
|
||||
version = parse_string(request, "v", required=True)
|
||||
username = parse_string(request, "u", required=True)
|
||||
args: Dict[bytes, List[bytes]] = request.args
|
||||
args: Dict[bytes, List[bytes]] = request.args # type: ignore
|
||||
userhmac = parse_bytes_from_args(args, "h", required=True)
|
||||
|
||||
self._check_hash(username, userhmac)
|
||||
|
@ -177,7 +170,9 @@ class ConsentResource(DirectServeHtmlResource):
|
|||
except TemplateNotFound:
|
||||
raise NotFoundError("success.html not found")
|
||||
|
||||
def _render_template(self, request, template_name, **template_args):
|
||||
def _render_template(
|
||||
self, request: Request, template_name: str, **template_args: Any
|
||||
) -> None:
|
||||
# get_template checks for ".." so we don't need to worry too much
|
||||
# about path traversal here.
|
||||
template_html = self._jinja_env.get_template(
|
||||
|
@ -186,11 +181,11 @@ class ConsentResource(DirectServeHtmlResource):
|
|||
html = template_html.render(**template_args)
|
||||
respond_with_html(request, 200, html)
|
||||
|
||||
def _check_hash(self, userid, userhmac):
|
||||
def _check_hash(self, userid: str, userhmac: bytes) -> None:
|
||||
"""
|
||||
Args:
|
||||
userid (unicode):
|
||||
userhmac (bytes):
|
||||
userid:
|
||||
userhmac:
|
||||
|
||||
Raises:
|
||||
SynapseError if the hash doesn't match
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue