forked from marcos-gonalons/tradingview-scraper
/
utils.go
37 lines (32 loc) · 866 Bytes
/
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
package tradingview
import (
"encoding/json"
"math/rand"
"time"
)
// GetRandomString ...
func GetRandomString(length int) string {
var src = rand.NewSource(time.Now().UnixNano())
var characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var letterIdxBits int = 6
var letterIdxMask int64 = 1<<letterIdxBits - 1
var letterIdxMax = 63 / letterIdxBits
requestID := make([]byte, length)
for i, cache, remain := length-1, src.Int63(), letterIdxMax; i >= 0; {
if remain == 0 {
cache, remain = src.Int63(), letterIdxMax
}
if idx := int(cache & letterIdxMask); idx < len(characters) {
requestID[i] = characters[idx]
i--
}
cache >>= letterIdxBits
remain--
}
return string(requestID)
}
// GetStringRepresentation ...
func GetStringRepresentation(data interface{}) string {
str, _ := json.Marshal(data)
return string(str)
}