/usr/share/rubygems-integration/all/gems/faker-1.6.6/lib/faker/internet.rb is in ruby-faker 1.6.6-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | # encoding: utf-8
module Faker
class Internet < Base
class << self
def email(name = nil)
[user_name(name), domain_name].join('@')
end
def free_email(name = nil)
[user_name(name), fetch('internet.free_email')].join('@')
end
def safe_email(name = nil)
[user_name(name), 'example.'+ %w[org com net].shuffle.first].join('@')
end
def user_name(specifier = nil, separators = %w(. _))
with_locale(:en) do
if specifier.kind_of? String
return specifier.scan(/\w+/).shuffle.join(separators.sample).downcase
elsif specifier.kind_of? Integer
tries = 0 # Don't try forever in case we get something like 1_000_000.
begin
result = user_name nil, separators
tries += 1
end while result.length < specifier and tries < 7
until result.length >= specifier
result = result * 2
end
return result
elsif specifier.kind_of? Range
tries = 0
begin
result = user_name specifier.min, separators
tries += 1
end while not specifier.include? result.length and tries < 7
return result[0...specifier.max]
end
[
Char.prepare(Name.first_name),
[Name.first_name, Name.last_name].map{ |name|
Char.prepare name
}.join(separators.sample)
].sample
end
end
def password(min_length = 8, max_length = 16, mix_case = true, special_chars = false)
temp = Lorem.characters(min_length)
diff_length = max_length - min_length
if diff_length > 0
diff_rand = rand(diff_length + 1)
temp += Lorem.characters(diff_rand)
end
temp = temp[0..min_length] if min_length > 0
if mix_case
temp.chars.each_with_index do |char, index|
temp[index] = char.upcase if index % 2 == 0
end
end
if special_chars
chars = %w(! @ # $ % ^ & *)
Random.rand(min_length).times do |i|
temp[i] = chars[Random.rand(chars.length)]
end
end
return temp
end
def domain_name
with_locale(:en) { [Char.prepare(domain_word), domain_suffix].join('.') }
end
def fix_umlauts(string)
Char.fix_umlauts string
end
def domain_word
if %w(uk).include? Config.locale
return Char.prepare Company.name.split(' ')[1]
end
Char.prepare Company.name.split(' ').first
end
def domain_suffix
fetch('internet.domain_suffix')
end
def mac_address(prefix='')
prefix_digits = prefix.split(':').map{ |d| d.to_i(16) }
address_digits = (6 - prefix_digits.size).times.map{ rand(256) }
(prefix_digits + address_digits).map{ |d| '%02x' % d }.join(':')
end
def ip_v4_address
(1..4).map { rand(2..254) }.join('.')
end
def private_ip_v4_address
is_private = private_net_checker
addr = nil
begin
addr = ip_v4_address
end while !is_private[addr]
addr
end
def public_ip_v4_address
is_private = private_net_checker
addr = nil
begin
addr = ip_v4_address
end while is_private[addr]
addr
end
def private_nets_regex
[
/^10\./,
/^127\./,
/^169\.254\./,
/^172\.(16|17|18|19|2\d|30|31)\./,
/^192\.168\./
]
end
def private_net_checker
lambda { |addr| private_nets_regex.any? { |net| net =~ addr } }
end
def ip_v4_cidr
"#{ip_v4_address}/#{1 + rand(31)}"
end
def ip_v6_address
(1..8).map { rand(65536).to_s(16) }.join(':')
end
def ip_v6_cidr
"#{ip_v6_address}/#{1 + rand(127)}"
end
def url(host = domain_name, path = "/#{user_name}")
"http://#{host}#{path}"
end
def slug(words = nil, glue = nil)
glue ||= %w[- _ .].sample
(words || Faker::Lorem::words(2).join(' ')).gsub(' ', glue).downcase
end
def device_token
rand(16 ** 64).to_s(16).rjust(64, '0').chars.to_a.shuffle.join
end
end
end
end
|