Class: Faker::Internet
- Defined in:
- lib/faker/default/internet.rb,
lib/faker/default/internet_http.rb
Defined Under Namespace
Classes: HTTP
Constant Summary
Constants inherited from Base
Base::LLetters, Base::Letters, Base::NOT_GIVEN, Base::Numbers, Base::ULetters
Class Method Summary collapse
-
.base64(length: 16, padding: false, urlsafe: true) ⇒ String
Produces a random string of alphabetic characters, (no digits).
-
.device_token ⇒ Object
Generates random token.
-
.domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false, domain: nil) ⇒ String
Returns the domain name.
-
.domain_suffix ⇒ String
Returns the domain suffix e.g.
-
.domain_word ⇒ String
Returns the domain word for internet.
-
.email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil, domain: nil) ⇒ String
Returns the email address.
-
.fix_umlauts(legacy_string = NOT_GIVEN, string: '') ⇒ String
Fixes ä, ö, ü, ß characters in string passed with ae, oe, ue, ss resp.
-
.free_email(legacy_name = NOT_GIVEN, name: nil) ⇒ String
Returns the email address with doamin either gmail.com, yahoo.com or hotmail.com.
-
.ip_v4_address ⇒ String
Returns the IPv4 address.
-
.ip_v4_cidr ⇒ String
Returns Ipv4 address with CIDR, range from 1 to 31.
-
.ip_v6_address ⇒ String
Returns Ipv6 address.
-
.ip_v6_cidr ⇒ String
Returns Ipv6 address with CIDR, range between 1 to 127.
-
.mac_address(legacy_prefix = NOT_GIVEN, prefix: '') ⇒ String
Returns the MAC address.
-
.password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false) ⇒ String
Produces a randomized string of characters suitable for passwords.
-
.private_ip_v4_address ⇒ String
Returns the private IPv4 address.
-
.private_net_checker ⇒ Lambda
Returns lambda to check if address passed is private or not.
-
.private_nets_regex ⇒ Array
Returns the private network regular expressions.
-
.public_ip_v4_address ⇒ String
Returns the public IPv4 address.
-
.reserved_net_checker ⇒ Lambda
Returns lambda function to check address passed is reserverd or not.
-
.reserved_nets_regex ⇒ Array
Returns the reserved network regular expressions.
-
.safe_email(legacy_name = NOT_GIVEN, name: nil) ⇒ String
Returns the email address with fixed domain name as ‘example’.
-
.slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil) ⇒ String
Returns unique string in URL.
-
.url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http') ⇒ String
Returns URL.
-
.user_agent(legacy_vendor = NOT_GIVEN, vendor: nil) ⇒ String
Generates the random browser identifier.
-
.username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _])) ⇒ String
(also: user_name)
Returns the username.
-
.uuid ⇒ String
Generated universally unique identifier.
Methods inherited from Base
bothify, disable_enforce_available_locales, fetch, fetch_all, flexible, letterify, method_missing, numerify, parse, rand, rand_in_range, regexify, resolve, respond_to_missing?, sample, shuffle, translate, unique, with_locale
Class Method Details
.base64(length: 16, padding: false, urlsafe: true) ⇒ String
Produces a random string of alphabetic characters, (no digits)
550 551 552 553 554 555 556 557 558 559 560 |
# File 'lib/faker/default/internet.rb', line 550 def base64(length: 16, padding: false, urlsafe: true) char_range = [ Array('0'..'9'), Array('A'..'Z'), Array('a'..'z'), urlsafe ? %w[- _] : %w[+ /] ].flatten s = Array.new(length) { sample(char_range) }.join s += '=' if padding s end |
.device_token ⇒ Object
Generates random token
492 493 494 |
# File 'lib/faker/default/internet.rb', line 492 def device_token shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join end |
.domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false, domain: nil) ⇒ String
Returns the domain name
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/faker/default/internet.rb', line 208 def domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false, domain: nil) warn_for_deprecated_arguments do |keywords| keywords << :subdomain if legacy_subdomain != NOT_GIVEN end with_locale(:en) do if domain domain .split('.') .map { |domain_part| Char.prepare(domain_part) } .tap do |domain_elements| domain_elements << domain_suffix if domain_elements.length < 2 domain_elements.unshift(Char.prepare(domain_word)) if subdomain && domain_elements.length < 3 end.join('.') else [domain_word, domain_suffix].tap do |domain_elements| domain_elements.unshift(Char.prepare(domain_word)) if subdomain end.join('.') end end end |
.domain_suffix ⇒ String
Returns the domain suffix e.g. com, org, co, biz, info etc.
270 271 272 |
# File 'lib/faker/default/internet.rb', line 270 def domain_suffix fetch('internet.domain_suffix') end |
.domain_word ⇒ String
Returns the domain word for internet
259 260 261 |
# File 'lib/faker/default/internet.rb', line 259 def domain_word with_locale(:en) { Char.prepare(Company.name.split(' ').first) } end |
.email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil, domain: nil) ⇒ String
Returns the email address
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/faker/default/internet.rb', line 20 def email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil, domain: nil) warn_for_deprecated_arguments do |keywords| keywords << :name if legacy_name != NOT_GIVEN keywords << :separators if legacy_separators != NOT_GIVEN end local_part = if separators username(specifier: name, separators: separators) else username(specifier: name) end sanitized_local_part = sanitize_email_local_part(local_part) construct_email(sanitized_local_part, domain_name(domain: domain)) end |
.fix_umlauts(legacy_string = NOT_GIVEN, string: '') ⇒ String
Fixes ä, ö, ü, ß characters in string passed with ae, oe, ue, ss resp.
243 244 245 246 247 248 249 |
# File 'lib/faker/default/internet.rb', line 243 def fix_umlauts(legacy_string = NOT_GIVEN, string: '') warn_for_deprecated_arguments do |keywords| keywords << :string if legacy_string != NOT_GIVEN end Char.fix_umlauts(string) end |
.free_email(legacy_name = NOT_GIVEN, name: nil) ⇒ String
Returns the email address with doamin either gmail.com, yahoo.com or hotmail.com
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/faker/default/internet.rb', line 46 def free_email(legacy_name = NOT_GIVEN, name: nil) warn_for_deprecated_arguments do |keywords| keywords << :name if legacy_name != NOT_GIVEN end construct_email( sanitize_email_local_part(username(specifier: name)), fetch('internet.free_email') ) end |
.ip_v4_address ⇒ String
Returns the IPv4 address
301 302 303 304 |
# File 'lib/faker/default/internet.rb', line 301 def ip_v4_address [rand_in_range(0, 255), rand_in_range(0, 255), rand_in_range(0, 255), rand_in_range(0, 255)].join('.') end |
.ip_v4_cidr ⇒ String
Returns Ipv4 address with CIDR, range from 1 to 31
409 410 411 |
# File 'lib/faker/default/internet.rb', line 409 def ip_v4_cidr "#{ip_v4_address}/#{rand(1..31)}" end |
.ip_v6_address ⇒ String
Returns Ipv6 address
420 421 422 |
# File 'lib/faker/default/internet.rb', line 420 def ip_v6_address (1..8).map { rand(65_536).to_s(16) }.join(':') end |
.ip_v6_cidr ⇒ String
Returns Ipv6 address with CIDR, range between 1 to 127
431 432 433 |
# File 'lib/faker/default/internet.rb', line 431 def ip_v6_cidr "#{ip_v6_address}/#{rand(1..127)}" end |
.mac_address(legacy_prefix = NOT_GIVEN, prefix: '') ⇒ String
Returns the MAC address
284 285 286 287 288 289 290 291 292 |
# File 'lib/faker/default/internet.rb', line 284 def mac_address(legacy_prefix = NOT_GIVEN, prefix: '') warn_for_deprecated_arguments do |keywords| keywords << :prefix if legacy_prefix != NOT_GIVEN end prefix_digits = prefix.split(':').map { |d| d.to_i(16) } address_digits = Array.new((6 - prefix_digits.size)) { rand(256) } (prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':') end |
.password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false) ⇒ String
Produces a randomized string of characters suitable for passwords
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/faker/default/internet.rb', line 157 def password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false) warn_for_deprecated_arguments do |keywords| keywords << :min_length if legacy_min_length != NOT_GIVEN keywords << :max_length if legacy_max_length != NOT_GIVEN keywords << :mix_case if legacy_mix_case != NOT_GIVEN keywords << :special_characters if legacy_special_characters != NOT_GIVEN end min_alpha = mix_case && min_length > 1 ? 2 : 0 temp = Lorem.characters(number: min_length, min_alpha: min_alpha) diff_length = max_length - min_length if diff_length.positive? diff_rand = rand(diff_length + 1) temp += Lorem.characters(number: diff_rand) end if mix_case alpha_count = 0 temp.chars.each_with_index do |char, index| if char =~ /[[:alpha:]]/ temp[index] = char.upcase if alpha_count.even? alpha_count += 1 end end end if special_characters chars = %w[! @ # $ % ^ & *] rand(1..min_length).times do |i| temp[i] = chars[rand(chars.length)] end end temp end |
.private_ip_v4_address ⇒ String
Returns the private IPv4 address
313 314 315 316 317 318 319 320 |
# File 'lib/faker/default/internet.rb', line 313 def private_ip_v4_address addr = nil loop do addr = ip_v4_address break if private_net_checker[addr] end addr end |
.private_net_checker ⇒ Lambda
Returns lambda to check if address passed is private or not
366 367 368 |
# File 'lib/faker/default/internet.rb', line 366 def private_net_checker ->(addr) { private_nets_regex.any? { |net| net =~ addr } } end |
.private_nets_regex ⇒ Array
Returns the private network regular expressions
345 346 347 348 349 350 351 352 353 354 355 356 |
# File 'lib/faker/default/internet.rb', line 345 def private_nets_regex [ /^10\./, # 10.0.0.0 - 10.255.255.255 /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, # 100.64.0.0 - 100.127.255.255 /^127\./, # 127.0.0.0 - 127.255.255.255 /^169\.254\./, # 169.254.0.0 - 169.254.255.255 /^172\.(1[6-9]|2\d|3[0-1])\./, # 172.16.0.0 - 172.31.255.255 /^192\.0\.0\./, # 192.0.0.0 - 192.0.0.255 /^192\.168\./, # 192.168.0.0 - 192.168.255.255 /^198\.(1[8-9])\./ # 198.18.0.0 - 198.19.255.255 ] end |
.public_ip_v4_address ⇒ String
Returns the public IPv4 address
329 330 331 332 333 334 335 336 |
# File 'lib/faker/default/internet.rb', line 329 def public_ip_v4_address addr = nil loop do addr = ip_v4_address break unless reserved_net_checker[addr] end addr end |
.reserved_net_checker ⇒ Lambda
Returns lambda function to check address passed is reserverd or not
397 398 399 |
# File 'lib/faker/default/internet.rb', line 397 def reserved_net_checker ->(addr) { (private_nets_regex + reserved_nets_regex).any? { |net| net =~ addr } } end |
.reserved_nets_regex ⇒ Array
Returns the reserved network regular expressions
377 378 379 380 381 382 383 384 385 386 387 |
# File 'lib/faker/default/internet.rb', line 377 def reserved_nets_regex [ /^0\./, # 0.0.0.0 - 0.255.255.255 /^192\.0\.2\./, # 192.0.2.0 - 192.0.2.255 /^192\.88\.99\./, # 192.88.99.0 - 192.88.99.255 /^198\.51\.100\./, # 198.51.100.0 - 198.51.100.255 /^203\.0\.113\./, # 203.0.113.0 - 203.0.113.255 /^(22[4-9]|23\d)\./, # 224.0.0.0 - 239.255.255.255 /^(24\d|25[0-5])\./ # 240.0.0.0 - 255.255.255.254 and 255.255.255.255 ] end |
.safe_email(legacy_name = NOT_GIVEN, name: nil) ⇒ String
Returns the email address with fixed domain name as ‘example’
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/faker/default/internet.rb', line 67 def safe_email(legacy_name = NOT_GIVEN, name: nil) warn_for_deprecated_arguments do |keywords| keywords << :name if legacy_name != NOT_GIVEN end construct_email( sanitize_email_local_part(username(specifier: name)), "example.#{sample(%w[org com net])}" ) end |
.slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil) ⇒ String
Returns unique string in URL
475 476 477 478 479 480 481 482 483 |
# File 'lib/faker/default/internet.rb', line 475 def slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil) warn_for_deprecated_arguments do |keywords| keywords << :words if legacy_words != NOT_GIVEN keywords << :glue if legacy_glue != NOT_GIVEN end glue ||= sample(%w[- _]) (words || Faker::Lorem.words(number: 2).join(' ')).delete(',.').gsub(' ', glue).downcase end |
.url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http') ⇒ String
Returns URL
451 452 453 454 455 456 457 458 459 |
# File 'lib/faker/default/internet.rb', line 451 def url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http') warn_for_deprecated_arguments do |keywords| keywords << :host if legacy_host != NOT_GIVEN keywords << :path if legacy_path != NOT_GIVEN keywords << :scheme if legacy_scheme != NOT_GIVEN end "#{scheme}://#{host}#{path}" end |
.user_agent(legacy_vendor = NOT_GIVEN, vendor: nil) ⇒ String
Generates the random browser identifier
508 509 510 511 512 513 514 515 516 |
# File 'lib/faker/default/internet.rb', line 508 def user_agent(legacy_vendor = NOT_GIVEN, vendor: nil) warn_for_deprecated_arguments do |keywords| keywords << :vendor if legacy_vendor != NOT_GIVEN end agent_hash = translate('faker.internet.user_agent') agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)] sample(agents) end |
.username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _])) ⇒ String Also known as: user_name
Returns the username
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 |
# File 'lib/faker/default/internet.rb', line 91 def username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _]) warn_for_deprecated_arguments do |keywords| keywords << :specifier if legacy_specifier != NOT_GIVEN keywords << :separators if legacy_separators != NOT_GIVEN end with_locale(:en) do return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan) case specifier when Integer # If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error raise ArgumentError, 'Given argument is too large' if specifier > 10**6 tries = 0 # Don't try forever in case we get something like 1_000_000. result = nil loop do result = username(specifier: nil, separators: separators) tries += 1 break unless result.length < specifier && tries < 7 end return result * (specifier / result.length + 1) if specifier.positive? when Range tries = 0 result = nil loop do result = username(specifier: specifier.min, separators: separators) tries += 1 break unless !specifier.include?(result.length) && tries < 7 end return result[0...specifier.max] end sample([ Char.prepare(Name.first_name), [Name.first_name, Name.last_name].map do |name| Char.prepare(name) end.join(sample(separators)) ]) end end |
.uuid ⇒ String
Generated universally unique identifier
525 526 527 528 529 530 531 |
# File 'lib/faker/default/internet.rb', line 525 def uuid # borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250 ary = Faker::Config.random.bytes(16).unpack('NnnnnN') ary[2] = (ary[2] & 0x0fff) | 0x4000 ary[3] = (ary[3] & 0x3fff) | 0x8000 '%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString end |