import os import shutil from datetime import datetime, timedelta from .config import settings from .logger import logger class FileManager: def __init__(self): self.storage_path = settings.PDF_STORAGE_PATH os.makedirs(self.storage_path, exist_ok=True) def save_pdf(self, pdf_content: bytes, filename: str) -> str: """Save PDF content to storage.""" try: filepath = os.path.join(self.storage_path, filename) with open(filepath, 'wb') as f: f.write(pdf_content) logger.info(f"PDF saved successfully: {filename}") return filepath except Exception as e: logger.error(f"Error saving PDF {filename}: {str(e)}") raise def cleanup_old_files(self): """Remove PDFs older than MAX_PDF_AGE_DAYS.""" try: cutoff_date = datetime.now() - timedelta(days=settings.MAX_PDF_AGE_DAYS) for filename in os.listdir(self.storage_path): filepath = os.path.join(self.storage_path, filename) if os.path.getctime(filepath) < cutoff_date.timestamp(): os.remove(filepath) logger.info(f"Removed old PDF: {filename}") except Exception as e: logger.error(f"Error cleaning up old files: {str(e)}") raise file_manager = FileManager()