aio-libs / aio-libs/aiohttp

How to override HTTP CONNECT

Abierto
#4,571 9 comentarios 0 reacciones 1 asignado Reclamado por @asvetlov Ver en GitHub
bug enhancement
Lenguaje dominante
Python
Estrellas
16.5k
Forks
2.4k
Merge medio
17 h 22 min
PR fusionados (30 d)
212

Descripción

🐞 **Describe the bug**
I implement HTTP/HTTPS Proxy based on aiohttp and I need override HTTP connect method in subclass of aiohttp.web.View such as this guide

https://aiohttp.readthedocs.io/en/latest/web_reference.html

Overridable coroutine methods: connect(), delete(), get(), head(), options(), patch(), post(), put(), trace().

In this sample code, HTTP connect handler never called

💡 **To Reproduce**
```python
import asyncio

from aiohttp import web, hdrs
from aiohttp.log import logging as logger

class HttpProxyView(web.View):

async def get(self):
logger.debug('Handle {}'.format(self.request.path))
name = self.request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)

async def connect(self):
logger.debug('Start CONNECT to %s', self.request.path)

async def run_app(app, host, port):
runner = web.AppRunner(app)
await runner.setup()

site = web.TCPSite(runner, host, port)
await site.start()

while True:
await asyncio.sleep(3600)

if __name__ == '__main__':
logger.basicConfig(level=logger.DEBUG)

app = web.Application()
app.add_routes([
web.view('/', HttpProxyView),
web.view('/{name:.*}', HttpProxyView)])

loop = asyncio.get_event_loop()
try:
loop.run_until_complete(run_app(app, host='0.0.0.0', port=8080))
except KeyboardInterrupt:
pass
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.