storage.session_storage

class storage.session_storage.SessionStorage(file_path: str = '/etc/gonets/sessions.json')[source]

Bases: object

Хранилище сессий пользователей в JSON-файле.

Назначение:

Лёгкое файловое хранилище для сессионных токенов, сопоставленных с client_id (например, IP клиента). Предназначено для сред без БД и persistent-кэшей. Обеспечивает базовые операции и авто-очистку протухших сессий.

Формат данных:
{
“sessions”: {
“<session_id>”: {

“username”: str, “token”: str, “client_id”: str, “created_at”: ISO8601 str, “expiry”: ISO8601 str

}

}

Политика TTL:

Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается clean_expired_sessions() для удаления протухших записей.

Ограничения:
  • Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.

  • Размещение по умолчанию /etc/gonets/sessions.json требует прав на запись.

clean_expired_sessions()[source]

Удаляет все истекшие сессии из хранилища.

Raises:

Exception: Если произошла ошибка при чтении или записи данных.

Note:

Проверяет срок действия каждой сессии и удаляет те, что истекли, записывая обновлённые данные.

create_session(username: str, token: str, client_id: str) → str[source]

Создаёт новую сессию и возвращает уникальный session_id.

Args:

username (str): Имя пользователя, для которого создаётся сессия. token (str): Токен аутентификации. client_id (str): Идентификатор клиента.

Returns:

str: Уникальный идентификатор сессии (session_id).

Raises:

Exception: Если произошла ошибка при создании или записи сессии.

Note:

Удаляет истекшие сессии перед созданием новой и устанавливает срок действия 30 минут.

delete_session(session_id: str)[source]

Удаляет сессию по указанному session_id.

Args:

session_id (str): Уникальный идентификатор сессии.

Raises:

Exception: Если произошла ошибка при чтении или записи данных.

Note:

Очищает истекшие сессии перед удалением.

get_latest_session(client_id: str) → Dict | None[source]

Получает последнюю активную сессию для указанного client_id.

Args:

client_id (str): Идентификатор клиента.

Returns:
Optional[Dict]: Словарь с данными последней активной сессии, включая

“session_id”, или None, если сессия не найдена.

Raises:

Exception: Если произошла ошибка при чтении или обработке данных.

Note:

Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.