File size: 1,274 Bytes
32e1e2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os
import json
import bittensor as bt
from aiohttp.web import Response

EXPECTED_ACCESS_KEY = os.environ.get('EXPECTED_ACCESS_KEY')

async def api_key_middleware(app, handler):
    async def middleware_handler(request):
        # Logging the request
        bt.logging.info(f"Handling {request.method} request to {request.path}")

        # Check access key
        access_key = request.headers.get("api_key")
        if EXPECTED_ACCESS_KEY is not None and access_key != EXPECTED_ACCESS_KEY:
            bt.logging.error(f'Invalid access key: {access_key}')
            return Response(status=401, reason="Invalid access key")

        # Continue to the next handler if the API key is valid
        return await handler(request)
    return middleware_handler

async def json_parsing_middleware(app, handler):
    async def middleware_handler(request):
        try:
            # Parsing JSON data from the request
            request['data'] = await request.json()
        except json.JSONDecodeError as e:
            bt.logging.error(f'Invalid JSON data: {str(e)}')
            return Response(status=400, text="Invalid JSON")

        # Continue to the next handler if JSON is successfully parsed
        return await handler(request)
    return middleware_handler