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  }