Source code for prozorro_sale.tools.middlewares

import uuid

from aiohttp import web

from prozorro_sale.tools.context_variables import REQUEST_ID, PROCEDURE_ID, AUCTION_ID


[docs]@web.middleware async def request_id_middleware(request, handler, *args, **kwargs): """ middleware for the func views to set context variable REQUEST_ID and update header """ REQUEST_ID.set(request.headers.get('X-Request-ID', str(uuid.uuid4()))) response = await handler(request, *args, **kwargs) try: response.headers['X-Request-ID'] = REQUEST_ID.get('unknown') except (AttributeError, KeyError): ... return response
[docs]@web.middleware async def procedure_id_middleware(request: web.Request, handler, *args, **kwargs) -> web.Response: """ middleware for the func views to set context variable PROCEDURE_ID """ PROCEDURE_ID.set(request.match_info.get('procedure_id')) return await handler(request, *args, **kwargs)
[docs]@web.middleware async def auction_id_middleware(request: web.Request, handler, *args, **kwargs) -> web.Response: """ middleware for the func views to set context variable AUCTION_ID """ AUCTION_ID.set(request.match_info.get('auction_id')) return await handler(request, *args, **kwargs)
[docs]@web.middleware async def request_unpack_params(request, handler, *args, **kwargs): """ middleware for the func views to pass variables from url as kwargs """ if 'swagger' in request.path: return await handler(request, *args, **kwargs) return await handler(request, *args, **request.match_info, **kwargs)