github.com/influx6/npkg@v0.8.8/nstr/str.go (about) 1 package nstr 2 3 import ( 4 "crypto/rand" 5 "fmt" 6 mrand "math/rand" 7 ) 8 9 func RandomBytes(size int) ([]byte, error) { 10 b := make([]byte, size) 11 _, err := rand.Read(b) 12 if err != nil { 13 return nil, err 14 } 15 return b, nil 16 } 17 18 func RandomIDWithFormat(size int, format string, splitFn func(b []byte) []interface{}) string { 19 var b, err = RandomBytes(size) 20 if err != nil { 21 return "" 22 } 23 return fmt.Sprintf(format, splitFn(b)...) 24 } 25 26 func RandomID() string { 27 return RandomIDWithFormat(8, "%x-%x-%x-%x", func(b []byte) []interface{} { 28 return []interface{}{ 29 b[0:2], b[2:4], b[4:6], b[6:8], 30 } 31 }) 32 } 33 34 func RandomText() string { 35 return RandomIDWithFormat(8, "%x%x%x%x", func(b []byte) []interface{} { 36 return []interface{}{ 37 b[0:2], b[2:4], b[4:6], b[6:8], 38 } 39 }) 40 } 41 42 var alphabets = "abcdefghijklmnoprz" 43 44 func RandomAlphabets() string { 45 var in = mrand.Intn(len(alphabets)) 46 return string(alphabets[in]) 47 }