1
0
Fork 0

refactor: harden ChatGPT token lifecycle with startup recovery, single-writer locking, and faster auth flow

This commit is contained in:
Arthur K. 2026-03-01 20:58:24 +03:00
parent 71d1050adb
commit 533e382e0e
Signed by: wzray
GPG key ID: B97F30FDC4636357
9 changed files with 313 additions and 178 deletions

View file

@ -3,9 +3,12 @@ import time
import os
import aiohttp
from pathlib import Path
import logging
from providers.base import ProviderTokens
logger = logging.getLogger(__name__)
DATA_DIR = Path(os.environ.get("DATA_DIR", "./data"))
TOKENS_FILE = DATA_DIR / "chatgpt_tokens.json"
@ -66,17 +69,17 @@ async def refresh_tokens(refresh_token: str) -> ProviderTokens | None:
async def get_valid_tokens() -> ProviderTokens | None:
tokens = load_tokens()
if not tokens:
print("No tokens found")
logger.info("No tokens found")
return None
if tokens.is_expired:
print("Token expired, refreshing...")
logger.info("Token expired, refreshing...")
if not tokens.refresh_token:
print("No refresh token available")
logger.info("No refresh token available")
return None
new_tokens = await refresh_tokens(tokens.refresh_token)
if not new_tokens:
print("Failed to refresh token")
logger.warning("Failed to refresh token")
return None
save_tokens(new_tokens)
return new_tokens