This commit is contained in:
parent
5d9c6ffc7e
commit
dcb6d697c0
123
cmd/validator/main.go
Normal file
123
cmd/validator/main.go
Normal file
@ -0,0 +1,123 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/common/validate"
|
||||
"gitea.pena/PenaSide/verification/internal/config"
|
||||
"gitea.pena/PenaSide/verification/internal/repository"
|
||||
"github.com/caarlos0/env/v8"
|
||||
"github.com/minio/minio-go/v7"
|
||||
"github.com/minio/minio-go/v7/pkg/credentials"
|
||||
"github.com/pioz/faker"
|
||||
"log"
|
||||
)
|
||||
|
||||
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 = validateS3(cfg)
|
||||
if err != nil {
|
||||
log.Fatalf("error validating s3: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateTgToken(cfg.TelegramToken); err != nil {
|
||||
log.Fatalf("error validating telegram token: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateMongo(cfg.ExternalCfg.Database); err != nil {
|
||||
log.Fatalf("error validating mongodb: %v", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func loadConfig() (config.Config, error) {
|
||||
var cfg config.Config
|
||||
|
||||
if err := env.Parse(&cfg); err != nil {
|
||||
return cfg, err
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func validateNotEmpty(cfg config.Config) error {
|
||||
if cfg.TelegramChannelID == 0 {
|
||||
return fmt.Errorf("TelegramChannelID is empty")
|
||||
}
|
||||
if cfg.ClientHttpURL == "" {
|
||||
return fmt.Errorf("ClientHttpURL is empty")
|
||||
}
|
||||
if cfg.AdminHttpURL == "" {
|
||||
return fmt.Errorf("AdminHttpURL is empty")
|
||||
}
|
||||
if cfg.CustomerMicroserviceRPCURL == "" {
|
||||
return fmt.Errorf("CustomerMicroserviceRPCURL is empty")
|
||||
}
|
||||
if cfg.TrashLogHost == "" {
|
||||
return fmt.Errorf("TrashLogHost is empty")
|
||||
}
|
||||
if cfg.VerificationMicroserviceURL == "" {
|
||||
return fmt.Errorf("VerificationMicroserviceURL is empty")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateS3(cfg config.Config) error {
|
||||
if cfg.S3Endpoint == "" {
|
||||
return fmt.Errorf("s3 endpoint is empty")
|
||||
}
|
||||
if cfg.S3AccessKey == "" {
|
||||
return fmt.Errorf("s3 access key is empty")
|
||||
}
|
||||
if cfg.S3SecretKey == "" {
|
||||
return fmt.Errorf("s3 secret key is empty")
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
|
||||
client, err := minio.New(cfg.S3Endpoint, &minio.Options{
|
||||
Creds: credentials.NewStaticV4(cfg.S3AccessKey, cfg.S3SecretKey, ""),
|
||||
Secure: true,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating minio client: %v", err)
|
||||
}
|
||||
|
||||
objectName := faker.String()
|
||||
content := []byte(faker.String())
|
||||
contentType := "text/plain"
|
||||
|
||||
exist, err := client.BucketExists(ctx, repository.VerificationBucket)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error find s3 bucket in validate: %w", err)
|
||||
}
|
||||
|
||||
// не создаем бакет так как бакет могут не дать создать
|
||||
if !exist {
|
||||
log.Println("bucket does not exist")
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err = client.PutObject(ctx, repository.VerificationBucket, objectName,
|
||||
bytes.NewReader(content), int64(len(content)),
|
||||
minio.PutObjectOptions{ContentType: contentType})
|
||||
if err != nil {
|
||||
return fmt.Errorf("error create test object: %w", err)
|
||||
}
|
||||
|
||||
err = client.RemoveObject(ctx, repository.VerificationBucket, objectName, minio.RemoveObjectOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("error remove test object: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
12
cmd/validator/main_test.go
Normal file
12
cmd/validator/main_test.go
Normal file
@ -0,0 +1,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitea.pena/PenaSide/verification/internal/config"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateS3(t *testing.T) {
|
||||
err := validateS3(config.Config{S3Endpoint: "localhost:9000", S3AccessKey: "minioadmin", S3SecretKey: "minioadmin"})
|
||||
assert.NoError(t, err)
|
||||
}
|
7
go.mod
7
go.mod
@ -5,7 +5,7 @@ go 1.22.0
|
||||
toolchain go1.22.2
|
||||
|
||||
require (
|
||||
gitea.pena/PenaSide/common v0.0.0-20241128160655-fe730a08b5f1
|
||||
gitea.pena/PenaSide/common v0.0.0-20241206095133-a4a6f7df8b45
|
||||
gitea.pena/PenaSide/customer v0.0.0-20241118214409-34a88a3a7001 //dev
|
||||
gitea.pena/PenaSide/trashlog v0.0.0-20241119225515-2fd267647ca4 //dev
|
||||
github.com/caarlos0/env/v8 v8.0.0
|
||||
@ -19,7 +19,10 @@ require (
|
||||
go.uber.org/zap v1.27.0
|
||||
)
|
||||
|
||||
require gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735
|
||||
require (
|
||||
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735
|
||||
github.com/pioz/faker v1.7.3
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4 // indirect
|
||||
|
5
go.sum
5
go.sum
@ -1,5 +1,5 @@
|
||||
gitea.pena/PenaSide/common v0.0.0-20241128160655-fe730a08b5f1 h1:w1AAxrlZGmxUI9NAa/0TYsc6sqWWF9yAzQaLL/KxwrM=
|
||||
gitea.pena/PenaSide/common v0.0.0-20241128160655-fe730a08b5f1/go.mod h1:l71j3W1yROhOSfjWZ6wcMuzjBR37gu2ZTcXsorEJoiw=
|
||||
gitea.pena/PenaSide/common v0.0.0-20241206095133-a4a6f7df8b45 h1:0YzvHSgRitVeqvniSCPr6BERHusGP5yrGozAITYbWmg=
|
||||
gitea.pena/PenaSide/common v0.0.0-20241206095133-a4a6f7df8b45/go.mod h1:BDk6/EA9ekKun+UP7UBLcczhlmFRLxglYi00G9FBkUw=
|
||||
gitea.pena/PenaSide/customer v0.0.0-20241118214409-34a88a3a7001 h1:bnwlhVx7LzwAYgx25G8/qezqkXvatL1de9nQZvpO0IE=
|
||||
gitea.pena/PenaSide/customer v0.0.0-20241118214409-34a88a3a7001/go.mod h1:6lKbvPc2E2TcNSxG8WlC/XBuhqW6smKQtpYPLedheqU=
|
||||
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735 h1:jDVeUhGBTXBibmW5dmtJg2m2+z5z2Rf6J4G0LpjVoJ0=
|
||||
@ -128,6 +128,7 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
|
@ -2,6 +2,7 @@ package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
mongo "gitea.pena/PenaSide/common/mongo"
|
||||
"gitea.pena/PenaSide/customer/pkg/customer_clients"
|
||||
"gitea.pena/PenaSide/trashlog/app"
|
||||
@ -54,7 +55,7 @@ func Run(cfg *config.Config, build Build) {
|
||||
loggerHlog.Emit(app.InfoSvcStarted{})
|
||||
|
||||
mongoDB, err := mongo.Connect(ctx, &mongo.ConnectDeps{
|
||||
Configuration: &cfg.External.Database,
|
||||
Configuration: &cfg.ExternalCfg.Database,
|
||||
Timeout: 5 * time.Second,
|
||||
})
|
||||
|
||||
@ -80,6 +81,11 @@ func Run(cfg *config.Config, build Build) {
|
||||
logger.Fatal("TelegramBotApi", zap.Error(err))
|
||||
}
|
||||
|
||||
_, err = tgBot.Send(tgbotapi.NewMessage(cfg.TelegramChannelID, fmt.Sprintf("PING MSG from %s", config.ModuleLogger)))
|
||||
if err != nil {
|
||||
logger.Fatal("Send TG ping", zap.Error(err))
|
||||
}
|
||||
|
||||
telegram := client.NewTelegram(client.Deps{
|
||||
Logger: logger,
|
||||
Bot: tgBot,
|
||||
|
@ -19,7 +19,7 @@ type Config struct {
|
||||
CustomerMicroserviceRPCURL string `env:"CUSTOMER_MICROSERVICE_RPC_URL,required"`
|
||||
TrashLogHost string `env:"TRASH_LOG_HOST,required"`
|
||||
VerificationMicroserviceURL string `env:"VERIFICATION_MICROSERVICE_URL,required"`
|
||||
External External
|
||||
ExternalCfg External
|
||||
}
|
||||
|
||||
type External struct {
|
||||
|
Loading…
Reference in New Issue
Block a user