parse actions json into structs
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"unknown.com/gokill/internal"
|
||||
@@ -17,14 +18,15 @@ func (p Printer) Execute() {
|
||||
}
|
||||
|
||||
func NewPrint(config internal.ActionConfig, c chan bool) (Action, error) {
|
||||
opts := config.Options
|
||||
message, ok := opts["message"]
|
||||
var result Printer
|
||||
err := json.Unmarshal(config.Options, &result)
|
||||
|
||||
if !ok {
|
||||
if err != nil {
|
||||
return nil, internal.OptionMissingError{"message"}
|
||||
}
|
||||
|
||||
return Printer{fmt.Sprintf("%v", message), c}, nil
|
||||
result.ActionChan = c
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (p Printer) GetName() string {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
@@ -19,14 +20,15 @@ func (t TimeOut) Execute() {
|
||||
}
|
||||
|
||||
func NewTimeOut(config internal.ActionConfig, c chan bool) (Action, error) {
|
||||
opts := config.Options
|
||||
duration, ok := opts["duration"]
|
||||
var result TimeOut
|
||||
err := json.Unmarshal(config.Options, &result)
|
||||
|
||||
if !ok {
|
||||
if err != nil {
|
||||
return nil, internal.OptionMissingError{"duration"}
|
||||
}
|
||||
|
||||
return TimeOut{time.Duration(duration.(float64)) * time.Second, c}, nil
|
||||
result.ActionChan = c
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (p TimeOut) GetName() string {
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package internal
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type OptionMissingError struct {
|
||||
OptionName string
|
||||
@@ -10,12 +13,10 @@ func (o OptionMissingError) Error() string {
|
||||
return fmt.Sprintf("Error during config parsing: option %s could not be parsed.", o.OptionName)
|
||||
}
|
||||
|
||||
type Options map[string]interface{}
|
||||
|
||||
type ActionConfig struct {
|
||||
Type string `json:"type"`
|
||||
Options Options `json:"options"`
|
||||
Stage int `json:"stage"`
|
||||
Type string `json:"type"`
|
||||
Options json.RawMessage `json:"options"`
|
||||
Stage int `json:"stage"`
|
||||
}
|
||||
|
||||
type KillSwitchConfig struct {
|
||||
|
||||
Reference in New Issue
Block a user