Documentation
¶
Index ¶
- Constants
- Variables
- func IsRuntimeSupported(runtime string) bool
- type AccountValue
- type Action
- type ActionSpec
- type AddressField
- type AddressValue
- type AlertTrigger
- type AnyValue
- type BlockTrigger
- type ContractValue
- type EthBalanceField
- type EthBalanceValue
- type EventEmittedField
- type EventEmittedValue
- type FunctionField
- type FunctionValue
- type Hex64
- type IntField
- type IntValue
- type InternalLocator
- type LogEmittedField
- type LogEmittedValue
- type MapValue
- type NamedActionSpecs
- type NetworkField
- type PeriodicTrigger
- type ProjectActions
- type SignatureValue
- type StateChangedField
- type StateChangedValue
- type StatusField
- type StrField
- type Template
- type TemplateArg
- type TransactionFilter
- type TransactionStatus
- type TransactionTrigger
- type Trigger
- type TriggerUnparsed
- type ValidateResponse
- type Validator
- type ValidatorContext
- type WebhookTrigger
Constants ¶
View Source
const ( SequentialExecutionType = "sequential" ParallelExecutionType = "parallel" )
Variables ¶
View Source
var ( RuntimeV1 = "v1" RuntimeV2 = "v2" SupportedRuntimes = []string{RuntimeV1, RuntimeV2} TriggerTypes = []string{"periodic", "webhook", "block", "transaction", "alert"} PeriodicType = "periodic" WebhookType = "webhook" BlockType = "block" TransactionType = "transaction" AlertType = "alert" Invocations = []string{"any", "direct", "internal"} InvocationAny = "any" InvocationDirect = "direct" InvocationInternal = "internal" Intervals = []string{"5m", "10m", "15m", "30m", "1h", "3h", "6h", "12h", "1d"} IntervalToCron = map[string]string{ "5m": "*/5 * * * *", "10m": "*/10 * * * *", "15m": "*/15 * * * *", "30m": "*/30 * * * *", "1h": "0 * * * *", "3h": "0 */3 * * *", "6h": "0 */6 * * *", "12h": "0 */12 * * *", "1d": "0 0 * * *", } CronParser = cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow) AddressRegex = "^0x[0-9a-f]{40}$" AddressRe = regexp.MustCompile(AddressRegex) SigRegex = "^0x[0-9a-f]{8}$" SigRe = regexp.MustCompile(SigRegex) MsgTriggerTypeNotSupported = "trigger type '%s' not supported, supported types %s" MsgTriggerTypeMismatch = "trigger type '%s' different from configured trigger" MsgNetworkNotSupported = "network '%s' is not supported" MsgStatusNotSupported = "status '%s' is not supported, supported statuses %s" MsgAddressDoesNotMatchRegex = "address '%s' does not match regex %s" MsgSignatureDoesNotMatchRegex = "signature '%s' does not match regex '%s'" MsgDefaultToAuthenticated = "authenticated not set, defaulting to true" MsgIntervalOrCronRequired = "one of 'cron' or 'interval' is required" MsgIntervalAndCronForbidden = "both 'cron' and 'interval' is forbidden" MsgIntervalNotSupported = "interval '%s' not supported, supported intervals %s" MsgCronNotSupported = "cron '%s' is not supported, got error %s" MsgBlocksNegative = "blocks must be greater than 0, found %d" MsgDefaultToAnyInvocation = "invocation not set for contract, defaulting to any" MsgInvocationNotSupported = "invocation '%s' not supported, supported invocations %s" MsgAccountOrContractRequired = "one of 'account' or 'contract' is required" MsgAccountAndContractForbidden = "both 'account' and 'contract' is forbidden" MsgContractRequired = "'contract' is required" MsgSignatureOrNameRequired = "one of 'signature' or 'name' is required" MsgSignatureAndNameForbidden = "both 'signature' and 'name' is forbidden" MsgSignatureAndParameterForbidden = "'parameter' can not be used with 'signature'" MsgIdOrNameRequired = "one of 'id' or 'name' is required" MsgIdAndNameForbidden = "both 'id' and 'name' is forbidden" MsgIdAndParameterForbidden = "'parameter' can not be used with 'id'" MsgKeyOrFieldRequired = "one of 'key' or 'field' is required" MsgKeyAndFieldForbidden = "both 'key' and 'field' is forbidden" MsgKeyAndValueOrPreviousValueForbidden = "'value' or 'previousValue' can not be used with 'key'" MsgValueAndPreviousValueForbidden = "both 'value' and 'previousValue' is forbidden" MsgTxStatusNotSupported = "transaction status '%s' not supported, supported %s" MsgStatusRequired = "'status' must have at least one element" MsgFiltersRequired = "'filters' must have at least one element" MsgStartsWithEmpty = "'startsWith' must have at least one element" MsgStartsWithInvalid = "'startsWith' element must be hex encoded and start with 0x" MsgHexValueEmpty = "expected non-empty hex value" MsgHexValueInvalid = "hex value must start with 0x, got %s" MsgMinFilterConstraint = "constraint for minimum transaction filters must be fulfilled" )
Functions ¶
func IsRuntimeSupported ¶ added in v1.4.9
Types ¶
type AccountValue ¶
type AccountValue struct {
Address AddressValue `yaml:"address" json:"address"`
}
func (*AccountValue) Validate ¶
func (a *AccountValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type ActionSpec ¶
type ActionSpec struct {
Description *string `json:"description,omitempty" yaml:"description,omitempty"`
Function string `json:"function" yaml:"function"`
// Parsing and validation of trigger happens later, and Trigger field is set
Trigger TriggerUnparsed `json:"trigger" yaml:"trigger"`
TriggerParsed *Trigger `json:"-" yaml:"-"`
ExecutionType string `json:"execution_type" yaml:"execution_type"`
}
func (*ActionSpec) Parse ¶
func (a *ActionSpec) Parse() error
type AddressField ¶
type AddressField struct {
Values []AddressValue
}
func (*AddressField) ToRequest ¶
func (a *AddressField) ToRequest() (response []actions.ComparableStr)
func (*AddressField) UnmarshalJSON ¶
func (a *AddressField) UnmarshalJSON(bytes []byte) error
func (*AddressField) Validate ¶
func (a *AddressField) Validate(ctx ValidatorContext) (response ValidateResponse)
type AddressValue ¶
type AddressValue struct {
Value string
}
func (AddressValue) String ¶
func (a AddressValue) String() string
func (*AddressValue) UnmarshalJSON ¶
func (a *AddressValue) UnmarshalJSON(bytes []byte) error
func (*AddressValue) Validate ¶
func (a *AddressValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type AlertTrigger ¶
type AlertTrigger struct{}
func (*AlertTrigger) ToRequest ¶
func (a *AlertTrigger) ToRequest() actions.Trigger
func (*AlertTrigger) Validate ¶
func (a *AlertTrigger) Validate(ctx ValidatorContext) (response ValidateResponse)
type AnyValue ¶
func (*AnyValue) ToRequest ¶
func (a *AnyValue) ToRequest() actions.ComparableAny
func (*AnyValue) UnmarshalJSON ¶
type BlockTrigger ¶
type BlockTrigger struct {
Network NetworkField `yaml:"network"`
Blocks int `yaml:"blocks"`
}
func (*BlockTrigger) ToRequest ¶
func (t *BlockTrigger) ToRequest() actions.Trigger
func (*BlockTrigger) Validate ¶
func (t *BlockTrigger) Validate(ctx ValidatorContext) (response ValidateResponse)
type ContractValue ¶
type ContractValue struct {
Address AddressValue `yaml:"address" json:"address"`
Invocation *string `yaml:"invocation" json:"invocation"`
}
func (*ContractValue) ToRequest ¶
func (c *ContractValue) ToRequest() actions.ContractReference
func (*ContractValue) Validate ¶
func (c *ContractValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type EthBalanceField ¶
type EthBalanceField struct {
Values []EthBalanceValue
}
func (*EthBalanceField) ToRequest ¶
func (e *EthBalanceField) ToRequest() (response []actions.EthBalanceFilter)
func (*EthBalanceField) UnmarshalJSON ¶
func (e *EthBalanceField) UnmarshalJSON(bytes []byte) error
func (*EthBalanceField) Validate ¶
func (e *EthBalanceField) Validate(ctx ValidatorContext) (response ValidateResponse)
type EthBalanceValue ¶
type EthBalanceValue struct {
Value IntValue `yaml:"value" json:"value"`
// Exactly one of
Account *AccountValue `yaml:"account" json:"account"`
Contract *ContractValue `yaml:"contract" json:"contract"`
}
func (*EthBalanceValue) ToRequest ¶
func (e *EthBalanceValue) ToRequest() actions.EthBalanceFilter
func (*EthBalanceValue) Validate ¶
func (e *EthBalanceValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type EventEmittedField ¶
type EventEmittedField struct {
Values []EventEmittedValue
}
func (*EventEmittedField) ToRequest ¶
func (e *EventEmittedField) ToRequest() (response []actions.EventEmittedFilter)
func (*EventEmittedField) UnmarshalJSON ¶
func (e *EventEmittedField) UnmarshalJSON(bytes []byte) error
func (*EventEmittedField) Validate ¶
func (e *EventEmittedField) Validate(ctx ValidatorContext) (response ValidateResponse)
type EventEmittedValue ¶
type EventEmittedValue struct {
Contract *ContractValue `yaml:"contract" json:"contract"`
// Exactly one of
Id *string `yaml:"id" json:"id"`
Name *string `yaml:"name" json:"name"`
// Optional, only with Name
Parameter *MapValue `yaml:"parameter" json:"parameter"`
}
func (*EventEmittedValue) ToRequest ¶
func (r *EventEmittedValue) ToRequest() actions.EventEmittedFilter
func (*EventEmittedValue) Validate ¶
func (r *EventEmittedValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type FunctionField ¶
type FunctionField struct {
Values []FunctionValue
}
func (*FunctionField) ToRequest ¶
func (f *FunctionField) ToRequest() (response []actions.FunctionFilter)
func (*FunctionField) UnmarshalJSON ¶
func (f *FunctionField) UnmarshalJSON(bytes []byte) error
func (*FunctionField) Validate ¶
func (f *FunctionField) Validate(ctx ValidatorContext) (response ValidateResponse)
type FunctionValue ¶
type FunctionValue struct {
Contract *ContractValue `yaml:"contract" json:"contract"`
// Exactly one of
Signature *SignatureValue `yaml:"signature" json:"signature"`
Name *string `yaml:"name" json:"name"`
// Optional, only with Name
Parameter *MapValue `yaml:"parameter" json:"parameter"`
}
func (*FunctionValue) ToRequest ¶
func (f *FunctionValue) ToRequest() actions.FunctionFilter
func (*FunctionValue) Validate ¶
func (f *FunctionValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type Hex64 ¶ added in v1.3.2
type Hex64 struct {
Value string
}
func (*Hex64) UnmarshalJSON ¶ added in v1.3.2
func (*Hex64) Validate ¶ added in v1.3.2
func (h *Hex64) Validate(ctx ValidatorContext) (response ValidateResponse)
type IntField ¶
type IntField struct {
Values []IntValue
}
func (*IntField) ToRequest ¶
func (i *IntField) ToRequest() (response []actions.ComparableInt)
func (*IntField) UnmarshalJSON ¶
type IntValue ¶
type IntValue struct {
GTE *int `yaml:"gte" json:"gte"`
LTE *int `yaml:"lte" json:"lte"`
EQ *int `yaml:"eq" json:"eq"`
GT *int `yaml:"gt" json:"gt"`
LT *int `yaml:"lt" json:"lt"`
}
func (IntValue) ToRequest ¶
func (v IntValue) ToRequest() actions.ComparableInt
type InternalLocator ¶
func NewInternalLocator ¶
func NewInternalLocator(function string) (*InternalLocator, error)
type LogEmittedField ¶ added in v1.3.0
type LogEmittedField struct {
Values []LogEmittedValue
}
func (*LogEmittedField) ToRequest ¶ added in v1.3.0
func (l *LogEmittedField) ToRequest() (response []actions.LogEmittedFilter)
func (*LogEmittedField) UnmarshalJSON ¶ added in v1.3.0
func (l *LogEmittedField) UnmarshalJSON(bytes []byte) error
func (*LogEmittedField) Validate ¶ added in v1.3.0
func (l *LogEmittedField) Validate(ctx ValidatorContext) (response ValidateResponse)
type LogEmittedValue ¶ added in v1.3.0
type LogEmittedValue struct {
StartsWith []Hex64 `yaml:"startsWith" json:"startsWith"`
Contract *ContractValue `yaml:"contract" json:"contract"`
MatchAny bool `yaml:"matchAny" json:"matchAny,omitempty"`
}
func (*LogEmittedValue) ToRequest ¶ added in v1.3.0
func (l *LogEmittedValue) ToRequest() actions.LogEmittedFilter
func (*LogEmittedValue) Validate ¶ added in v1.3.0
func (l *LogEmittedValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type MapValue ¶
type MapValue struct {
Key string `yaml:"key" json:"key"`
Value AnyValue `yaml:"value" json:"value"`
}
func (MapValue) ToRequest ¶
func (f MapValue) ToRequest() actions.ComparableMap
type NamedActionSpecs ¶
type NamedActionSpecs map[string]*ActionSpec
NamedActionSpecs is a map from action name to action spec
type NetworkField ¶
type NetworkField struct {
Value StrField
}
func (*NetworkField) ToRequest ¶
func (n *NetworkField) ToRequest() (response []string)
func (*NetworkField) UnmarshalJSON ¶
func (n *NetworkField) UnmarshalJSON(bytes []byte) error
func (*NetworkField) Validate ¶
func (n *NetworkField) Validate(ctx ValidatorContext) (response ValidateResponse)
type PeriodicTrigger ¶
type PeriodicTrigger struct {
// One of must be present
Interval *string `yaml:"interval" json:"interval"`
Cron *string `yaml:"cron" json:"cron"`
}
func (*PeriodicTrigger) ToRequest ¶
func (t *PeriodicTrigger) ToRequest() actions.Trigger
func (*PeriodicTrigger) Validate ¶
func (t *PeriodicTrigger) Validate(ctx ValidatorContext) (response ValidateResponse)
type ProjectActions ¶
type ProjectActions struct {
Runtime string `json:"runtime" yaml:"runtime"`
Sources string `json:"sources" yaml:"sources"`
Dependencies *string `json:"dependencies,omitempty" yaml:"dependencies,omitempty"`
Specs NamedActionSpecs `json:"specs" yaml:"specs"`
}
func (*ProjectActions) ToRequest ¶
func (s *ProjectActions) ToRequest(sources map[string]string) map[string]actions.ActionSpec
type SignatureValue ¶
type SignatureValue struct {
Value string
}
func (SignatureValue) String ¶
func (s SignatureValue) String() string
func (*SignatureValue) UnmarshalJSON ¶
func (s *SignatureValue) UnmarshalJSON(bytes []byte) error
func (*SignatureValue) Validate ¶
func (s *SignatureValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type StateChangedField ¶
type StateChangedField struct {
Values []StateChangedValue
}
func (*StateChangedField) ToRequest ¶
func (s *StateChangedField) ToRequest() (response []actions.StateChangedFilter)
func (*StateChangedField) UnmarshalJSON ¶
func (s *StateChangedField) UnmarshalJSON(bytes []byte) error
func (*StateChangedField) Validate ¶
func (s *StateChangedField) Validate(ctx ValidatorContext) (response ValidateResponse)
type StateChangedValue ¶
type StateChangedValue struct {
Contract *ContractValue `yaml:"contract" json:"contract"`
// Exactly one of
Key *string `yaml:"key" json:"key"`
Field *string `yaml:"field" json:"field"`
// At most one of, only with Field
// If none, any state changed at given key is considered
Value *AnyValue `yaml:"value" json:"value"`
PreviousValue *AnyValue `yaml:"previousValue" json:"previousValue"`
}
func (*StateChangedValue) ToRequest ¶
func (r *StateChangedValue) ToRequest() actions.StateChangedFilter
func (*StateChangedValue) Validate ¶
func (r *StateChangedValue) Validate(ctx ValidatorContext) (response ValidateResponse)
type StatusField ¶
type StatusField struct {
Value StrField
}
func (*StatusField) ToRequest ¶
func (s *StatusField) ToRequest() (response []actions.Status)
func (*StatusField) UnmarshalJSON ¶
func (s *StatusField) UnmarshalJSON(bytes []byte) error
func (*StatusField) Validate ¶
func (s *StatusField) Validate(ctx ValidatorContext) (response ValidateResponse)
type StrField ¶
type StrField struct {
Values []string
}
func (*StrField) ToRequest ¶
func (s *StrField) ToRequest() (response []actions.ComparableStr)
func (*StrField) UnmarshalJSON ¶
type Template ¶
type Template struct {
Files []string `yaml:"files"`
Args []TemplateArg `yaml:"args"`
// contains filtered or unexported fields
}
type TemplateArg ¶
type TransactionFilter ¶
type TransactionFilter struct {
Network *NetworkField `yaml:"network" json:"network"`
Status *StatusField `yaml:"status" json:"status"`
From *AddressField `yaml:"from" json:"from"`
To *AddressField `yaml:"to" json:"to"`
Value *IntField `yaml:"value" json:"value"`
GasLimit *IntField `yaml:"gasLimit" json:"gasLimit"`
GasUsed *IntField `yaml:"gasUsed" json:"gasUsed"`
Fee *IntField `yaml:"fee" json:"fee"`
// If set, applies to all underlying fields that need contract, but those can override this one
Contract *ContractValue `yaml:"contract" json:"contract"`
Function *FunctionField `yaml:"function" json:"function"`
EventEmitted *EventEmittedField `yaml:"eventEmitted" json:"eventEmitted"`
LogEmitted *LogEmittedField `yaml:"logEmitted" json:"logEmitted"`
EthBalance *EthBalanceField `yaml:"ethBalance" json:"ethBalance"`
StateChanged *StateChangedField `yaml:"stateChanged" json:"stateChanged"`
}
func (*TransactionFilter) ToRequest ¶
func (t *TransactionFilter) ToRequest() (response actions.Filter)
func (*TransactionFilter) Validate ¶
func (t *TransactionFilter) Validate(ctx ValidatorContext) (response ValidateResponse)
type TransactionStatus ¶
type TransactionStatus struct {
Value StrField
}
func (*TransactionStatus) ToRequest ¶
func (s *TransactionStatus) ToRequest() (response []actions.TransactionStatus)
func (*TransactionStatus) UnmarshalJSON ¶
func (s *TransactionStatus) UnmarshalJSON(bytes []byte) error
func (*TransactionStatus) Validate ¶
func (s *TransactionStatus) Validate(ctx ValidatorContext) (response ValidateResponse)
type TransactionTrigger ¶
type TransactionTrigger struct {
Status TransactionStatus `yaml:"status" json:"status"`
Filters []TransactionFilter `yaml:"filters" json:"filters"`
}
func (*TransactionTrigger) ToRequest ¶
func (t *TransactionTrigger) ToRequest() actions.Trigger
func (*TransactionTrigger) Validate ¶
func (t *TransactionTrigger) Validate(ctx ValidatorContext) (response ValidateResponse)
type Trigger ¶
type Trigger struct {
Type string `json:"type" yaml:"type"`
Periodic *PeriodicTrigger `json:"periodic" yaml:"periodic,omitempty"`
Webhook *WebhookTrigger `json:"webhook" yaml:"webhook,omitempty"`
Block *BlockTrigger `json:"block" yaml:"block,omitempty"`
Transaction *TransactionTrigger `json:"transaction" yaml:"transaction,omitempty"`
Alert *AlertTrigger `json:"alert" yaml:"alert,omitempty"`
}
func (Trigger) ToRequestType ¶
func (a Trigger) ToRequestType() actions.TriggerType
func (Trigger) Validate ¶
func (a Trigger) Validate(ctx ValidatorContext) (response ValidateResponse)
type TriggerUnparsed ¶
type TriggerUnparsed struct {
Type string `json:"type" yaml:"type"`
Block interface{} `json:"block,omitempty" yaml:"block,omitempty"`
Webhook interface{} `json:"webhook,omitempty" yaml:"webhook,omitempty"`
Periodic interface{} `json:"periodic,omitempty" yaml:"periodic,omitempty"`
Transaction interface{} `json:"transaction,omitempty" yaml:"transaction,omitempty"`
Alert interface{} `json:"alert,omitempty" yaml:"alert,omitempty"`
}
type ValidateResponse ¶
func (*ValidateResponse) Error ¶
func (v *ValidateResponse) Error(c ValidatorContext, msg string, args ...interface{}) ValidateResponse
func (*ValidateResponse) Info ¶
func (v *ValidateResponse) Info(c ValidatorContext, msg string, args ...interface{}) ValidateResponse
func (*ValidateResponse) Merge ¶
func (v *ValidateResponse) Merge(response ValidateResponse) ValidateResponse
type Validator ¶
type Validator interface {
Validate(ValidatorContext) (response ValidateResponse)
}
type ValidatorContext ¶
type ValidatorContext string
func (ValidatorContext) With ¶
func (c ValidatorContext) With(element string) ValidatorContext
type WebhookTrigger ¶
type WebhookTrigger struct {
Authenticated *bool `yaml:"authenticated" json:"authenticated"`
}
func (*WebhookTrigger) ToRequest ¶
func (t *WebhookTrigger) ToRequest() actions.Trigger
func (*WebhookTrigger) Validate ¶
func (t *WebhookTrigger) Validate(ctx ValidatorContext) (response ValidateResponse)
Click to show internal directories.
Click to hide internal directories.