Fix: backend validate serverName

pull/44/head
zijiren233 1 year ago
parent 4592ffdea4
commit e7491fac13

@ -1,6 +1,9 @@
package model
import (
"errors"
"time"
"github.com/synctv-org/synctv/utils"
"gorm.io/gorm"
)
@ -31,6 +34,21 @@ type Backend struct {
Etcd Etcd `gorm:"embedded;embeddedPrefix:etcd_" json:"etcd"`
}
func (b *Backend) Validate() error {
if b.Endpoint == "" {
return errors.New("new http client failed, endpoint is empty")
}
if b.Consul.ServerName != "" && b.Etcd.ServerName != "" {
return errors.New("new grpc client failed, consul and etcd can't be used at the same time")
}
if b.TimeOut != "" {
if _, err := time.ParseDuration(b.TimeOut); err != nil {
return err
}
}
return nil
}
type VendorBackend struct {
Backend Backend `gorm:"embedded;embeddedPrefix:backend_" json:"backend"`
UsedBy BackendUsedBy `gorm:"embedded;embeddedPrefix:used_by_" json:"usedBy"`

@ -329,6 +329,9 @@ func NewGrpcClientConn(ctx context.Context, conf *model.Backend) (*grpc.ClientCo
if conf.Endpoint == "" {
return nil, errors.New("new grpc client failed, endpoint is empty")
}
if conf.Consul.ServerName != "" && conf.Etcd.ServerName != "" {
return nil, errors.New("new grpc client failed, consul and etcd can't be used at the same time")
}
middlewares := []middleware.Middleware{kcircuitbreaker.Client(kcircuitbreaker.WithCircuitBreaker(func() circuitbreaker.CircuitBreaker {
return sre.NewBreaker(
sre.WithRequest(25),
@ -423,8 +426,8 @@ func NewGrpcClientConn(ctx context.Context, conf *model.Backend) (*grpc.ClientCo
}
func NewHttpClientConn(ctx context.Context, conf *model.Backend) (*http.Client, error) {
if conf.Endpoint == "" {
return nil, errors.New("new http client failed, endpoint is empty")
if err := conf.Validate(); err != nil {
return nil, err
}
middlewares := []middleware.Middleware{kcircuitbreaker.Client(kcircuitbreaker.WithCircuitBreaker(func() circuitbreaker.CircuitBreaker {
return sre.NewBreaker(
@ -450,6 +453,8 @@ func NewHttpClientConn(ctx context.Context, conf *model.Backend) (*http.Client,
return nil, err
}
opts = append(opts, http.WithTimeout(timeout))
} else {
opts = append(opts, http.WithTimeout(time.Second*10))
}
if conf.Tls {

@ -139,10 +139,7 @@ type GetVendorBackendResp struct {
type AddVendorBackendReq model.VendorBackend
func (avbr *AddVendorBackendReq) Validate() error {
if avbr.Backend.Endpoint == "" {
return errors.New("endpoint is empty")
}
return nil
return avbr.Backend.Validate()
}
func (avbr *AddVendorBackendReq) Decode(ctx *gin.Context) error {

Loading…
Cancel
Save