diff --git a/backend/pkg/analytics/builder.go b/backend/pkg/analytics/builder.go index e2a5c833b..bcc7dc727 100644 --- a/backend/pkg/analytics/builder.go +++ b/backend/pkg/analytics/builder.go @@ -1,6 +1,7 @@ package analytics import ( + "github.com/go-playground/validator/v10" "openreplay/backend/pkg/analytics/charts" "time" @@ -31,11 +32,12 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web. if err != nil { return nil, err } + reqValidator := validator.New() cardsService, err := cards.New(log, pgconn) if err != nil { return nil, err } - cardsHandlers, err := cards.NewHandlers(log, cfg, responser, cardsService) + cardsHandlers, err := cards.NewHandlers(log, cfg, responser, cardsService, reqValidator) if err != nil { return nil, err } @@ -43,7 +45,7 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web. if err != nil { return nil, err } - dashboardsHandlers, err := dashboards.NewHandlers(log, cfg, responser, dashboardsService) + dashboardsHandlers, err := dashboards.NewHandlers(log, cfg, responser, dashboardsService, reqValidator) if err != nil { return nil, err } @@ -51,7 +53,7 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web. if err != nil { return nil, err } - chartsHandlers, err := charts.NewHandlers(log, cfg, responser, chartsService) + chartsHandlers, err := charts.NewHandlers(log, cfg, responser, chartsService, reqValidator) if err != nil { return nil, err } diff --git a/backend/pkg/analytics/cards/handlers.go b/backend/pkg/analytics/cards/handlers.go index 13161b8b5..f0cf16d02 100644 --- a/backend/pkg/analytics/cards/handlers.go +++ b/backend/pkg/analytics/cards/handlers.go @@ -36,6 +36,7 @@ type handlersImpl struct { responser *api.Responser jsonSizeLimit int64 cards Cards + validator *validator.Validate } func (e *handlersImpl) GetAll() []*api.Description { @@ -48,12 +49,13 @@ func (e *handlersImpl) GetAll() []*api.Description { } } -func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, cards Cards) (api.Handlers, error) { +func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, cards Cards, validator *validator.Validate) (api.Handlers, error) { return &handlersImpl{ log: log, responser: responser, jsonSizeLimit: cfg.JsonSizeLimit, cards: cards, + validator: validator, }, nil } @@ -74,9 +76,7 @@ func (e *handlersImpl) createCard(w http.ResponseWriter, r *http.Request) { return } - validate := validator.New() - err = validate.Struct(req) - if err != nil { + if err = e.validator.Struct(req); err != nil { e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) return } @@ -256,9 +256,7 @@ func (e *handlersImpl) updateCard(w http.ResponseWriter, r *http.Request) { return } - validate := validator.New() - err = validate.Struct(req) - if err != nil { + if err = e.validator.Struct(req); err != nil { e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) return } diff --git a/backend/pkg/analytics/charts/handlers.go b/backend/pkg/analytics/charts/handlers.go index d0d71dd7c..771732b43 100644 --- a/backend/pkg/analytics/charts/handlers.go +++ b/backend/pkg/analytics/charts/handlers.go @@ -36,6 +36,7 @@ type handlersImpl struct { responser *api.Responser jsonSizeLimit int64 charts Charts + validator *validator.Validate } func (e *handlersImpl) GetAll() []*api.Description { @@ -45,12 +46,13 @@ func (e *handlersImpl) GetAll() []*api.Description { } } -func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, charts Charts) (api.Handlers, error) { +func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, charts Charts, validator *validator.Validate) (api.Handlers, error) { return &handlersImpl{ log: log, responser: responser, jsonSizeLimit: cfg.JsonSizeLimit, charts: charts, + validator: validator, }, nil } @@ -77,9 +79,7 @@ func (e *handlersImpl) getCardChartData(w http.ResponseWriter, r *http.Request) return } - validate := validator.New() - err = validate.Struct(req) - if err != nil { + if err = e.validator.Struct(req); err != nil { e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) return } diff --git a/backend/pkg/analytics/dashboards/handlers.go b/backend/pkg/analytics/dashboards/handlers.go index a37005d00..d81c75159 100644 --- a/backend/pkg/analytics/dashboards/handlers.go +++ b/backend/pkg/analytics/dashboards/handlers.go @@ -36,6 +36,7 @@ type handlersImpl struct { responser *api.Responser jsonSizeLimit int64 dashboards Dashboards + validator *validator.Validate } func (e *handlersImpl) GetAll() []*api.Description { @@ -50,12 +51,13 @@ func (e *handlersImpl) GetAll() []*api.Description { } } -func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, dashboards Dashboards) (api.Handlers, error) { +func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, dashboards Dashboards, validator *validator.Validate) (api.Handlers, error) { return &handlersImpl{ log: log, responser: responser, jsonSizeLimit: cfg.JsonSizeLimit, dashboards: dashboards, + validator: validator, }, nil } @@ -76,9 +78,7 @@ func (e *handlersImpl) createDashboard(w http.ResponseWriter, r *http.Request) { return } - validate := validator.New() - err = validate.Struct(req) - if err != nil { + if err = e.validator.Struct(req); err != nil { e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) return } @@ -279,9 +279,7 @@ func (e *handlersImpl) addCardToDashboard(w http.ResponseWriter, r *http.Request return } - validate := validator.New() - err = validate.Struct(req) - if err != nil { + if err = e.validator.Struct(req); err != nil { e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) return }