// Package main — сервис lk-emulator. Имитация ЛК клиента (ESIA Finance
// API V1) на время, пока реальный ЛК не готов. Веб-форма «новая заявка»,
// журнал моих заявок, приёмник callback'ов от lk-gateway.
//
// Когда реальный ЛК подключится, эмулятор остаётся как тестовый
// инструмент в QA-окружении: даёт сквозной сценарий без зависимости от
// внешней стороны.
package main

import (
	"context"
	"log"
	"os"
	"os/signal"
	"syscall"

	"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/lkemulator"
)

func main() {
	addr := getenv("BJ_HTTP_ADDR", ":8083")
	gw := getenv("BJ_GATEWAY_URL", "http://127.0.0.1:8080")
	self := getenv("BJ_EMULATOR_PUBLIC_URL", "http://127.0.0.1:8083")

	srv, err := lkemulator.NewServer(lkemulator.ServerConfig{
		Addr:          addr,
		GatewayURL:    gw,
		SelfPublicURL: self,
	})
	if err != nil {
		log.Fatalf("lk-emulator: NewServer: %v", err)
	}

	ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
	runErr := srv.Run(ctx)
	stop()
	if runErr != nil {
		log.Printf("lk-emulator: %v", runErr)
		os.Exit(1)
	}
}

func getenv(k, def string) string {
	if v, ok := os.LookupEnv(k); ok && v != "" {
		return v
	}
	return def
}
