From ebc9718117359a6123d3f681fe108f0c4b2dab1d Mon Sep 17 00:00:00 2001 From: Labrys of Knossos Date: Mon, 28 Nov 2022 19:33:12 -0500 Subject: [PATCH] Update vendored requests-oauthlib to 1.3.1 --- libs/common/bin/chardetect.exe | Bin 108383 -> 108383 bytes libs/common/requests_oauthlib/__init__.py | 2 +- .../compliance_fixes/__init__.py | 2 +- .../compliance_fixes/ebay.py | 23 ++++++++++++++++++ .../compliance_fixes/linkedin.py | 21 ---------------- .../requests_oauthlib/oauth1_session.py | 2 +- .../requests_oauthlib/oauth2_session.py | 6 +++++ 7 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 libs/common/requests_oauthlib/compliance_fixes/ebay.py delete mode 100644 libs/common/requests_oauthlib/compliance_fixes/linkedin.py diff --git a/libs/common/bin/chardetect.exe b/libs/common/bin/chardetect.exe index 193b49855af679b788efea9ecd2fc5e4900ccccb..f93a4a82c2b5e499858de8dd7a0422f0eb9ce115 100644 GIT binary patch delta 27 hcmcbAj_v+AwuUW?>dTn^&YrHhjPWywmRru~2mrit43z)? delta 27 hcmcbAj_v+AwuUW?>dTnE&YZ5fjPWywmRru~2mrg941oXu diff --git a/libs/common/requests_oauthlib/__init__.py b/libs/common/requests_oauthlib/__init__.py index a4e03a4e..0d3e49f9 100644 --- a/libs/common/requests_oauthlib/__init__.py +++ b/libs/common/requests_oauthlib/__init__.py @@ -5,7 +5,7 @@ from .oauth1_session import OAuth1Session from .oauth2_auth import OAuth2 from .oauth2_session import OAuth2Session, TokenUpdated -__version__ = "1.3.0" +__version__ = "1.3.1" import requests diff --git a/libs/common/requests_oauthlib/compliance_fixes/__init__.py b/libs/common/requests_oauthlib/compliance_fixes/__init__.py index 02fa5120..0e8e3ac8 100644 --- a/libs/common/requests_oauthlib/compliance_fixes/__init__.py +++ b/libs/common/requests_oauthlib/compliance_fixes/__init__.py @@ -2,9 +2,9 @@ from __future__ import absolute_import from .facebook import facebook_compliance_fix from .fitbit import fitbit_compliance_fix -from .linkedin import linkedin_compliance_fix from .slack import slack_compliance_fix from .instagram import instagram_compliance_fix from .mailchimp import mailchimp_compliance_fix from .weibo import weibo_compliance_fix from .plentymarkets import plentymarkets_compliance_fix +from .ebay import ebay_compliance_fix diff --git a/libs/common/requests_oauthlib/compliance_fixes/ebay.py b/libs/common/requests_oauthlib/compliance_fixes/ebay.py new file mode 100644 index 00000000..4aa423b3 --- /dev/null +++ b/libs/common/requests_oauthlib/compliance_fixes/ebay.py @@ -0,0 +1,23 @@ +import json +from oauthlib.common import to_unicode + + +def ebay_compliance_fix(session): + def _compliance_fix(response): + token = json.loads(response.text) + + # eBay responds with non-compliant token types. + # https://developer.ebay.com/api-docs/static/oauth-client-credentials-grant.html + # https://developer.ebay.com/api-docs/static/oauth-auth-code-grant-request.html + # Modify these to be "Bearer". + if token.get("token_type") in ["Application Access Token", "User Access Token"]: + token["token_type"] = "Bearer" + fixed_token = json.dumps(token) + response._content = to_unicode(fixed_token).encode("utf-8") + + return response + + session.register_compliance_hook("access_token_response", _compliance_fix) + session.register_compliance_hook("refresh_token_response", _compliance_fix) + + return session diff --git a/libs/common/requests_oauthlib/compliance_fixes/linkedin.py b/libs/common/requests_oauthlib/compliance_fixes/linkedin.py deleted file mode 100644 index cd5b4ace..00000000 --- a/libs/common/requests_oauthlib/compliance_fixes/linkedin.py +++ /dev/null @@ -1,21 +0,0 @@ -from json import loads, dumps - -from oauthlib.common import add_params_to_uri, to_unicode - - -def linkedin_compliance_fix(session): - def _missing_token_type(r): - token = loads(r.text) - token["token_type"] = "Bearer" - r._content = to_unicode(dumps(token)).encode("UTF-8") - return r - - def _non_compliant_param_name(url, headers, data): - token = [("oauth2_access_token", session.access_token)] - url = add_params_to_uri(url, token) - return url, headers, data - - session._client.default_token_placement = "query" - session.register_compliance_hook("access_token_response", _missing_token_type) - session.register_compliance_hook("protected_request", _non_compliant_param_name) - return session diff --git a/libs/common/requests_oauthlib/oauth1_session.py b/libs/common/requests_oauthlib/oauth1_session.py index aa17f28f..88f2853c 100644 --- a/libs/common/requests_oauthlib/oauth1_session.py +++ b/libs/common/requests_oauthlib/oauth1_session.py @@ -268,7 +268,7 @@ class OAuth1Session(requests.Session): :param url: The request token endpoint URL. :param realm: A list of realms to request access to. :param \*\*request_kwargs: Optional arguments passed to ''post'' - function in ''requests.Session'' + function in ''requests.Session'' :returns: The response in dict format. Note that a previously set callback_uri will be reset for your diff --git a/libs/common/requests_oauthlib/oauth2_session.py b/libs/common/requests_oauthlib/oauth2_session.py index eea4ac6f..db446808 100644 --- a/libs/common/requests_oauthlib/oauth2_session.py +++ b/libs/common/requests_oauthlib/oauth2_session.py @@ -189,6 +189,7 @@ class OAuth2Session(requests.Session): proxies=None, include_client_id=None, client_secret=None, + cert=None, **kwargs ): """Generic method for fetching an access token from the token endpoint. @@ -229,6 +230,10 @@ class OAuth2Session(requests.Session): `auth` tuple. If the value is `None`, it will be omitted from the request, however if the value is an empty string, an empty string will be sent. + :param cert: Client certificate to send for OAuth 2.0 Mutual-TLS Client + Authentication (draft-ietf-oauth-mtls). Can either be the + path of a file containing the private key and certificate or + a tuple of two filenames for certificate and key. :param kwargs: Extra parameters to include in the token request. :return: A token dict """ @@ -341,6 +346,7 @@ class OAuth2Session(requests.Session): auth=auth, verify=verify, proxies=proxies, + cert=cert, **request_kwargs )