uarand.go

 1package uarand
 2
 3import (
 4	"math/rand"
 5	"time"
 6)
 7
 8var (
 9	// Default is the UARand with default settings.
10	Default = New(
11		rand.New(
12			rand.NewSource(time.Now().UnixNano()),
13		),
14	)
15)
16
17// Randomizer represents some entity which could provide us an entropy.
18type Randomizer interface {
19	Seed(n int64)
20	Intn(n int) int
21}
22
23// UARand describes the user agent randomizer settings.
24type UARand struct {
25	Randomizer
26}
27
28// GetRandom returns a random user agent from UserAgents slice.
29func (u *UARand) GetRandom() string {
30	return UserAgents[u.Intn(len(UserAgents))]
31}
32
33// GetRandom returns a random user agent from UserAgents slice.
34// This version is driven by Default configuration.
35func GetRandom() string {
36	return Default.GetRandom()
37}
38
39func New(r Randomizer) *UARand {
40	return &UARand{r}
41}