team-9/backend/auth/session.py
2025-08-02 02:59:23 +02:00

59 lines
1.9 KiB
Python

import base64
import datetime
import os
import requests
SPOTIFY_CLIENT_ID = os.getenv("SPOTIFY_CLIENT_ID")
SPOTIFY_CLIENT_SECRET = os.getenv("SPOTIFY_CLIENT_SECRET")
current_session = None
class SessionData():
__access_token: str
__refresh_token: str
__expires_in: int
__creation_date: datetime.datetime
def __init__(self, __access_token, __refresh_token, __expires_in, __creation_date):
self.__access_token = __access_token
self.__refresh_token = __refresh_token
self.__expires_in = __expires_in
self.__creation_date = __creation_date
def nearly_expired(self, before=30):
delta_time = datetime.datetime.now() - self.__creation_date - before
return delta_time.seconds > self.__expires_in
def is_expired(self):
return self.nearly_expired(0)
def refresh(self):
token_url = "https://accounts.spotify.com/api/token"
headers = {
"Authorization": "Basic " + base64.encode(SPOTIFY_CLIENT_ID + ":" + SPOTIFY_CLIENT_SECRET),
"Content-Type": "application/json"
}
data = {
"refresh_token": self.__refresh_token,
"grant_type": "refresh_token"
}
try:
response = requests.post(token_url, json=data, headers=headers)
response.raise_for_status()
result = response.json()
# Assumendo che la risposta contenga questi campi
self.__access_token = result["access_token"]
self.__refresh_token = result.get("refresh_token", self.__refresh_token)
self.__expires_in = result["expires_in"]
self.__creation_date = datetime.datetime.now()
except requests.exceptions.RequestException as e:
print(f"Errore durante il refresh del token: {e}")
@property
def access_tokens(self):
return self.__access_token