Middleware for blacksheep that allows you to store and access the context data of a request.
Project description
Blacksheep Context
Introduction
Middleware for Blacksheep that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.
Requirements
- Python 3.7+
- Blacksheep 1.0.7+
Installation
$ pip install blacksheep-context
Usage
A complete example shown below.
from blacksheep.server import Application
from blacksheep.messages import Request, Response
from blacksheep.server.responses import json
from blacksheep_context import context
from blacksheep_context.middleware import ContextMiddleware
from blacksheep_context.plugins import BasePlugin, HeaderPlugin
class RequestIdPlugin(HeaderPlugin):
header_key = b'X-Request-Id'
# Every plugin must provide this attribute
context_key = 'request-id'
# Fetches only first value of header, can be False to insert all values of header into context
single_value_header = True
# Also allow you to add some data from context into response
async def enrich_response(self, response: Response) -> None:
response.add_header(b'X-Request-Id', context['request_id'].encode('utf-8'))
class MyCustomPlugin(BasePlugin):
context_key = 'user-data'
# You can customize fetching data from request
async def process_request(self, request: Request):
try:
data = await request.json()
return data.get('user-id')
except Exception:
return None
ctx_middleware = ContextMiddleware(plugins=[RequestIdPlugin(), MyCustomPlugin()])
app_ = Application()
app_.middlewares.append(ctx_middleware)
@app_.router.post('/ctx')
def return_context(request):
assert context.exists() is True
return json(context.copy())
Contributing
This project is absolutely open to contributions so if you have a nice idea, create an issue to let the community discuss it.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for blacksheep_context-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cf8cd3c9208411a769ab611217f197577ac8fcdc4f5fbc43fffee1a84dff86b |
|
MD5 | 435a21a0cf8fc596450acef1c94637aa |
|
BLAKE2b-256 | dcda4bd91075fe8fcfc6e8b53bbb40d8c9681484eccb8be06eec78939be2c78f |