Files
script.service.ultimate/lib/streaming_providers/providers/auth_context.py
T

82 lines
2.8 KiB
Python
Raw Normal View History

2025-12-19 23:17:20 +01:00
# streaming_providers/providers/auth_context.py
2026-01-06 16:41:03 +01:00
from typing import Any, Dict, List, Optional
2025-12-19 23:17:20 +01:00
class AuthContext:
"""
Context passed to providers for accessing shared services.
Simple wrapper around SettingsManager.
"""
def __init__(self, settings_manager):
self.settings = settings_manager
self.session = settings_manager.session_manager if settings_manager else None
2026-01-16 12:24:41 +01:00
self.credentials = settings_manager.credential_manager if settings_manager else None
2025-12-19 23:17:20 +01:00
def get_credentials(self, provider_name: str, country: str = None) -> Optional[Any]:
"""Get credentials for provider"""
if self.settings:
return self.settings.get_provider_credentials(provider_name, country)
return None
2026-01-06 16:41:03 +01:00
def get_token(
self, provider_name: str, scope: str = None, country: str = None
) -> Optional[Dict[str, Any]]:
2025-12-20 14:55:15 +01:00
"""
Get token for provider (scoped or root-level).
Now with fallback: tries with country first, then without country
for backward compatibility with tokens stored without country nesting.
Args:
provider_name: Provider name
scope: Optional token scope
country: Optional country code
Returns:
Token data dictionary or None
"""
2025-12-19 23:17:20 +01:00
if not self.session:
return None
2025-12-20 14:55:15 +01:00
# Try with country first (new format)
if country:
if scope:
token = self.session.load_scoped_token(provider_name, scope, country)
else:
token = self.session.load_token_data(provider_name, country)
if token:
return token
# Fallback: try without country (legacy format)
# This handles tokens stored as {"provider": {...}} instead of {"provider": {"country": {...}}}
if scope:
token = self.session.load_scoped_token(provider_name, scope, None)
else:
token = self.session.load_token_data(provider_name, None)
return token
# No country specified - direct lookup
2025-12-19 23:17:20 +01:00
if scope:
2025-12-20 14:55:15 +01:00
return self.session.load_scoped_token(provider_name, scope, None)
2025-12-19 23:17:20 +01:00
else:
2025-12-20 14:55:15 +01:00
return self.session.load_token_data(provider_name, None)
2025-12-19 23:17:20 +01:00
def get_all_scopes(self, provider_name: str, country: str = None) -> List[str]:
"""Get all token scopes for provider"""
if not self.session:
return []
2026-01-06 16:41:03 +01:00
if hasattr(self.session, "list_scoped_tokens"):
2025-12-19 23:17:20 +01:00
return self.session.list_scoped_tokens(provider_name, country)
return []
def is_token_expired(self, token_data):
"""Check if token is expired"""
2026-01-06 16:41:03 +01:00
if self.session and hasattr(self.session, "_is_token_expired"):
2025-12-19 23:17:20 +01:00
return self.session._is_token_expired(token_data)
2026-01-06 16:41:03 +01:00
return True # Conservative default