#!/usr/bin/env python3
"""
Simple Properstar Session Checker
Checks if auth.json exists and its age
"""
import os
import json
import sys
from datetime import datetime, timedelta

AUTH_JSON = "auth.json"

def check_session():
    """
    Simple check if auth.json exists and isn't too old

    Returns:
        dict with status information
    """
    result = {
        'exists': False,
        'age_days': None,
        'age_hours': None,
        'created': None,
        'needs_refresh': False,
        'valid': False,
        'message': None
    }

    if not os.path.exists(AUTH_JSON):
        result['message'] = 'No auth.json found - manual login required'
        result['needs_refresh'] = True
        return result

    result['exists'] = True

    try:
        # Get file modification time
        mtime = os.path.getmtime(AUTH_JSON)
        created_time = datetime.fromtimestamp(mtime)
        age = datetime.now() - created_time

        result['created'] = created_time.isoformat()
        result['age_days'] = age.total_seconds() / 86400
        result['age_hours'] = age.total_seconds() / 3600

        # Sessions typically expire after 7-14 days
        # Warn if older than 7 days
        if age > timedelta(days=7):
            result['needs_refresh'] = True
            result['message'] = f'Session is {result["age_days"]:.1f} days old - might be expired'
            result['valid'] = False
        else:
            result['valid'] = True
            result['message'] = f'Session exists ({result["age_days"]:.1f} days old)'

    except Exception as e:
        result['message'] = f'Error checking auth.json: {str(e)}'
        result['needs_refresh'] = True

    return result

def invalidate_session():
    """Remove auth.json to force re-login"""
    if os.path.exists(AUTH_JSON):
        # Backup first
        import shutil
        backup_name = f"auth_backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
        shutil.copy(AUTH_JSON, backup_name)
        os.remove(AUTH_JSON)
        return {
            'success': True,
            'message': f'Session invalidated. Backup saved to {backup_name}',
            'backup_file': backup_name
        }
    else:
        return {
            'success': False,
            'message': 'No auth.json found'
        }

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == 'invalidate':
        # Invalidate session
        result = invalidate_session()
        print(json.dumps(result, indent=2))
    else:
        # Check session
        result = check_session()

        print("=" * 70)
        print("PROPERSTAR SESSION CHECK")
        print("=" * 70)

        if result['exists']:
            print(f"✅ auth.json exists")
            print(f"   Created: {result['created']}")
            print(f"   Age: {result['age_days']:.1f} days ({result['age_hours']:.1f} hours)")

            if result['valid']:
                print(f"   Status: ✅ Likely valid")
            else:
                print(f"   Status: ⚠️  {result['message']}")
                print("\n💡 Recommended action:")
                print("   Test with a full update. If it fails:")
                print("   1. POST to /api/invalidate-session")
                print("   2. Or run: python3 check_session_simple.py invalidate")
                print("   3. Then run scraper again for manual login")
        else:
            print("❌ No auth.json found")
            print("\n💡 Action required:")
            print("   Run the favorites scraper for manual login:")
            print("   python3 favorites_scraper.py")

        print("=" * 70)
        print("\nJSON Output:")
        print(json.dumps(result, indent=2))

        sys.exit(0 if result['valid'] else 1)
