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

Commit 1d375dc

Browse files
committed
Convert the SimpleHttpClient to async.
1 parent b6c6fb7 commit 1d375dc

File tree

3 files changed

+26
-32
lines changed

3 files changed

+26
-32
lines changed

changelog.d/8016.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Convert various parts of the codebase to async/await.

synapse/appservice/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def _get():
175175
urllib.parse.quote(protocol),
176176
)
177177
try:
178-
info = yield self.get_json(uri, {})
178+
info = yield defer.ensureDeferred(self.get_json(uri, {}))
179179

180180
if not _is_valid_3pe_metadata(info):
181181
logger.warning(

synapse/http/client.py

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,7 @@ def __getattr__(_self, attr):
284284
ip_blacklist=self._ip_blacklist,
285285
)
286286

287-
@defer.inlineCallbacks
288-
def request(self, method, uri, data=None, headers=None):
287+
async def request(self, method, uri, data=None, headers=None):
289288
"""
290289
Args:
291290
method (str): HTTP method to use.
@@ -330,7 +329,7 @@ def request(self, method, uri, data=None, headers=None):
330329
self.hs.get_reactor(),
331330
cancelled_to_request_timed_out_error,
332331
)
333-
response = yield make_deferred_yieldable(request_deferred)
332+
response = await make_deferred_yieldable(request_deferred)
334333

335334
incoming_responses_counter.labels(method, response.code).inc()
336335
logger.info(
@@ -353,8 +352,7 @@ def request(self, method, uri, data=None, headers=None):
353352
set_tag("error_reason", e.args[0])
354353
raise
355354

356-
@defer.inlineCallbacks
357-
def post_urlencoded_get_json(self, uri, args={}, headers=None):
355+
async def post_urlencoded_get_json(self, uri, args={}, headers=None):
358356
"""
359357
Args:
360358
uri (str):
@@ -363,7 +361,7 @@ def post_urlencoded_get_json(self, uri, args={}, headers=None):
363361
header name to a list of values for that header
364362
365363
Returns:
366-
Deferred[object]: parsed json
364+
object: parsed json
367365
368366
Raises:
369367
HttpResponseException: On a non-2xx HTTP response.
@@ -386,11 +384,11 @@ def post_urlencoded_get_json(self, uri, args={}, headers=None):
386384
if headers:
387385
actual_headers.update(headers)
388386

389-
response = yield self.request(
387+
response = await self.request(
390388
"POST", uri, headers=Headers(actual_headers), data=query_bytes
391389
)
392390

393-
body = yield make_deferred_yieldable(readBody(response))
391+
body = await make_deferred_yieldable(readBody(response))
394392

395393
if 200 <= response.code < 300:
396394
return json.loads(body.decode("utf-8"))
@@ -399,8 +397,7 @@ def post_urlencoded_get_json(self, uri, args={}, headers=None):
399397
response.code, response.phrase.decode("ascii", errors="replace"), body
400398
)
401399

402-
@defer.inlineCallbacks
403-
def post_json_get_json(self, uri, post_json, headers=None):
400+
async def post_json_get_json(self, uri, post_json, headers=None):
404401
"""
405402
406403
Args:
@@ -410,7 +407,7 @@ def post_json_get_json(self, uri, post_json, headers=None):
410407
header name to a list of values for that header
411408
412409
Returns:
413-
Deferred[object]: parsed json
410+
object: parsed json
414411
415412
Raises:
416413
HttpResponseException: On a non-2xx HTTP response.
@@ -429,11 +426,11 @@ def post_json_get_json(self, uri, post_json, headers=None):
429426
if headers:
430427
actual_headers.update(headers)
431428

432-
response = yield self.request(
429+
response = await self.request(
433430
"POST", uri, headers=Headers(actual_headers), data=json_str
434431
)
435432

436-
body = yield make_deferred_yieldable(readBody(response))
433+
body = await make_deferred_yieldable(readBody(response))
437434

438435
if 200 <= response.code < 300:
439436
return json.loads(body.decode("utf-8"))
@@ -442,8 +439,7 @@ def post_json_get_json(self, uri, post_json, headers=None):
442439
response.code, response.phrase.decode("ascii", errors="replace"), body
443440
)
444441

445-
@defer.inlineCallbacks
446-
def get_json(self, uri, args={}, headers=None):
442+
async def get_json(self, uri, args={}, headers=None):
447443
""" Gets some json from the given URI.
448444
449445
Args:
@@ -455,7 +451,7 @@ def get_json(self, uri, args={}, headers=None):
455451
headers (dict[str|bytes, List[str|bytes]]|None): If not None, a map from
456452
header name to a list of values for that header
457453
Returns:
458-
Deferred: Succeeds when we get *any* 2xx HTTP response, with the
454+
Succeeds when we get *any* 2xx HTTP response, with the
459455
HTTP body as JSON.
460456
Raises:
461457
HttpResponseException On a non-2xx HTTP response.
@@ -466,11 +462,10 @@ def get_json(self, uri, args={}, headers=None):
466462
if headers:
467463
actual_headers.update(headers)
468464

