package api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"os"
	"strings"
)

func Auth() gin.HandlerFunc {
	if hasProfile("basic-auth") {
		return gin.BasicAuth(loadAuth())
	}
	panic("keycloak support not implemented")
}

func hasProfile(value string) bool {
	profileOptions := strings.Split(os.Getenv("PROFILE"), ",")
	for _, option := range profileOptions {
		if option == value {
			return true
		}
	}
	return false
}

func loadAuth() map[string]string {
	credentials := envMustExist("AUTH_KEY")
	values := strings.Split(credentials, ":")
	return map[string]string{values[0]: values[1]}
}

func envMustExist(env string) string {
	if value, exists := os.LookupEnv(env); !exists {
		panic(fmt.Sprintf("env variable '%s' not defined", env))
	} else {
		return value
	}
}
