61 lines
2.0 KiB
Python
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() |