/
ivanstrike
/
tasker
Обзор
Документация
Войти
/
ivanstrike
/
tasker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python_Sklyarenko/Lab1/app/routers/internal.py
23 строки
977 B
ivanstrike
Lab3
13 дек 2025, 11:15
13 дек 2025, 11:15
15c0fa5
Код
Авторство
О чём код?
from fastapi import APIRouter, Depends, HTTPException, Request import os from sqlalchemy.orm import Session from ..database import get_db from ..models import User, Project, Task router = APIRouter(prefix="/internal", tags=["internal"], include_in_schema=False) INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "dev-internal") def verify_internal(request: Request): key = request.headers.get("X-Internal-Key") if key != INTERNAL_API_KEY and request.client and request.client.host not in {"127.0.0.1", "localhost"}: raise HTTPException(status_code=403, detail="Forbidden (internal)") return True @router.get("/metrics", dependencies=[Depends(verify_internal)]) def metrics(db: Session = Depends(get_db)): """Simple internal metrics endpoint. Hidden from public schema.""" users = db.query(User).count() projects = db.query(Project).count() tasks = db.query(Task).count() return {"users": users, "projects": projects, "tasks": tasks}