"""Auth module""" from typing import List from fastapi import Request, HTTPException def load_api_keys(path: str) -> List[str]: """Load API keys from file :param path: Path to API keys file. :return: List[str] """ keys: List[str] = [] with open(path, encoding="utf-8") as f_data: key_file = f_data.readlines() for line in key_file: if line[0] == "#" or len(line) < 3: continue key = line.split(";")[0] keys.append(key) return keys def authorize_client(request: Request, api_keys: List[str]) -> None: """Authorize a client request. Parameters: request (Request): The HTTP request. api_keys (List[str]): List of accepted api_keys. Raises HTTPException with status_code=401 if authorize fail. Returns: None """ if "API-KEY" not in request.headers: raise HTTPException(status_code=401, detail="API-KEY header missing") request_key = request.headers["API-KEY"].strip() if request_key not in api_keys: raise HTTPException(status_code=401, detail="API-KEY header invalid")