ai_giga_tcg/app/services/external_api/tcgplayer/tcgplayer_credentials.py
2025-04-09 21:02:43 -04:00

61 lines
2.0 KiB
Python

import os
import json
from typing import Optional
import logging
from pathlib import Path
logger = logging.getLogger(__name__)
class TCGPlayerCredentials:
_instance = None
_credentials_file = Path.home() / ".tcgplayer" / "credentials.json"
def __new__(cls):
if cls._instance is None:
cls._instance = super(TCGPlayerCredentials, cls).__new__(cls)
cls._instance._initialize()
return cls._instance
def _initialize(self):
"""Initialize the credentials manager"""
self._cookie = None
self._load_credentials()
def _load_credentials(self):
"""Load credentials from the credentials file"""
try:
if self._credentials_file.exists():
with open(self._credentials_file, 'r') as f:
data = json.load(f)
self._cookie = data.get('cookie')
except Exception as e:
logger.error(f"Error loading TCGPlayer credentials: {str(e)}")
def _save_credentials(self):
"""Save credentials to the credentials file"""
try:
# Create directory if it doesn't exist
self._credentials_file.parent.mkdir(parents=True, exist_ok=True)
with open(self._credentials_file, 'w') as f:
json.dump({'cookie': self._cookie}, f)
# Set appropriate file permissions
self._credentials_file.chmod(0o600)
except Exception as e:
logger.error(f"Error saving TCGPlayer credentials: {str(e)}")
def set_cookie(self, cookie: str):
"""Set the authentication cookie"""
self._cookie = cookie
self._save_credentials()
def get_cookie(self) -> Optional[str]:
"""Get the authentication cookie"""
return self._cookie
def clear_credentials(self):
"""Clear stored credentials"""
self._cookie = None
if self._credentials_file.exists():
self._credentials_file.unlink()