def test_non_default_router(loop): router = web.UrlDispatcher() app = web.Application(loop=loop, router=router) assert router is app.router def test_logging(self): logger = mock.Mock() app = web.Application(loop=self.loop) app.logger = logger self.assertIs(app.logger, logger)
def test_add_resource(): router = web.UrlDispatcher() check_length(router.resources(), 0) check_length(router.routes(), 0) with add_resource_context(router) as add_resource: add_resource("/", dummy_handler, head=dummy_handler) check_length(router.resources(), 1) check_length(router.routes(), 2)
def test_add_resource_url_prefix(): router = web.UrlDispatcher() ctx = add_resource_context(router, url_prefix="/api") with ctx as add_resource: add_resource("/", dummy_handler, name="index") add_resource("/posts", get=dummy_handler, post=dummy_handler, name="posts") check_length(router.resources(), 2) check_length(router.routes(), 3) assert str(router["index"].url_for()) == "/api/" assert str(router["posts"].url_for()) == "/api/posts"
def test_add_resource_real_world(): router = web.UrlDispatcher() with add_resource_context(router, "/api/", "api") as add_resource: add_resource("/", dummy_handler, name="index") add_resource("/news", get=dummy_handler, post=dummy_handler, name="news") add_resource( r"/user/{user_id:\d+}", get=dummy_handler, patch=dummy_handler, put=dummy_handler, delete=dummy_handler, name="user", ) check_length(router.resources(), 3) check_length(router.routes(), 7) assert str(router["api.index"].url_for()) == "/api/" assert str(router["api.news"].url_for()) == "/api/news" assert str(router["api.user"].url_for(user_id="1")) == "/api/user/1"
app.add_subapp("/my_subapp", subapp) # similar behavior is possible with `app.add_domain`, but since I don't think we'll have special handling # for any kind of subapps, I have not created a test for this. ## ================================ ## ## Constructing UrlDispatcher first ## ## ================================ ## if True: async def manual_dispatcher_instance(request): # $ requestHandler return web.Response( text="manual_dispatcher_instance") # $ HttpResponse url_dispatcher = web.UrlDispatcher() url_dispatcher.add_get("/manual_dispatcher_instance", manual_dispatcher_instance ) # $ routeSetup="/manual_dispatcher_instance" subapp2 = web.Application(router=url_dispatcher) app.add_subapp("/manual_dispatcher_instance_app", subapp2) ## =========== ## ## Run the app ## ## =========== ## if __name__ == "__main__": print("For auto-reloading server you can use:") print(f"aiohttp-devtools runserver {__file__}") print("after doing `pip install aiohttp-devtools`")
def __init__(self, api): """Initialize the route.""" self.api = api self.router = web.UrlDispatcher() super(ApiRoute, self).__init__('*', None, api.prefix_name)
sockjs.add_endpoint(self, self.sockjs_handler, name="game", prefix="/sockjs/") @aiohttp_jinja2.template('index.html') def index(self, request): return { 'title': 'Whats up ' + request.GET.get('name', 'World'), 'app': self, } def sockjs_handler(self, msg, session): if msg.tp == sockjs.MSG_OPEN: session.manager.broadcast("Someone Joined") self.game.player_joined(session) if msg.tp == sockjs.MSG_MESSAGE: session.manager.broadcast(msg.data) if msg.tp == sockjs.MSG_CLOSED: session.manager.broadcast("Someone Left") logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s') app = GameApplication(router=web.UrlDispatcher(), debug=True) if __name__ == "__main__": run(app, app_uri='game.main:app', reload=True, port=8000, host='0.0.0.0')
def test_non_default_router(self): router = web.UrlDispatcher() app = web.Application(loop=self.loop, router=router) self.assertIs(router, app.router)
def __init__(self, address, port, *, middlewares=(), **kws): self.addr, self.port = address, port self.middlewares = list(middlewares) self.init_kws = kws self.router = web.UrlDispatcher() self.app = self.runner = None