about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py')
-rw-r--r--.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py b/.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py
new file mode 100644
index 00000000..9095a470
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/requests_oauthlib/compliance_fixes/slack.py
@@ -0,0 +1,34 @@
+from urllib.parse import urlparse, parse_qs
+
+from oauthlib.common import add_params_to_uri
+
+
+def slack_compliance_fix(session):
+    def _non_compliant_param_name(url, headers, data):
+        # If the user has already specified the token, either in the URL
+        # or in a data dictionary, then there's nothing to do.
+        # If the specified token is different from ``session.access_token``,
+        # we assume the user intends to override the access token.
+        url_query = dict(parse_qs(urlparse(url).query))
+        token = url_query.get("token")
+        if not token and isinstance(data, dict):
+            token = data.get("token")
+
+        if token:
+            # Nothing to do, just return.
+            return url, headers, data
+
+        if not data:
+            data = {"token": session.access_token}
+        elif isinstance(data, dict):
+            data["token"] = session.access_token
+        else:
+            # ``data`` is something other than a dict: maybe a stream,
+            # maybe a file object, maybe something else. We can't easily
+            # modify it, so we'll set the token by modifying the URL instead.
+            token = [("token", session.access_token)]
+            url = add_params_to_uri(url, token)
+        return url, headers, data
+
+    session.register_compliance_hook("protected_request", _non_compliant_param_name)
+    return session