dialogflowAPI / core /token_manager.py
OnlyBiggg
'refactor'
5564ecb
raw
history blame
823 Bytes
import os
import time
import httpx
from core.conf import settings
_token_cache = {
"access_token": None,
"expires_at": 0,
}
API_ACCESS_TOKEN = settings.API_ACCESS_TOKEN
async def get_access_token() -> str:
current_time = int(time.time())
if _token_cache["access_token"] is None or current_time >= _token_cache["expires_at"]:
await refresh_access_token()
return _token_cache["access_token"]
async def refresh_access_token():
async with httpx.AsyncClient() as client:
response = await client.post(url=API_ACCESS_TOKEN)
response.raise_for_status()
data = response.json()
access_token = data.get("data")
expires_in = 3600
_token_cache["access_token"] = access_token
_token_cache["expires_at"] = int(time.time()) + expires_in - 60