/
helpers.go
83 lines (70 loc) · 1.63 KB
/
helpers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main
import (
"encoding/json"
"log"
"os"
"path/filepath"
"time"
"github.com/supu-io/messages"
)
// ToJSON represents an object as a json []byte
func ToJSON(i interface{}) []byte {
json, err := json.Marshal(i)
if err != nil {
log.Println(err)
}
return json
}
// GenerateErrorMessage : Generates an error message from an error
// sent through an api response
func GenerateErrorMessage(err error) string {
return GetErrorMessage(err.Error())
}
// GetErrorMessage : Generates an error message from a string
// sent through an api response
func GetErrorMessage(err string) string {
return "{\"error\":\"" + err + "\"}"
}
// Request : does a nats request over the given subject and
// struct
func Request(subject string, msg interface{}) string {
wait := 10000 * time.Millisecond
body := ToJSON(msg)
res, err := nc.Request(subject, body, wait)
if err != nil {
return GenerateErrorMessage(err)
}
return string(res.Data)
}
func config() messages.Config {
c := messages.Config{}
file, err := os.Open("config.json")
if err != nil {
log.Panic("error:", err)
}
decoder := json.NewDecoder(file)
err = decoder.Decode(&c)
if err != nil {
log.Println("Config file is invalid")
log.Panic("error:", err)
}
return c
}
func getWorkflow() messages.Workflow {
if source == "" {
source = "./workflows/default.json"
}
absPath, err := filepath.Abs(source)
file, err := os.Open(absPath)
if err != nil {
log.Panic("error:", err)
}
decoder := json.NewDecoder(file)
w := messages.Workflow{}
err = decoder.Decode(&w)
if err != nil {
log.Println("Workflow " + source + " not found")
log.Panic("error:", err)
}
return w
}