#!/usr/bin/env python3
from __future__ import annotations

import json
import urllib.request
from pathlib import Path
from datetime import datetime, timezone

BASE = Path(__file__).resolve().parents[1]
ENV_FILES = [BASE / 'automation/n8n/.env.local', BASE / 'automation/n8n/.env']
OUT = BASE / 'ops/dashboard/n8n-mailerlite-status.json'

env = {}
for p in ENV_FILES:
    if p.exists():
        for line in p.read_text().splitlines():
            line = line.strip()
            if not line or line.startswith('#') or '=' not in line:
                continue
            k, v = line.split('=', 1)
            env.setdefault(k, v)

status = {
    'checkedAt': datetime.now(timezone.utc).isoformat(),
    'n8n': {'ok': False},
    'mailerlite': {'ok': False},
}

try:
    with urllib.request.urlopen('http://127.0.0.1:5678', timeout=10) as r:
        status['n8n'] = {'ok': r.status == 200, 'httpStatus': r.status}
except Exception as e:
    status['n8n'] = {'ok': False, 'error': str(e)}

try:
    req = urllib.request.Request(
        'https://connect.mailerlite.com/api/groups',
        headers={
            'Authorization': 'Bearer ' + env['MAILERLITE_API_KEY'],
            'Accept': 'application/json',
        },
    )
    with urllib.request.urlopen(req, timeout=20) as r:
        payload = json.loads(r.read().decode('utf-8'))
        status['mailerlite'] = {
            'ok': r.status == 200,
            'httpStatus': r.status,
            'groupCount': len(payload.get('data', [])),
        }
except Exception as e:
    status['mailerlite'] = {'ok': False, 'error': str(e)}

OUT.parent.mkdir(parents=True, exist_ok=True)
OUT.write_text(json.dumps(status, indent=2), encoding='utf-8')
print(json.dumps(status, indent=2))
