refactor triggger/action registration
This commit is contained in:
@@ -49,7 +49,7 @@ func (t EthernetDisconnect) Listen() {
|
||||
actions.Fire(t.action)
|
||||
}
|
||||
|
||||
func NewEthernetDisconnect(config internal.KillSwitchConfig) (EthernetDisconnect, error) {
|
||||
func (e EthernetDisconnect) Create(config internal.KillSwitchConfig) (Trigger, error) {
|
||||
result := EthernetDisconnect{
|
||||
WaitTillConnected: true,
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ func (t TimeOut) Listen() {
|
||||
actions.Fire(t.action)
|
||||
}
|
||||
|
||||
func NewTimeOut(config internal.KillSwitchConfig) (TimeOut, error) {
|
||||
func (t TimeOut) Create(config internal.KillSwitchConfig) (Trigger, error) {
|
||||
var result TimeOut
|
||||
err := json.Unmarshal(config.Options, &result)
|
||||
|
||||
|
||||
@@ -8,23 +8,37 @@ import (
|
||||
|
||||
type Trigger interface {
|
||||
Listen()
|
||||
Create(internal.KillSwitchConfig) (Trigger, error)
|
||||
}
|
||||
|
||||
type DocumentedTrigger interface {
|
||||
internal.Documenter
|
||||
Trigger
|
||||
}
|
||||
|
||||
func NewTrigger(config internal.KillSwitchConfig) (Trigger, error) {
|
||||
if config.Type == "Timeout" {
|
||||
return NewTimeOut(config)
|
||||
}
|
||||
|
||||
if config.Type == "EthernetDisconnect" {
|
||||
return NewEthernetDisconnect(config)
|
||||
for _, availableTrigger := range GetAllTriggers() {
|
||||
if config.Type == availableTrigger.GetName() {
|
||||
return availableTrigger.Create(config)
|
||||
}
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("Error parsing config: Trigger with type %s does not exists", config.Type)
|
||||
}
|
||||
|
||||
func GetDocumenters() []internal.Documenter {
|
||||
return []internal.Documenter{
|
||||
func GetAllTriggers() []DocumentedTrigger {
|
||||
return []DocumentedTrigger{
|
||||
TimeOut{},
|
||||
EthernetDisconnect{},
|
||||
}
|
||||
}
|
||||
|
||||
func GetDocumenters() []internal.Documenter {
|
||||
var result []internal.Documenter
|
||||
|
||||
for _, action := range GetAllTriggers() {
|
||||
result = append(result, action)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user