Async version of parse() - reads data then uses sync parsing.
(self)
| 85 | return req |
| 86 | |
| 87 | async def _async_parse(self): |
| 88 | """Async version of parse() - reads data then uses sync parsing.""" |
| 89 | # Read 4-byte header |
| 90 | header = await self._async_read_exact(4) |
| 91 | if len(header) < 4: |
| 92 | raise InvalidUWSGIHeader("incomplete header") |
| 93 | |
| 94 | self.modifier1 = header[0] |
| 95 | datasize = int.from_bytes(header[1:3], 'little') |
| 96 | self.modifier2 = header[3] |
| 97 | |
| 98 | if self.modifier1 != 0: |
| 99 | raise UnsupportedModifier(self.modifier1) |
| 100 | |
| 101 | # Read vars block |
| 102 | if datasize > 0: |
| 103 | vars_data = await self._async_read_exact(datasize) |
| 104 | if len(vars_data) < datasize: |
| 105 | raise InvalidUWSGIHeader("incomplete vars block") |
| 106 | self._parse_vars(vars_data) # Reuse sync method |
| 107 | |
| 108 | self._extract_request_info() # Reuse sync method |
| 109 | self._set_body_reader() |
| 110 | |
| 111 | async def _async_read_exact(self, size): |
| 112 | """Read exactly size bytes asynchronously.""" |
no test coverage detected