diff options
Diffstat (limited to 'third_party/python/aiohttp/examples/web_cookies.py')
-rwxr-xr-x | third_party/python/aiohttp/examples/web_cookies.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/third_party/python/aiohttp/examples/web_cookies.py b/third_party/python/aiohttp/examples/web_cookies.py new file mode 100755 index 0000000000..c028d19b55 --- /dev/null +++ b/third_party/python/aiohttp/examples/web_cookies.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Example for aiohttp.web basic server with cookies.""" + +from pprint import pformat +from typing import NoReturn + +from aiohttp import web + +tmpl = """\ +<html> + <body> + <a href="/login">Login</a><br/> + <a href="/logout">Logout</a><br/> + <pre>{}</pre> + </body> +</html>""" + + +async def root(request): + resp = web.Response(content_type="text/html") + resp.text = tmpl.format(pformat(request.cookies)) + return resp + + +async def login(request: web.Request) -> NoReturn: + exc = web.HTTPFound(location="/") + exc.set_cookie("AUTH", "secret") + raise exc + + +async def logout(request: web.Request) -> NoReturn: + exc = web.HTTPFound(location="/") + exc.del_cookie("AUTH") + raise exc + + +def init(): + app = web.Application() + app.router.add_get("/", root) + app.router.add_get("/login", login) + app.router.add_get("/logout", logout) + return app + + +web.run_app(init()) |