condition

package
v0.23.15 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2018 License: MIT Imports: 14 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"
	TypeMetadata = "metadata"
	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 (
	ErrInvalidMetadataOperator = errors.New("invalid metadata operator type")
)

Errors for the metadata condition.

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

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

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

func (*And) Check

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

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

type AndConfig

type AndConfig []Config

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

func NewAndConfig

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"`
	Metadata MetadataConfig `json:"metadata" yaml:"metadata"`
	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

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

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

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

type CountConfig

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

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

func NewCountConfig

func NewCountConfig() CountConfig

NewCountConfig returns a CountConfig with default values.

type JMESPath

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

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

func (*JMESPath) Check

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

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

type JMESPathConfig

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

func NewJMESPathConfig() JMESPathConfig

NewJMESPathConfig returns a JMESPathConfig with default values.

type Metadata

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

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

func (*Metadata) Check

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

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

type MetadataConfig

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

MetadataConfig is a configuration struct containing fields for the metadata condition.

func NewMetadataConfig

func NewMetadataConfig() MetadataConfig

NewMetadataConfig returns a MetadataConfig with default values.

type Not

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

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

func (*Not) Check

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

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

type NotConfig

type NotConfig struct {
	*Config
}

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

func NewNotConfig

func NewNotConfig() NotConfig

NewNotConfig returns a NotConfig with default values.

func (NotConfig) MarshalJSON

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

MarshalJSON prints an empty object instead of nil.

func (NotConfig) MarshalYAML

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

MarshalYAML prints an empty object instead of nil.

func (*NotConfig) UnmarshalJSON

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

UnmarshalJSON ensures that when parsing child config it is initialised.

func (*NotConfig) UnmarshalYAML

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

UnmarshalYAML ensures that when parsing child config it is initialised.

type Or

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

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

func (*Or) Check

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

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

type OrConfig

type OrConfig []Config

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

func NewOrConfig

func NewOrConfig() OrConfig

NewOrConfig returns a OrConfig with default values.

type Resource

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

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

func (*Resource) Check

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

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

type Static

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

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

func (*Static) Check

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

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

type Text

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

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

func (*Text) Check

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

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

type TextConfig

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

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

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

NewAnd returns an And condition.

func NewCount

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

NewCount returns a Count processor.

func NewJMESPath

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

NewJMESPath returns a JMESPath condition.

func NewMetadata

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

NewMetadata returns a Metadata condition.

func NewNot

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

NewNot returns a Not processor.

func NewOr

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

NewOr returns an Or processor.

func NewResource

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

NewResource returns a resource condition.

func NewStatic

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

NewStatic returns a Static condition.

func NewText

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

NewText returns a Text condition.

func NewXor

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

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

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

func (*Xor) Check

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

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

type XorConfig

type XorConfig []Config

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

func NewXorConfig

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