condition

package
v0.22.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2018 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package condition contains logical operators that, based on their configuration, return boolean values from messages under certain circumstances.

Index

Constants

This section is empty.

Variables

View Source
var (
	TypeAnd      = "and"
	TypeCount    = "count"
	TypeJMESPath = "jmespath"
	TypeNot      = "not"
	TypeOr       = "or"
	TypeResource = "resource"
	TypeStatic   = "static"
	TypeText     = "text"
	TypeXor      = "xor"
)

String constants representing each condition type.

View Source
var Constructors = map[string]TypeSpec{}

Constructors is a map of all condition types with their specs.

View Source
var (
	ErrInvalidTextOperator = errors.New("invalid text operator type")
)

Errors for the text condition.

Functions

func Descriptions

func Descriptions() string

Descriptions returns a formatted string of collated descriptions of each type.

func SanitiseConfig

func SanitiseConfig(conf Config) (interface{}, error)

SanitiseConfig returns a sanitised version of the Config, meaning sections that aren't relevant to behaviour are removed.

Types

type And added in v0.9.4

type And struct {
	// contains filtered or unexported fields
}

And is a condition that returns the logical AND of all children.

func (*And) Check added in v0.9.4

func (c *And) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type AndConfig added in v0.9.4

type AndConfig []Config

AndConfig is a configuration struct containing fields for the And condition.

func NewAndConfig added in v0.9.4

func NewAndConfig() AndConfig

NewAndConfig returns a AndConfig with default values.

type Config

type Config struct {
	Type     string         `json:"type" yaml:"type"`
	And      AndConfig      `json:"and" yaml:"and"`
	Count    CountConfig    `json:"count" yaml:"count"`
	JMESPath JMESPathConfig `json:"jmespath" yaml:"jmespath"`
	Not      NotConfig      `json:"not" yaml:"not"`
	Or       OrConfig       `json:"or" yaml:"or"`
	Resource string         `json:"resource" yaml:"resource"`
	Static   bool           `json:"static" yaml:"static"`
	Text     TextConfig     `json:"text" yaml:"text"`
	Xor      XorConfig      `json:"xor" yaml:"xor"`
}

Config is the all encompassing configuration struct for all condition types.

func NewConfig

func NewConfig() Config

NewConfig returns a configuration struct fully populated with default values.

func (*Config) UnmarshalJSON

func (m *Config) UnmarshalJSON(bytes []byte) error

UnmarshalJSON ensures that when parsing configs that are in a slice the default values are still applied.

func (*Config) UnmarshalYAML

func (m *Config) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML ensures that when parsing configs that are in a slice the default values are still applied.

type Count added in v0.11.2

type Count struct {
	// contains filtered or unexported fields
}

Count is a condition that counts each message and returns false once a target count has been reached, at which point it resets the counter and starts again.

func (*Count) Check added in v0.11.2

func (c *Count) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type CountConfig added in v0.11.2

type CountConfig struct {
	Arg int `json:"arg" yaml:"arg"`
}

CountConfig is a configuration struct containing fields for the Count condition.

func NewCountConfig added in v0.11.2

func NewCountConfig() CountConfig

NewCountConfig returns a CountConfig with default values.

type JMESPath added in v0.9.8

type JMESPath struct {
	// contains filtered or unexported fields
}

JMESPath is a condition that checks message against a jmespath query.

func (*JMESPath) Check added in v0.9.8

func (c *JMESPath) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type JMESPathConfig added in v0.9.8

type JMESPathConfig struct {
	Part  int    `json:"part" yaml:"part"`
	Query string `json:"query" yaml:"query"`
}

JMESPathConfig is a configuration struct containing fields for the jmespath condition.

func NewJMESPathConfig added in v0.9.8

func NewJMESPathConfig() JMESPathConfig

NewJMESPathConfig returns a JMESPathConfig with default values.

type Not added in v0.9.4

type Not struct {
	// contains filtered or unexported fields
}

Not is a condition that returns the opposite of a child condition.

func (*Not) Check added in v0.9.4

func (c *Not) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type NotConfig added in v0.9.4

type NotConfig struct {
	*Config
}

NotConfig is a configuration struct containing fields for the Not condition.

