Skip to content

refactor: выделить OAuth-логику в отдельный модуль oauth_flow.py #1

Description

@ArtVsMark

Контекст

Логика OAuth2-авторизации дублируется между at_first.py и diagnostik_stepik.py:

Функция/класс at_first.py diagnostik_stepik.py
OAuthHandler _make_oauth_handler (фабрика) инлайн-класс в wait_for_auth_code
wait_for_auth_code
authorize_via_browser / create_user_session
load_secrets

Цель

Создать модуль oauth_flow.py с публичным API:

# oauth_flow.py

def make_oauth_handler(auth_data: dict, path: str) -> type[BaseHTTPRequestHandler]: ...
def wait_for_auth_code(host: str, port: int, path: str, timeout: int = 120) -> str: ...
def authorize_and_get_token(client_id: str, client_secret: str, redirect_uri: str) -> dict: ...
def load_secrets(secrets_path: pathlib.Path) -> tuple[str, str, str]: ...

После этого at_first.py и diagnostik_stepik.py импортируют из oauth_flow.py.

TODO

  • Создать oauth_flow.py — перенести туда общую OAuth-логику
  • Убрать дублирование в at_first.py
  • Убрать дублирование в diagnostik_stepik.py
  • Полные type hints + docstring (mypy-ready)
  • Убедиться, что тесты не сломаны

Примечание

diagnostik_stepik.py по итогу станет тонкой обёрткой поверх oauth_flow.py — только диагностическая логика (сохранение JSON, вывод результата). Это естественная точка для последующего переименования в diagnostics.py.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions