import requests
import json
import sys

API_KEY = "b872fcef-1290-4a84-94a7-a1a50a77d0c9"
BASE_URL = "https://api.mails.so/v1"

def validate_single(email):
    url = f"{BASE_URL}/validate"
    headers = {"x-mails-api-key": API_KEY}
    params = {"email": email}
    try:
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    except requests.RequestException as e:
        return {"error": str(e)}

def validate_batch(emails):
    url = f"{BASE_URL}/batch"
    headers = {"x-mails-api-key": API_KEY, "Content-Type": "application/json"}
    data = {"emails": emails}
    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()
        return response.json()
    except requests.RequestException as e:
        return {"error": str(e)}

if __name__ == "__main__":
    # Se argumentos foram passados na linha de comando
    if len(sys.argv) > 1:
        emails = sys.argv[1:]
        if len(emails) == 1:
            print(f"\n🔍 Validando: {emails[0]}\n")
            result = validate_single(emails[0])
            print(json.dumps(result, indent=4))
        else:
            print(f"\n🔍 Validando {len(emails)} emails em batch...\n")
            result = validate_batch(emails)
            print(json.dumps(result, indent=4))
    else:
        # Modo interativo
        print("\n📧 Validador de Emails - mails.so API")
        print("=" * 50)
        print("\nEscolha o modo:")
        print("  [1]   - Validar 1 email")
        print("  [10]  - Validar 10 emails")
        print("  [100] - Validar 100 emails")
        print("\nOu execute: python3 email_validator.py email@example.com")
        print("=" * 50)

        modo = input("\nDigite 1, 10 ou 100: ").strip()

        if modo == "1":
            email = input("Digite o email: ").strip()
            print(f"\n🔍 Validando: {email}\n")
            result = validate_single(email)
            print(json.dumps(result, indent=4))
        elif modo in ["10", "100"]:
            num = int(modo)
            emails = []
            print(f"\nDigite {num} emails (pressione Enter após cada um):")
            for i in range(num):
                email = input(f"  Email {i+1}/{num}: ").strip()
                emails.append(email)
            print(f"\n🔍 Validando {num} emails em batch...\n")
            result = validate_batch(emails)
            print(json.dumps(result, indent=4))
        else:
            print("❌ Modo inválido. Use 1, 10 ou 100")
