Контекст
Логика 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
Примечание
diagnostik_stepik.py по итогу станет тонкой обёрткой поверх oauth_flow.py — только диагностическая логика (сохранение JSON, вывод результата). Это естественная точка для последующего переименования в diagnostics.py.
Контекст
Логика OAuth2-авторизации дублируется между
at_first.pyиdiagnostik_stepik.py:at_first.pydiagnostik_stepik.pyOAuthHandler_make_oauth_handler(фабрика)wait_for_auth_codewait_for_auth_codeauthorize_via_browser/create_user_sessionload_secretsЦель
Создать модуль
oauth_flow.pyс публичным API:После этого
at_first.pyиdiagnostik_stepik.pyимпортируют изoauth_flow.py.TODO
oauth_flow.py— перенести туда общую OAuth-логикуat_first.pydiagnostik_stepik.pyПримечание
diagnostik_stepik.pyпо итогу станет тонкой обёрткой поверхoauth_flow.py— только диагностическая логика (сохранение JSON, вывод результата). Это естественная точка для последующего переименования вdiagnostics.py.