Skip to content

Commit

Permalink
Convert remaining inlineCallbacks to async/await. (#372)
Browse files Browse the repository at this point in the history
  • Loading branch information
H-Shay committed Jun 25, 2021
1 parent f5a5bbf commit 8ea6117
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 18 deletions.
1 change: 1 addition & 0 deletions changelog.d/372.misc
@@ -0,0 +1 @@
Convert inlineCallbacks to async/await.
4 changes: 2 additions & 2 deletions sydent/http/servlets/__init__.py
Expand Up @@ -162,7 +162,7 @@ def inner(self, request: Request, *args, **kwargs) -> bytes:
return inner


def deferjsonwrap(f):
def asyncjsonwrap(f):
def reqDone(resp: Dict[str, Any], request: Request) -> None:
"""
Converts the given response content into JSON and encodes it to bytes, then
Expand Down Expand Up @@ -216,7 +216,7 @@ def inner(*args, **kwargs) -> int:
"""
request = args[1]

d = defer.maybeDeferred(f, *args, **kwargs)
d = defer.ensureDeferred(f(*args, **kwargs))
d.addCallback(reqDone, request)
d.addErrback(reqErr, request)
return server.NOT_DONE_YET
Expand Down
29 changes: 13 additions & 16 deletions sydent/http/servlets/registerservlet.py
Expand Up @@ -14,14 +14,14 @@

import logging
import urllib
from typing import TYPE_CHECKING, Generator
from typing import TYPE_CHECKING

from twisted.internet import defer
from twisted.web.resource import Resource
from twisted.web.server import Request

from sydent.http.httpclient import FederationHttpClient
from sydent.http.servlets import deferjsonwrap, get_args, send_cors
from sydent.http.servlets import asyncjsonwrap, get_args, send_cors
from sydent.types import JsonDict
from sydent.users.tokens import issueToken
from sydent.util.stringutils import is_valid_matrix_server_name

Expand All @@ -38,9 +38,8 @@ def __init__(self, syd: "Sydent") -> None:
self.sydent = syd
self.client = FederationHttpClient(self.sydent)

@deferjsonwrap
@defer.inlineCallbacks
def render_POST(self, request: Request) -> Generator:
@asyncjsonwrap
async def render_POST(self, request: Request) -> JsonDict:
"""
Register with the Identity Server
"""
Expand All @@ -57,15 +56,13 @@ def render_POST(self, request: Request) -> Generator:
"error": "matrix_server_name must be a valid Matrix server name (IP address or hostname)",
}

result = yield defer.ensureDeferred(
self.client.get_json(
"matrix://%s/_matrix/federation/v1/openid/userinfo?access_token=%s"
% (
matrix_server,
urllib.parse.quote(args["access_token"]),
),
1024 * 5,
)
result = await self.client.get_json(
"matrix://%s/_matrix/federation/v1/openid/userinfo?access_token=%s"
% (
matrix_server,
urllib.parse.quote(args["access_token"]),
),
1024 * 5,
)

if "sub" not in result:
Expand Down Expand Up @@ -106,7 +103,7 @@ def render_POST(self, request: Request) -> Generator:
"error": "The Matrix homeserver returned a MXID belonging to another homeserver",
}

tok = yield issueToken(self.sydent, user_id)
tok = issueToken(self.sydent, user_id)

# XXX: `token` is correct for the spec, but we released with `access_token`
# for a substantial amount of time. Serve both to make spec-compliant clients
Expand Down

0 comments on commit 8ea6117

Please sign in to comment.