74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
![]() |
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
|
||
|
}
|