Spaces:
Runtime error
Runtime error
File size: 1,793 Bytes
a9ee289 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
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({})
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)
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"]
return response
|