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
File details
Details for the file blacksheep-context-0.1.0.tar.gz
.
File metadata
- Download URL: blacksheep-context-0.1.0.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.10 Linux/5.8.0-1033-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11ace9e01694a3bc0a7431de49baa0f42899e508aa04d337fe02805588deec85 |
|
MD5 | 5d0ad78cb0b9bfb5caccea79a1fbf662 |
|
BLAKE2b-256 | 8f41473de026450665f9501062abfeb96cf77d77c922e20d2747cfb2b38aa5b0 |
File details
Details for the file blacksheep_context-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: blacksheep_context-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.10 Linux/5.8.0-1033-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cf8cd3c9208411a769ab611217f197577ac8fcdc4f5fbc43fffee1a84dff86b |
|
MD5 | 435a21a0cf8fc596450acef1c94637aa |
|
BLAKE2b-256 | dcda4bd91075fe8fcfc6e8b53bbb40d8c9681484eccb8be06eec78939be2c78f |