#!/usr/bin/env python3
"""
Session Management Utility for eBay Login
"""
import os
import json
from datetime import datetime

class SessionManager:
    def __init__(self, browser_data_dir="./browser-data"):
        self.browser_data_dir = browser_data_dir
        self.cookies_file = f"{browser_data_dir}/cookies.json"
        self.session_file = f"{browser_data_dir}/session.json"
        self.storage_state_file = f"{browser_data_dir}/ebay_state.json"

    def check_session_files(self):
        """Check which session files exist"""
        files = {
            "Storage State": self.storage_state_file,
            "Cookies": self.cookies_file,
            "Session Info": self.session_file
        }

        print("📁 Session Files Status:")
        print("=" * 40)

        for name, filepath in files.items():
            if os.path.exists(filepath):
                size = os.path.getsize(filepath)
                mtime = datetime.fromtimestamp(os.path.getmtime(filepath))
                print(f"✅ {name}: EXISTS ({size} bytes, modified: {mtime.strftime('%Y-%m-%d %H:%M:%S')})")
            else:
                print(f"❌ {name}: NOT FOUND")

        return any(os.path.exists(f) for f in files.values())

    def view_session_info(self):
        """Display session information"""
        if os.path.exists(self.session_file):
            try:
                with open(self.session_file, 'r') as f:
                    session_info = json.load(f)

                print("\n📊 Session Information:")
                print("=" * 40)
                for key, value in session_info.items():
                    print(f"{key}: {value}")
            except Exception as e:
                print(f"❌ Error reading session info: {e}")
        else:
            print("❌ No session info file found")

    def view_cookies_summary(self):
        """Display cookies summary"""
        if os.path.exists(self.cookies_file):
            try:
                with open(self.cookies_file, 'r') as f:
                    cookies = json.load(f)

                print(f"\n🍪 Cookies Summary:")
                print("=" * 40)
                print(f"Total cookies: {len(cookies)}")

                domains = set()
                for cookie in cookies:
                    domains.add(cookie.get('domain', 'unknown'))

                print(f"Domains: {', '.join(sorted(domains))}")

                # Show eBay-specific cookies
                ebay_cookies = [c for c in cookies if 'ebay' in c.get('domain', '').lower()]
                print(f"eBay cookies: {len(ebay_cookies)}")

            except Exception as e:
                print(f"❌ Error reading cookies: {e}")
        else:
            print("❌ No cookies file found")

    def clear_session(self):
        """Clear all session data"""
        files_to_remove = [self.cookies_file, self.session_file, self.storage_state_file]
        removed_count = 0

        for filepath in files_to_remove:
            if os.path.exists(filepath):
                try:
                    os.remove(filepath)
                    print(f"🗑️  Removed: {filepath}")
                    removed_count += 1
                except Exception as e:
                    print(f"❌ Error removing {filepath}: {e}")

        print(f"\n✅ Cleared {removed_count} session files")

def main():
    """Main function"""
    session_manager = SessionManager()

    print("🔐 eBay Session Manager")
    print("=" * 50)

    if session_manager.check_session_files():
        session_manager.view_session_info()
        session_manager.view_cookies_summary()

        print("\n" + "=" * 50)
        user_input = input("Do you want to clear all session data? (y/N): ")
        if user_input.lower() in ['y', 'yes']:
            session_manager.clear_session()
    else:
        print("\n❌ No session files found. Run login.py first to create session data.")

if __name__ == "__main__":
    main()
