35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
# app/api/session.py
|
|
from fastapi import APIRouter, Depends, Request
|
|
from pydantic import BaseModel
|
|
from typing import Optional
|
|
from app.core.security import require_auth
|
|
|
|
router = APIRouter(prefix="/session", tags=["session"])
|
|
|
|
# Глобальная переменная для хранения экземпляра SessionManager
|
|
_session_manager = None
|
|
|
|
def set_session_manager(session_manager):
|
|
"""Устанавливает глобальный экземпляр SessionManager"""
|
|
global _session_manager
|
|
_session_manager = session_manager
|
|
|
|
def get_session_manager():
|
|
"""Возвращает глобальный экземпляр SessionManager"""
|
|
return _session_manager
|
|
|
|
class SessionStatus(BaseModel):
|
|
"""Модель для статуса сессии"""
|
|
active: bool
|
|
time_left: float
|
|
start_time: Optional[str] = None
|
|
end_time: Optional[str] = None
|
|
|
|
@router.get("/status", response_model=SessionStatus)
|
|
async def get_session_status(request: Request, token: str = Depends(require_auth)):
|
|
"""Получить текущий статус сессии"""
|
|
session_manager = get_session_manager()
|
|
if not session_manager:
|
|
return SessionStatus(active=False, time_left=0)
|
|
|
|
return session_manager.get_session_status() |