-
Notifications
You must be signed in to change notification settings - Fork 15
/
utils.go
109 lines (96 loc) · 1.87 KB
/
utils.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Common utilities
package utils
import (
"bytes"
"fmt"
"strconv"
"strings"
"time"
)
var (
urlPrefix []string = []string{"http://", "https://"}
)
func TrimRootPath(id string) string {
if strings.HasPrefix(id, "/") {
return strings.TrimPrefix(id, "/")
}
return id
}
func Contains(elements []string, value string) bool {
for _, element := range elements {
if element == value {
return true
}
}
return false
}
func BuildPath(host string, elements []string) string {
var buffer bytes.Buffer
buffer.WriteString(TrimRootPath(host))
for _, e := range elements {
buffer.WriteString("/")
buffer.WriteString(e)
}
return buffer.String()
}
func ConcatInts(iarr []int) string {
var b bytes.Buffer
for idx, i := range iarr {
if idx > 0 {
b.WriteString(" ,")
}
b.WriteString(strconv.Itoa(i))
}
return b.String()
}
/** Concats a string array of ids in the form of /id with an output string of id, id2, etc */
func ConcatIdentifiers(ids []string) string {
if ids == nil {
return ""
}
var b bytes.Buffer
for idx, id := range ids {
if idx > 0 {
b.WriteString(" ,")
}
b.WriteString(TrimRootPath(id))
}
return b.String()
}
func HasURLScheme(url string) bool {
return HasPrefix(url, urlPrefix...)
}
func HasPrefix(str string, prefixes ...string) bool {
for _, prefix := range prefixes {
if strings.HasPrefix(str, prefix) {
return true
}
}
return false
}
func ElapsedStr(d time.Duration) string {
return fmt.Sprintf("%0.2f sec(s)", d.Seconds())
}
func IntInSlice(a int, list []int) bool {
for _, b := range list {
if b == a {
return true
}
}
return false
}
func StringInSlice(a string, list []string) bool {
for _, b := range list {
if b == a {
return true
}
}
return false
}
func MapStringKeysToSlice(m map[string]string) []string {
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
return keys
}