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  }