import os
from urllib.parse import urlparse

from flask import Flask, render_template

app = Flask(__name__)
app.config["TEMPLATES_AUTO_RELOAD"] = True

SERVICES = [
    ("Apple Music", "APPLE_MUSIC_URL", "APPLE_MUSIC_TEXT", "fa-apple", "AM"),
    ("SoundCloud", "SOUNDCLOUD_URL", "SOUNDCLOUD_TEXT", "fa-soundcloud", "SC"),
    ("Spotify", "SPOTIFY_URL", "SPOTIFY_TEXT", "fa-spotify", "SP"),
    ("YouTube", "YOUTUBE_URL", "YOUTUBE_TEXT", "fa-youtube", "YT"),
    ("Telegram", "TELEGRAM_URL", "TELEGRAM_TEXT", "fa-telegram", "TG"),
    ("Instagram", "INSTAGRAM_URL", "INSTAGRAM_TEXT", "fa-instagram", "IG"),
]


def clean_url(raw):
    url = (raw or "").strip()
    try:
        parsed = urlparse(url)
        if parsed.scheme == "https" and parsed.netloc and not any(c.isspace() for c in url):
            return url
    except ValueError:
        pass
    return ""


@app.get("/")
def index():
    links = [
        {"name": name, "label": (os.environ.get(label_key) or name).strip() or name, "url": clean_url(os.getenv(url_key)), "icon": icon, "short": short}
        for name, url_key, label_key, icon, short in SERVICES
    ]
    return render_template("index.html", links=links, tagline=os.getenv("TAGLINE_TEXT", "OFFICIAL LINKS"), footer=os.getenv("FOOTER_TEXT", "© 2026 MAXIS · ALL RIGHTS RESERVED"))


@app.get("/health")
def health():
    return {"status": "ok"}


if __name__ == "__main__":
    port = int(os.getenv("PORT", "8000"))
    app.run(host=os.getenv("HOST", "127.0.0.1"), port=port, debug=False)
