diff options
Diffstat (limited to 'game/python-extra/requests_oauthlib/compliance_fixes/plentymarkets.py')
-rw-r--r-- | game/python-extra/requests_oauthlib/compliance_fixes/plentymarkets.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/game/python-extra/requests_oauthlib/compliance_fixes/plentymarkets.py b/game/python-extra/requests_oauthlib/compliance_fixes/plentymarkets.py new file mode 100644 index 0000000..9f605f0 --- /dev/null +++ b/game/python-extra/requests_oauthlib/compliance_fixes/plentymarkets.py @@ -0,0 +1,29 @@ +from json import dumps, loads +import re + +from oauthlib.common import to_unicode + + +def plentymarkets_compliance_fix(session): + def _to_snake_case(n): + return re.sub("(.)([A-Z][a-z]+)", r"\1_\2", n).lower() + + def _compliance_fix(r): + # Plenty returns the Token in CamelCase instead of _ + if ( + "application/json" in r.headers.get("content-type", {}) + and r.status_code == 200 + ): + token = loads(r.text) + else: + return r + + fixed_token = {} + for k, v in token.items(): + fixed_token[_to_snake_case(k)] = v + + r._content = to_unicode(dumps(fixed_token)).encode("UTF-8") + return r + + session.register_compliance_hook("access_token_response", _compliance_fix) + return session |