package initialize

import (
	"time"

	"github.com/golang-jwt/jwt/v5"
	"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
	"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils"
	"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/env"
)

// TODO: обработать возможность читать конфиги ещё по json

func Configuration(path string) (*models.Config, error) {
	config, err := env.Parse[models.Config](path)
	if err != nil {
		return nil, err
	}

	if err := utils.ValidateConfigurationURLs(&config.Service); err != nil {
		return nil, err
	}

	iniJWTConfiguration(&config.Service.JWT)

	return config, nil
}

func iniJWTConfiguration(config *models.JWTConfiguration) {
	config.Algorithm = *jwt.SigningMethodRS256
	config.ExpiresIn = 15 * time.Minute
}
