This is an automated email from the ASF dual-hosted git repository. humbedooh pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-ponymail-foal.git
commit 5cff73dcb29fa3ab4f42156e6e704c043e5ecb7f Author: Daniel Gruno <[email protected]> AuthorDate: Sun May 9 19:41:01 2021 +0200 Switch from requests to aiohttp.client This also eases the async aspect of things by not requiring a worker thread. --- server/plugins/oauthGeneric.py | 12 +++++------- server/plugins/oauthGithub.py | 30 ++++++++++++------------------ server/requirements.txt | 1 - 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/server/plugins/oauthGeneric.py b/server/plugins/oauthGeneric.py index 6bf5da1..78b1e74 100644 --- a/server/plugins/oauthGeneric.py +++ b/server/plugins/oauthGeneric.py @@ -1,6 +1,6 @@ # Generic OAuth plugin import re -import requests +import aiohttp.client async def process(formdata, session, server): @@ -10,10 +10,8 @@ async def process(formdata, session, server): oauth_domain = m.group(1) headers = {"User-Agent": "Pony Mail OAuth Agent/0.1"} # This is a synchronous process, so we offload it to an async runner in order to let the main loop continue. - rv = await server.runners.run( - requests.post, formdata["oauth_token"], headers=headers, data=formdata - ) - js = rv.json() - js["oauth_domain"] = oauth_domain - js["authoritative"] = True + async with aiohttp.client.request("POST", formdata["oauth_token"], headers=headers, data=formdata) as rv: + js = await rv.json() + js["oauth_domain"] = oauth_domain + js["authoritative"] = True return js diff --git a/server/plugins/oauthGithub.py b/server/plugins/oauthGithub.py index 91c698a..341c702 100644 --- a/server/plugins/oauthGithub.py +++ b/server/plugins/oauthGithub.py @@ -9,7 +9,7 @@ """ import re -import requests +import aiohttp.client import plugins.server import typing @@ -20,22 +20,16 @@ async def process( formdata["client_id"] = server.config.oauth.github_client_id formdata["client_secret"] = server.config.oauth.github_client_secret - rv = await server.runners.run( - requests.post, "https://github.com/login/oauth/access_token", data=formdata - ) - m = re.search(r"access_token=([a-f0-9]+)", rv.text) + with aiohttp.client.request("POST", "https://github.com/login/oauth/access_token", data=formdata) as rv: + txt = await rv.read() + m = re.search(r"access_token=([a-f0-9]+)", txt) - if m: - rv = await server.runners.run( - requests.get, - "https://api.github.com/user", - headers={"authorization": "token %s" % m.group(1)}, - ) - - js = rv.json() - js["oauth_domain"] = "github.com" - # Full name and email address might not always be available to us. Fake it till you make it. - js["name"] = js["name"] or js["login"] - js["email"] = js["email"] or "%[email protected]" % js["login"] - return js + if m: + with aiohttp.client.request("GET", "https://api.github.com/user", headers={"authorization": "token %s" % m.group(1)}) as rv: + js = rv.json() + js["oauth_domain"] = "github.com" + # Full name and email address might not always be available to us. Fake it till you make it. + js["name"] = js["name"] or js["login"] + js["email"] = js["email"] or "%[email protected]" % js["login"] + return js return None diff --git a/server/requirements.txt b/server/requirements.txt index 5396325..6a0058c 100644 --- a/server/requirements.txt +++ b/server/requirements.txt @@ -7,6 +7,5 @@ elasticsearch~=7.9.1 # AL2.0 certifi~=2020.6.20 # MPL2.0 netaddr~=0.8.0 # BSD, MIT formatflowed~=2.0.0 # Python Software Foundation -requests~=2.24.0 # AL2.0 google-auth~=1.21.1 # AL2.0 aiosmtplib~=1.1.3 # MIT \ No newline at end of file
