notifier/cmd/validator/main.go

74 lines
1.5 KiB
Go
Raw Normal View History

2024-12-16 11:54:41 +00:00
package main
import (
"errors"
"gitea.pena/PenaSide/common/validate"
"gitea.pena/PenaSide/notifier/internal/initialize"
"github.com/caarlos0/env/v8"
"log"
)
func main() {
cfg, err := loadConfig()
if err != nil {
log.Fatalf("Error loading config: %v", err)
}
if err = validateNotEmpty([]string{
cfg.CustomerMicroserviceGRPC,
cfg.QuizCoreMicroserviceGRPC,
}); err != nil {
log.Fatalf("Error validating not empty values: %v", err)
}
if err = validateSMTP(cfg.External.MailClientCfg); err != nil {
log.Fatalf("Error validating SMTP: %v", err)
}
if err = validate.ValidateMongo(cfg.External.Database); err != nil {
log.Fatalf("Error validating Mongo: %v", err)
}
if err = validate.ValidateKafka([]string{cfg.KafkaBrokers}, cfg.KafkaTopicMailNotifier); err != nil {
log.Fatalf("Error validating Kafka: %v", err)
}
}
func loadConfig() (*initialize.Config, error) {
var cfg initialize.Config
if err := env.Parse(&cfg); err != nil {
return nil, err
}
return &cfg, nil
}
func validateNotEmpty(values []string) error {
for _, value := range values {
if value == "" {
return errors.New("important cfg value is empty")
}
}
return nil
}
func validateSMTP(cfg initialize.MailClientCfg) error {
if cfg.Sender == "" {
return errors.New("smtp sender is empty")
}
if cfg.ApiURL == "" {
return errors.New("smtp api url is empty")
}
if cfg.ApiKey == "" {
return errors.New("smtp api key is empty")
}
err := validate.ValidateSmtp(cfg.ApiKey)
if err != nil {
return err
}
return nil
}