aiohttp
1#!/usr/bin/env python3
2"""Example for aiohttp.web basic server with cookies."""
3
4from pprint import pformat
5from typing import NoReturn
6
7from aiohttp import web
8
9tmpl = """\
10<html>
11<body>
12<a href="/login">Login</a><br/>
13<a href="/logout">Logout</a><br/>
14<pre>{}</pre>
15</body>
16</html>"""
17
18
19async def root(request: web.Request) -> web.StreamResponse:
20resp = web.Response(content_type="text/html")
21resp.text = tmpl.format(pformat(request.cookies))
22return resp
23
24
25async def login(request: web.Request) -> NoReturn:
26exc = web.HTTPFound(location="/")
27exc.set_cookie("AUTH", "secret")
28raise exc
29
30
31async def logout(request: web.Request) -> NoReturn:
32exc = web.HTTPFound(location="/")
33exc.del_cookie("AUTH")
34raise exc
35
36
37def init() -> web.Application:
38app = web.Application()
39app.router.add_get("/", root)
40app.router.add_get("/login", login)
41app.router.add_get("/logout", logout)
42return app
43
44
45web.run_app(init())
46