def test_POST_StreamReader(self): with run_server(self.loop, router=Functional) as httpd: url = httpd.url('method', 'post') here = os.path.dirname(__file__) fname = os.path.join(here, 'sample.key') with open(fname, 'rb') as f: data = f.read() stream = aiohttp.StreamReader(loop=self.loop) stream.feed_data(data) stream.feed_eof() r = self.loop.run_until_complete( client.request('post', url, data=stream, headers={'Content-Length': str(len(data))}, loop=self.loop)) content = self.loop.run_until_complete(r.json()) r.close() self.assertEqual(str(len(data)), content['headers']['Content-Length'])
def test_POST_StreamReader(fname, loop, test_client): @asyncio.coroutine def handler(request): assert request.content_type == 'application/octet-stream' content = yield from request.read() with fname.open('rb') as f: expected = f.read() assert request.content_length == str(len(expected)) assert content == expected return web.HTTPOk() app = web.Application(loop=loop) app.router.add_post('/', handler) client = yield from test_client(app) with fname.open() as f: data = f.read() stream = aiohttp.StreamReader(loop=loop) stream.feed_data(data) stream.feed_eof() resp = yield from client.post('/', data=stream, headers={'Content-Length': str(len(data))}) assert 200 == resp.status resp.close()
def handle(environ, start_response): req = webob.Request(environ) vers = aiohttp.HttpVersion10 if req.http_version == 'HTTP/1.0' else aiohttp.HttpVersion11 message = aiohttp.RawRequestMessage(req.method, req.path_qs, vers, aiohttp.CIMultiDict(req.headers), req.headers, False, False) payload = aiohttp.StreamReader(loop=loop_) payload.feed_data(req.body) payload.feed_eof() factory = aiohttp.web.RequestHandlerFactory(app_, app_.router, loop=loop_, keep_alive_on=False) handler = factory() handler.transport = io.BytesIO() handler.transport.is_closing = lambda: False handler.transport._conn_lost = 0 handler.transport.get_extra_info = lambda s: ('127.0.0.1', 80) handler.writer = aiohttp.parsers.StreamWriter(handler.transport, handler, handler.reader, handler._loop) coro = handler.handle_request(message, payload) if loop_.is_running(): raise RuntimeError( 'Client cannot start durring another coroutine is running.') loop_.run_until_complete(coro) handler.transport.seek(9) res = webob.Response.from_file(handler.transport) start_response(res.status, res.headerlist) return res.app_iter
async def test_parse_chunked_payload_split_end2(self, protocol) -> None: out = aiohttp.StreamReader(protocol, 2**16, loop=None) p = HttpPayloadParser(out, chunked=True) p.feed_data(b'4\r\nasdf\r\n0\r\n\r') p.feed_data(b'\n') assert out.is_eof() assert b'asdf' == b''.join(out._buffer)
async def test_parse_chunked_payload_split_end(self, protocol) -> None: out = aiohttp.StreamReader(protocol, 2**16, loop=None) p = HttpPayloadParser(out, chunked=True) p.feed_data(b"4\r\nasdf\r\n0\r\n") p.feed_data(b"\r\n") assert out.is_eof() assert b"asdf" == b"".join(out._buffer)
async def test_parse_chunked_payload_split_end_trailers4( self, protocol: Any) -> None: out = aiohttp.StreamReader(protocol, 2**16, loop=None) p = HttpPayloadParser(out, chunked=True) p.feed_data(b"4\r\nasdf\r\n0\r\n" b"C") p.feed_data(b"ontent-MD5: 912ec803b2ce49e4a541068d495ab570\r\n\r\n") assert out.is_eof() assert b"asdf" == b"".join(out._buffer)
async def test_parse_chunked_payload_split_end_trailers3(self, protocol) -> None: out = aiohttp.StreamReader(protocol, 2**16, loop=None) p = HttpPayloadParser(out, chunked=True) p.feed_data(b'4\r\nasdf\r\n0\r\nContent-MD5: ') p.feed_data(b'912ec803b2ce49e4a541068d495ab570\r\n\r\n') assert out.is_eof() assert b'asdf' == b''.join(out._buffer)
def TestOneInput(data): loop = asyncio.get_event_loop() pr = BaseProtocol(loop) out = aiohttp.StreamReader(pr, 2**16, loop=None) h_p = aiohttp.http_parser.HttpPayloadParser(out, loop, 32768) try: h_p.feed_data(data) except aiohttp.http_exceptions.HttpProcessingError: None
def function125(self): with function147(self.attribute2267, router=Class273) as var4426: var1019 = var4426.var1019('method', 'post') var1508 = os.path.dirname(__file__) var2235 = os.path.join(var1508, 'sample.key') with open(var2235, 'rb') as var122: var2880 = var122.read() var1769 = aiohttp.StreamReader(loop=self.attribute2267) var1769.feed_data(var2880) var1769.feed_eof() var610 = client.ClientSession(loop=self.attribute2267) var2959 = self.attribute2267.run_until_complete(var610.request('post', var1019, data=var1769, headers={'Content-Length': str(len(var2880)), })) var3252 = self.attribute2267.run_until_complete(var2959.json()) var2959.close() var610.close() self.assertEqual(str(len(var2880)), var3252['headers']['Content-Length'])
def __init__(self, status): self.status = status self.content = aiohttp.StreamReader( protocol=asynctest.Mock(), limit=2**16 )