summaryrefslogtreecommitdiffstats
path: root/venv/lib/python3.9/site-packages/tls_client/response.py
diff options
context:
space:
mode:
authornoptuno <repollo.marrero@gmail.com>2023-04-28 02:40:47 +0200
committernoptuno <repollo.marrero@gmail.com>2023-04-28 02:40:47 +0200
commit6f6a73987201c9c303047c61389b82ad98b15597 (patch)
treebf67eb590d49979d6740bc1e94b4018df48bce98 /venv/lib/python3.9/site-packages/tls_client/response.py
parentResolved merge conflicts and merged pr_218 into STREAMLIT_CHAT_IMPLEMENTATION (diff)
parentMerging PR_218 openai_rev package with new streamlit chat app (diff)
downloadgpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar.gz
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar.bz2
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar.lz
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar.xz
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.tar.zst
gpt4free-6f6a73987201c9c303047c61389b82ad98b15597.zip
Diffstat (limited to 'venv/lib/python3.9/site-packages/tls_client/response.py')
-rw-r--r--venv/lib/python3.9/site-packages/tls_client/response.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/venv/lib/python3.9/site-packages/tls_client/response.py b/venv/lib/python3.9/site-packages/tls_client/response.py
new file mode 100644
index 00000000..a7bdf609
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/tls_client/response.py
@@ -0,0 +1,79 @@
+from .cookies import cookiejar_from_dict, RequestsCookieJar
+from .structures import CaseInsensitiveDict
+
+from http.cookiejar import CookieJar
+from typing import Union
+import json
+
+
+class Response:
+ """object, which contains the response to an HTTP request."""
+
+ def __init__(self):
+
+ # Reference of URL the response is coming from (especially useful with redirects)
+ self.url = None
+
+ # Integer Code of responded HTTP Status, e.g. 404 or 200.
+ self.status_code = None
+
+ # String of responded HTTP Body.
+ self.text = None
+
+ # Case-insensitive Dictionary of Response Headers.
+ self.headers = CaseInsensitiveDict()
+
+ # A CookieJar of Cookies the server sent back.
+ self.cookies = cookiejar_from_dict({})
+
+ self._content = False
+
+ def __enter__(self):
+ return self
+
+ def __repr__(self):
+ return f"<Response [{self.status_code}]>"
+
+ def json(self, **kwargs):
+ """parse response body to json (dict/list)"""
+ return json.loads(self.text, **kwargs)
+
+ @property
+ def content(self):
+ """Content of the response, in bytes."""
+
+ if self._content is False:
+ if self._content_consumed:
+ raise RuntimeError("The content for this response was already consumed")
+
+ if self.status_code == 0:
+ self._content = None
+ else:
+ self._content = b"".join(self.iter_content(10 * 1024)) or b""
+ self._content_consumed = True
+ return self._content
+
+
+def build_response(res: Union[dict, list], res_cookies: RequestsCookieJar) -> Response:
+ """Builds a Response object """
+ response = Response()
+ # Add target / url
+ response.url = res["target"]
+ # Add status code
+ response.status_code = res["status"]
+ # Add headers
+ response_headers = {}
+ if res["headers"] is not None:
+ for header_key, header_value in res["headers"].items():
+ if len(header_value) == 1:
+ response_headers[header_key] = header_value[0]
+ else:
+ response_headers[header_key] = header_value
+ response.headers = response_headers
+ # Add cookies
+ response.cookies = res_cookies
+ # Add response body
+ response.text = res["body"]
+ # Add response content (bytes)
+ response._content = res["body"].encode()
+ return response