1package fake
2
3import (
4 "net"
5 "strings"
6
7 "github.com/corpix/uarand"
8)
9
10// UserName generates user name in one of the following forms
11// first name + last name, letter + last names or concatenation of from 1 to 3 lowercased words
12func UserName() string {
13 gender := randGender()
14 switch r.Intn(3) {
15 case 0:
16 return lookup("en", gender+"_first_names", false) + lookup(lang, gender+"_last_names", false)
17 case 1:
18 return Character() + lookup(lang, gender+"_last_names", false)
19 default:
20 return strings.Replace(WordsN(r.Intn(3)+1), " ", "_", -1)
21 }
22}
23
24// TopLevelDomain generates random top level domain
25func TopLevelDomain() string {
26 return lookup(lang, "top_level_domains", true)
27}
28
29// DomainName generates random domain name
30func DomainName() string {
31 return Company() + "." + TopLevelDomain()
32}
33
34// EmailAddress generates email address
35func EmailAddress() string {
36 return UserName() + "@" + DomainName()
37}
38
39// EmailSubject generates random email subject
40func EmailSubject() string {
41 return Sentence()
42}
43
44// EmailBody generates random email body
45func EmailBody() string {
46 return Paragraphs()
47}
48
49// DomainZone generates random domain zone
50func DomainZone() string {
51 return lookup(lang, "domain_zones", true)
52}
53
54// IPv4 generates IPv4 address
55func IPv4() string {
56 size := 4
57 ip := make([]byte, size)
58 for i := 0; i < size; i++ {
59 ip[i] = byte(r.Intn(256))
60 }
61 return net.IP(ip).To4().String()
62}
63
64// IPv6 generates IPv6 address
65func IPv6() string {
66 size := 16
67 ip := make([]byte, size)
68 for i := 0; i < size; i++ {
69 ip[i] = byte(r.Intn(256))
70 }
71 return net.IP(ip).To16().String()
72}
73
74// UserAgent generates a random user agent.
75func UserAgent() string {
76 return uarand.GetRandom()
77}