bitrix/cmd/validator/main.go
2025-02-25 14:47:46 +03:00

87 lines
1.9 KiB
Go

package main
import (
"context"
"errors"
"gitea.pena/PenaSide/common/validate"
"github.com/caarlos0/env/v8"
"log"
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/initialize"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
)
func main() {
cfg, err := loadConfig()
if err != nil {
log.Fatalf("error loading config: %v", err)
}
err = validateNotEmpty(cfg)
if err != nil {
log.Fatalf("error validating config: %v", err)
}
err = validate.ValidateKafka([]string{cfg.KafkaBrokers}, cfg.KafkaTopicQueueBitrix)
if err != nil {
log.Fatalf("error validating Kafka: %v", err)
}
err = validate.ValidateRedis(cfg.RedisHost, cfg.RedisPassword, cfg.RedisDB)
if err != nil {
log.Fatalf("error validating Redis: %v", err)
}
err = validate.ValidateEncryptKeys(&cfg.ExternalCfg.EncryptCommon)
if err != nil {
log.Fatalf("error validating EncryptKeys: %v", err)
}
_, err = dal.NewBitrixDal(context.TODO(), cfg.PostgresURL)
if err != nil {
log.Fatalf("error connecting to postgres: %v", err)
}
return
}
func loadConfig() (initialize.Config, error) {
var cfg initialize.Config
if err := env.Parse(&cfg); err != nil {
return cfg, err
}
return cfg, nil
}
func validateNotEmpty(cfg initialize.Config) error {
if cfg.ClientHttpURL == "" {
return errors.New("client http url cannot be empty")
}
if cfg.BitrixIntegrationID == "" {
return errors.New("bitrix integration id cannot be empty")
}
if cfg.QuizIntegrationsRedirectURL == "" {
return errors.New("quiz integrations redirect url cannot be empty")
}
if cfg.OauthReturnURL == "" {
return errors.New("oauth returning url cannot be empty")
}
if cfg.BitrixIntegrationSecret == "" {
return errors.New("bitrix integration secret cannot be empty")
}
if cfg.ExternalCfg.EncryptCommon.PrivKey == "" {
return errors.New("no private key provided")
}
if cfg.ExternalCfg.EncryptCommon.PubKey == "" {
return errors.New("no public key provided")
}
return nil
}