| 35 | |
| 36 | |
| 37 | class ClientRequest: |
| 38 | |
| 39 | GET_METHODS = {hdrs.METH_GET, hdrs.METH_HEAD, hdrs.METH_OPTIONS} |
| 40 | POST_METHODS = {hdrs.METH_PATCH, hdrs.METH_POST, hdrs.METH_PUT} |
| 41 | ALL_METHODS = GET_METHODS.union(POST_METHODS).union( |
| 42 | {hdrs.METH_DELETE, hdrs.METH_TRACE}) |
| 43 | |
| 44 | DEFAULT_HEADERS = { |
| 45 | hdrs.ACCEPT: '*/*', |
| 46 | hdrs.ACCEPT_ENCODING: 'gzip, deflate', |
| 47 | } |
| 48 | |
| 49 | SERVER_SOFTWARE = HttpMessage.SERVER_SOFTWARE |
| 50 | |
| 51 | body = b'' |
| 52 | auth = None |
| 53 | response = None |
| 54 | response_class = None |
| 55 | |
| 56 | _writer = None # async task for streaming data |
| 57 | _continue = None # waiter future for '100 Continue' response |
| 58 | |
| 59 | # N.B. |
| 60 | # Adding __del__ method with self._writer closing doesn't make sense |
| 61 | # because _writer is instance method, thus it keeps a reference to self. |
| 62 | # Until writer has finished finalizer will not be called. |
| 63 | |
| 64 | def __init__(self, method, url, *, |
| 65 | params=None, headers=None, skip_auto_headers=frozenset(), |
| 66 | data=None, cookies=None, |
| 67 | auth=None, encoding='utf-8', |
| 68 | version=aiohttp.HttpVersion11, compress=None, |
| 69 | chunked=None, expect100=False, |
| 70 | loop=None, response_class=None): |
| 71 | |
| 72 | if loop is None: |
| 73 | loop = asyncio.get_event_loop() |
| 74 | |
| 75 | self.url = url |
| 76 | self.method = method.upper() |
| 77 | self.encoding = encoding |
| 78 | self.chunked = chunked |
| 79 | self.compress = compress |
| 80 | self.loop = loop |
| 81 | self.response_class = response_class or ClientResponse |
| 82 | |
| 83 | if loop.get_debug(): |
| 84 | self._source_traceback = traceback.extract_stack(sys._getframe(1)) |
| 85 | |
| 86 | self.update_version(version) |
| 87 | self.update_host(url) |
| 88 | self.update_path(params) |
| 89 | self.update_headers(headers) |
| 90 | self.update_auto_headers(skip_auto_headers) |
| 91 | self.update_cookies(cookies) |
| 92 | self.update_content_encoding() |
| 93 | self.update_auth(auth) |
| 94 |
no outgoing calls