Unify HTTP query parameter type hints (#12415)

* Pull out query param types to `synapse.http.types`
* Use QueryParams everywhere
* Simplify `encode_query_args`
* Add annotation which would have caught #12410
This commit is contained in:
David Robertson 2022-04-08 13:06:51 +01:00 committed by GitHub
parent 2e2d8cc2f9
commit 95a038c106
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 43 additions and 38 deletions

View file

@ -67,6 +67,7 @@ from synapse.http.client import (
read_body_with_max_size,
)
from synapse.http.federation.matrix_federation_agent import MatrixFederationAgent
from synapse.http.types import QueryParams
from synapse.logging import opentracing
from synapse.logging.context import make_deferred_yieldable, run_in_background
from synapse.logging.opentracing import set_tag, start_active_span, tags
@ -98,10 +99,6 @@ MAXINT = sys.maxsize
_next_id = 1
QueryArgs = Dict[str, Union[str, List[str]]]
T = TypeVar("T")
@ -144,7 +141,7 @@ class MatrixFederationRequest:
"""A callback to generate the JSON.
"""
query: Optional[dict] = None
query: Optional[QueryParams] = None
"""Query arguments.
"""
@ -165,10 +162,7 @@ class MatrixFederationRequest:
destination_bytes = self.destination.encode("ascii")
path_bytes = self.path.encode("ascii")
if self.query:
query_bytes = encode_query_args(self.query)
else:
query_bytes = b""
query_bytes = encode_query_args(self.query)
# The object is frozen so we can pre-compute this.
uri = urllib.parse.urlunparse(
@ -485,10 +479,7 @@ class MatrixFederationHttpClient:
method_bytes = request.method.encode("ascii")
destination_bytes = request.destination.encode("ascii")
path_bytes = request.path.encode("ascii")
if request.query:
query_bytes = encode_query_args(request.query)
else:
query_bytes = b""
query_bytes = encode_query_args(request.query)
scope = start_active_span(
"outgoing-federation-request",
@ -746,7 +737,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
data: Optional[JsonDict] = None,
json_data_callback: Optional[Callable[[], JsonDict]] = None,
long_retries: bool = False,
@ -764,7 +755,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
data: Optional[JsonDict] = None,
json_data_callback: Optional[Callable[[], JsonDict]] = None,
long_retries: bool = False,
@ -781,7 +772,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
data: Optional[JsonDict] = None,
json_data_callback: Optional[Callable[[], JsonDict]] = None,
long_retries: bool = False,
@ -891,7 +882,7 @@ class MatrixFederationHttpClient:
long_retries: bool = False,
timeout: Optional[int] = None,
ignore_backoff: bool = False,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
) -> Union[JsonDict, list]:
"""Sends the specified json data using POST
@ -961,7 +952,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
retry_on_dns_fail: bool = True,
timeout: Optional[int] = None,
ignore_backoff: bool = False,
@ -976,7 +967,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = ...,
args: Optional[QueryParams] = ...,
retry_on_dns_fail: bool = ...,
timeout: Optional[int] = ...,
ignore_backoff: bool = ...,
@ -990,7 +981,7 @@ class MatrixFederationHttpClient:
self,
destination: str,
path: str,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
retry_on_dns_fail: bool = True,
timeout: Optional[int] = None,
ignore_backoff: bool = False,
@ -1085,7 +1076,7 @@ class MatrixFederationHttpClient:
long_retries: bool = False,
timeout: Optional[int] = None,
ignore_backoff: bool = False,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
) -> Union[JsonDict, list]:
"""Send a DELETE request to the remote expecting some json response
@ -1150,7 +1141,7 @@ class MatrixFederationHttpClient:
destination: str,
path: str,
output_stream,
args: Optional[QueryArgs] = None,
args: Optional[QueryParams] = None,
retry_on_dns_fail: bool = True,
max_size: Optional[int] = None,
ignore_backoff: bool = False,