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}