func NewNotConfig added in v0.9.4

func NewNotConfig() NotConfig

NewNotConfig returns a NotConfig with default values.

func (NotConfig) MarshalJSON added in v0.9.4

func (m NotConfig) MarshalJSON() ([]byte, error)

MarshalJSON prints an empty object instead of nil.

func (NotConfig) MarshalYAML added in v0.9.4

func (m NotConfig) MarshalYAML() (interface{}, error)

MarshalYAML prints an empty object instead of nil.

func (*NotConfig) UnmarshalJSON added in v0.9.4

func (m *NotConfig) UnmarshalJSON(bytes []byte) error

UnmarshalJSON ensures that when parsing child config it is initialised.

func (*NotConfig) UnmarshalYAML added in v0.9.4

func (m *NotConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML ensures that when parsing child config it is initialised.

type Or added in v0.9.4

type Or struct {
	// contains filtered or unexported fields
}

Or is a condition that returns the logical or of all children.

func (*Or) Check added in v0.9.4

func (c *Or) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type OrConfig added in v0.9.4

type OrConfig []Config

OrConfig is a configuration struct containing fields for the Or condition.

func NewOrConfig added in v0.9.4

func NewOrConfig() OrConfig

NewOrConfig returns a OrConfig with default values.

type Resource added in v0.9.7

type Resource struct {
	// contains filtered or unexported fields
}

Resource is a condition that returns the result of a condition resource.

func (*Resource) Check added in v0.9.7

func (c *Resource) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type Static added in v0.11.6

type Static struct {
	// contains filtered or unexported fields
}

Static is a condition that always returns a static boolean value.

func (*Static) Check added in v0.11.6

func (s *Static) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type Text added in v0.17.0

type Text struct {
	// contains filtered or unexported fields
}

Text is a condition that checks message text against logical operators.

func (*Text) Check added in v0.17.0

func (c *Text) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type TextConfig added in v0.17.0

type TextConfig struct {
	Operator string `json:"operator" yaml:"operator"`
	Part     int    `json:"part" yaml:"part"`
	Arg      string `json:"arg" yaml:"arg"`
}

TextConfig is a configuration struct containing fields for the text condition.

func NewTextConfig added in v0.17.0

func NewTextConfig() TextConfig

NewTextConfig returns a TextConfig with default values.

type Type

type Type interface {
	// Check tests a message against a configured condition.
	Check(msg types.Message) bool
}

Type reads a message, calculates a condition and returns a boolean.

func New

func New(conf Config, mgr types.Manager, log log.Modular, stats metrics.Type) (Type, error)

New creates a condition type based on a condition configuration.

func NewAnd added in v0.9.4

func NewAnd(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewAnd returns an And condition.

func NewCount added in v0.11.2

func NewCount(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewCount returns a Count processor.

func NewJMESPath added in v0.9.8

func NewJMESPath(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewJMESPath returns a JMESPath condition.

func NewNot added in v0.9.4

func NewNot(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewNot returns a Not processor.

func NewOr added in v0.9.4

func NewOr(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewOr returns an Or processor.

func NewResource added in v0.9.7

func NewResource(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewResource returns a resource condition.

func NewStatic added in v0.11.6

func NewStatic(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewStatic returns a Static condition.

func NewText added in v0.17.0

func NewText(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewText returns a Text condition.

func NewXor added in v0.9.8

func NewXor(
	conf Config, mgr types.Manager, log log.Modular, stats metrics.Type,
) (Type, error)

NewXor returns an Xor processor.

type TypeSpec

type TypeSpec struct {
	// contains filtered or unexported fields
}

TypeSpec Constructor and a usage description for each condition type.

type Xor added in v0.9.8

type Xor struct {
	// contains filtered or unexported fields
}

Xor is a condition that returns the logical xor of all children.

func (*Xor) Check added in v0.9.8

func (c *Xor) Check(msg types.Message) bool

Check attempts to check a message part against a configured condition.

type XorConfig added in v0.9.8

type XorConfig []Config

XorConfig is a configuration struct containing fields for the Xor condition.

func NewXorConfig added in v0.9.8

func NewXorConfig() XorConfig

NewXorConfig returns a XorConfig with default values.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL