diff --git a/backend/auth/session.py b/backend/auth/session.py index 7510961..50b0209 100644 --- a/backend/auth/session.py +++ b/backend/auth/session.py @@ -6,8 +6,6 @@ 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 @@ -57,3 +55,28 @@ class SessionData(): return self.__access_token +class SessionManager(): + __current_session: SessionData + __instance: "SessionManager" + + def __new__(cls, *args, **kwargs): + if cls.__instance is None: + cls.__instance = super(SessionManager, cls).__new__(cls) + return cls.__instance + + def __init__(self): + self.__current_session = None + + @classmethod + def instance(cls): + return cls.__instance + + def set_session(self, __current_session): + if self.__current_session is not None: + return + + self.__current_session = __current_session + + def get_current_session(self): + return self.__current_session + diff --git a/backend/endpoints/spotify_api.py b/backend/endpoints/spotify_api.py index da44e7b..8c83523 100644 --- a/backend/endpoints/spotify_api.py +++ b/backend/endpoints/spotify_api.py @@ -2,7 +2,7 @@ from fastapi import APIRouter, Request, Depends from fastapi.responses import RedirectResponse import requests import os -from auth.session import SessionData, current_session +from auth.session import SessionData, SessionManager, current_session music_router = APIRouter(prefix="/music") @@ -42,8 +42,7 @@ def callback(code: str): expires_in = token_info.get("expires_in") # Salva access_token in sessione o database per usi futuri - if current_session is None: - current_session = SessionData(access_token, refresh_token, expires_in) + SessionManager.instance().set_session(SessionData(access_token, refresh_token, expires_in)) return {}