-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson2lineprotocol.go
69 lines (53 loc) · 1.21 KB
/
json2lineprotocol.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
package main
import (
"flag"
"fmt"
"os"
"net/http"
"strings"
"log"
"io/ioutil"
t "github.com/jhrv/json2lineprotocol/transformer"
)
var (
endpoint = flag.String("endpoint", "", "")
tagString = flag.String("tags", "", "")
debug = flag.Bool("debug", false, "")
)
var usage = `Usage: json2lineprotocol [options...]
Options:
-endpoint "endpoint to extract JSON data from"
-tags "tags on the format "key=value,key=value..."
-debug "if set to true, execution outputs detailed descriptions of whats going on"
`
func main() {
flag.Parse()
flag.Usage = func() {
fmt.Fprint(os.Stderr, usage)
}
if *endpoint == "" {
flag.Usage()
fmt.Fprintf(os.Stderr, "\n")
os.Exit(1)
}
if !*debug {
log.SetOutput(ioutil.Discard)
}
req, _ := http.NewRequest("GET", *endpoint, nil)
transformer := t.Transformer{req, mapifyTagString(*tagString)}
output := transformer.Transform()
fmt.Println(output)
}
func mapifyTagString(tagString string) map[string]string {
if tagString == "" {
return nil
}
tags := make(map[string]string)
for _, tag := range strings.Split(tagString, ",") {
splitted := strings.Split(tag, "=")
key := splitted[0]
value := splitted[1]
tags[key] = value
}
return tags
}