github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/plugin/bodylmt/setup.go (about) 1 package bodylmt 2 3 import ( 4 "github.com/asaskevich/govalidator" 5 "github.com/hellofresh/janus/pkg/plugin" 6 "github.com/hellofresh/janus/pkg/proxy" 7 ) 8 9 // Config represents the Body Limit configuration 10 type Config struct { 11 Limit string `json:"limit"` 12 } 13 14 func init() { 15 plugin.RegisterPlugin("body_limit", plugin.Plugin{ 16 Action: setupBodyLimit, 17 Validate: validateConfig, 18 }) 19 } 20 21 func setupBodyLimit(def *proxy.RouterDefinition, rawConfig plugin.Config) error { 22 var config Config 23 err := plugin.Decode(rawConfig, &config) 24 if err != nil { 25 return err 26 } 27 28 def.AddMiddleware(NewBodyLimitMiddleware(config.Limit)) 29 return nil 30 } 31 32 func validateConfig(rawConfig plugin.Config) (bool, error) { 33 var config Config 34 err := plugin.Decode(rawConfig, &config) 35 if err != nil { 36 return false, err 37 } 38 39 return govalidator.ValidateStruct(config) 40 }