HTTP Cookies, as a mutable mapping.
| 1077 | |
| 1078 | |
| 1079 | class Cookies(typing.MutableMapping[str, str]): |
| 1080 | """ |
| 1081 | HTTP Cookies, as a mutable mapping. |
| 1082 | """ |
| 1083 | |
| 1084 | def __init__(self, cookies: CookieTypes | None = None) -> None: |
| 1085 | if cookies is None or isinstance(cookies, dict): |
| 1086 | self.jar = CookieJar() |
| 1087 | if isinstance(cookies, dict): |
| 1088 | for key, value in cookies.items(): |
| 1089 | self.set(key, value) |
| 1090 | elif isinstance(cookies, list): |
| 1091 | self.jar = CookieJar() |
| 1092 | for key, value in cookies: |
| 1093 | self.set(key, value) |
| 1094 | elif isinstance(cookies, Cookies): |
| 1095 | self.jar = CookieJar() |
| 1096 | for cookie in cookies.jar: |
| 1097 | self.jar.set_cookie(cookie) |
| 1098 | else: |
| 1099 | self.jar = cookies |
| 1100 | |
| 1101 | def extract_cookies(self, response: Response) -> None: |
| 1102 | """ |
| 1103 | Loads any cookies based on the response `Set-Cookie` headers. |
| 1104 | """ |
| 1105 | urllib_response = self._CookieCompatResponse(response) |
| 1106 | urllib_request = self._CookieCompatRequest(response.request) |
| 1107 | |
| 1108 | self.jar.extract_cookies(urllib_response, urllib_request) # type: ignore |
| 1109 | |
| 1110 | def set_cookie_header(self, request: Request) -> None: |
| 1111 | """ |
| 1112 | Sets an appropriate 'Cookie:' HTTP header on the `Request`. |
| 1113 | """ |
| 1114 | urllib_request = self._CookieCompatRequest(request) |
| 1115 | self.jar.add_cookie_header(urllib_request) |
| 1116 | |
| 1117 | def set(self, name: str, value: str, domain: str = "", path: str = "/") -> None: |
| 1118 | """ |
| 1119 | Set a cookie value by name. May optionally include domain and path. |
| 1120 | """ |
| 1121 | kwargs = { |
| 1122 | "version": 0, |
| 1123 | "name": name, |
| 1124 | "value": value, |
| 1125 | "port": None, |
| 1126 | "port_specified": False, |
| 1127 | "domain": domain, |
| 1128 | "domain_specified": bool(domain), |
| 1129 | "domain_initial_dot": domain.startswith("."), |
| 1130 | "path": path, |
| 1131 | "path_specified": bool(path), |
| 1132 | "secure": False, |
| 1133 | "expires": None, |
| 1134 | "discard": True, |
| 1135 | "comment": None, |
| 1136 | "comment_url": None, |
no outgoing calls
no test coverage detected