| from typing import Optional |
| from urllib.parse import urlsplit, parse_qsl |
| import json |
| |
| |
| def session_established(session): |
| path: Optional[bytes] = None |
| for key, value in session.request_headers: |
| if key == b':path': |
| path = value |
| assert path is not None |
| qs = dict(parse_qsl(urlsplit(path).query)) |
| token = qs[b'token'] |
| if token is None: |
| raise Exception('token is missing, path = {}'.format(path)) |
| |
| stream_id = session.create_unidirectional_stream() |
| data = json.dumps(session.stash.take(key=token) or {}).encode('utf-8') |
| session.send_stream_data(stream_id, data, end_stream=True) |