storage.session_storage

class storage.session_storage.SessionStorage(file_path: str | None = None)[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.

Parameters:
  • username (str) – Имя пользователя, для которого создаётся сессия.

  • token (str) – Токен аутентификации.

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

Returns:

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

Return type:

str

Raises:

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

Note

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

delete_session(session_id: str)[source]

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

Parameters:

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

Raises:

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

Note

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

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

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

Parameters:

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

Returns:

Словарь с данными последней активной сессии, включая

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

Return type:

Optional[Dict]

Raises:

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

Note

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