#!/bin/bash
# start_email_api.sh
# Dieses Script startet die S3 Email Downloader REST API in einer virtuellen Python-Umgebung

# Verzeichnis, in dem sich das Script befindet
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

# Name der virtuellen Umgebung
VENV_NAME="venv"

# Python-Executable (falls spezifische Version benötigt wird)
PYTHON_EXEC="python3"

# API Port
PORT=${EMAIL_API_PORT:-5000}

# Umgebungsvariablen Datei
ENV_FILE=".env"

# Prüfen, ob virtuelle Umgebung existiert
if [ ! -d "$VENV_NAME" ]; then
    echo "Virtuelle Umgebung wird erstellt..."
    $PYTHON_EXEC -m venv "$VENV_NAME"
    if [ $? -ne 0 ]; then
        echo "Fehler beim Erstellen der virtuellen Umgebung!"
        exit 1
    fi
fi

# Virtuelle Umgebung aktivieren
source "$VENV_NAME/bin/activate"

# Abhängigkeiten installieren, falls erforderlich
echo "Abhängigkeiten werden installiert..."
pip install --upgrade pip
pip install boto3 flask python-dotenv gunicorn

# Prüfen, ob .env-Datei existiert
if [ ! -f "$ENV_FILE" ]; then
    echo "WARNUNG: $ENV_FILE nicht gefunden!"
    echo "Bitte erstellen Sie eine .env-Datei mit den erforderlichen Konfigurationen."
    echo "Beispiel:"
    echo "API_TOKEN=ihr_geheimer_token"
    echo "MAIL_DIR=./mail"
    echo "AWS_REGION=us-east-2"
    echo "AWS_ACCESS_KEY_ID=your_access_key"
    echo "AWS_SECRET_ACCESS_KEY=your_secret_key"
    echo "DOMAIN_1=example.com"
    echo "DOMAIN_1_BUCKET=example-bucket"
    echo "DOMAIN_1_USERNAMES=user1,user2,user3"
    exit 1
fi

# Überprüfen, ob API_TOKEN in der .env-Datei gesetzt ist
if ! grep -q "API_TOKEN" "$ENV_FILE"; then
    echo "WARNUNG: API_TOKEN nicht in $ENV_FILE gefunden!"
    echo "Die API wird ohne Token-Schutz gestartet. Dies ist unsicher für Produktionsumgebungen."
    read -p "Möchten Sie fortfahren? (j/n): " choice
    if [[ ! "$choice" =~ ^[jJyY]$ ]]; then
        echo "Abbruch."
        exit 1
    fi
fi

# Prüfen, ob das Python-Script existiert
API_SCRIPT="s3_email_processor_api.py"
if [ ! -f "$API_SCRIPT" ]; then
    echo "Fehler: $API_SCRIPT nicht gefunden!"
    exit 1
fi

# API im Produktionsmodus mit Gunicorn starten
echo "Starte S3 Email Downloader API auf Port $PORT..."
exec gunicorn --bind "0.0.0.0:$PORT" --workers 2 "s3_email_processor_api:app"