469-
body = yield self.get_raw(uri, args, headers=headers)
465+
body = await self.get_raw(uri, args, headers=headers)
470466
return json.loads(body.decode("utf-8"))
471467

472-
@defer.inlineCallbacks
473-
def put_json(self, uri, json_body, args={}, headers=None):
468+
async def put_json(self, uri, json_body, args={}, headers=None):
474469
""" Puts some json to the given URI.
475470
476471
Args:
@@ -483,7 +478,7 @@ def put_json(self, uri, json_body, args={}, headers=None):
483478
headers (dict[str|bytes, List[str|bytes]]|None): If not None, a map from
484479
header name to a list of values for that header
485480
Returns:
486-
Deferred: Succeeds when we get *any* 2xx HTTP response, with the
481+
Succeeds when we get *any* 2xx HTTP response, with the
487482
HTTP body as JSON.
488483
Raises:
489484
HttpResponseException On a non-2xx HTTP response.
@@ -504,11 +499,11 @@ def put_json(self, uri, json_body, args={}, headers=None):
504499
if headers:
505500
actual_headers.update(headers)
506501

507-
response = yield self.request(
502+
response = await self.request(
508503
"PUT", uri, headers=Headers(actual_headers), data=json_str
509504
)
510505

511-
body = yield make_deferred_yieldable(readBody(response))
506+
body = await make_deferred_yieldable(readBody(response))
512507

513508
if 200 <= response.code < 300:
514509
return json.loads(body.decode("utf-8"))
@@ -517,8 +512,7 @@ def put_json(self, uri, json_body, args={}, headers=None):
517512
response.code, response.phrase.decode("ascii", errors="replace"), body
518513
)
519514

520-
@defer.inlineCallbacks
521-
def get_raw(self, uri, args={}, headers=None):
515+
async def get_raw(self, uri, args={}, headers=None):
522516
""" Gets raw text from the given URI.
523517
524518
Args:
@@ -530,7 +524,7 @@ def get_raw(self, uri, args={}, headers=None):
530524
headers (dict[str|bytes, List[str|bytes]]|None): If not None, a map from
531525
header name to a list of values for that header
532526
Returns:
533-
Deferred: Succeeds when we get *any* 2xx HTTP response, with the
527+
Succeeds when we get *any* 2xx HTTP response, with the
534528
HTTP body as bytes.
535529
Raises:
536530
HttpResponseException on a non-2xx HTTP response.
@@ -543,9 +537,9 @@ def get_raw(self, uri, args={}, headers=None):
543537
if headers:
544538
actual_headers.update(headers)
545539

546-
response = yield self.request("GET", uri, headers=Headers(actual_headers))
540+
response = await self.request("GET", uri, headers=Headers(actual_headers))
547541

548-
body = yield make_deferred_yieldable(readBody(response))
542+
body = await make_deferred_yieldable(readBody(response))
549543

550544
if 200 <= response.code < 300:
551545
return body
@@ -557,8 +551,7 @@ def get_raw(self, uri, args={}, headers=None):
557551
# XXX: FIXME: This is horribly copy-pasted from matrixfederationclient.
558552
# The two should be factored out.
559553

560-
@defer.inlineCallbacks
561-
def get_file(self, url, output_stream, max_size=None, headers=None):
554+
async def get_file(self, url, output_stream, max_size=None, headers=None):
562555
"""GETs a file from a given URL
563556
Args:
564557
url (str): The URL to GET
@@ -574,7 +567,7 @@ def get_file(self, url, output_stream, max_size=None, headers=None):
574567
if headers:
575568
actual_headers.update(headers)
576569

577-
response = yield self.request("GET", url, headers=Headers(actual_headers))
570+
response = await self.request("GET", url, headers=Headers(actual_headers))
578571

579572
resp_headers = dict(response.headers.getAllRawHeaders())
580573

@@ -598,7 +591,7 @@ def get_file(self, url, output_stream, max_size=None, headers=None):
598591
# straight back in again
599592

600593
try:
601-
length = yield make_deferred_yieldable(
594+
length = await make_deferred_yieldable(
602595
_readBodyToFile(response, output_stream, max_size)
603596
)
604597
except SynapseError:

0 commit comments

Comments
 (0)