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
|
# frozen_string_literal: true
module FFaker
module InternetSE
include Internet
extend ModuleUtils
extend self
BYTE = Array('0'..'255').freeze
HOSTS = %w[gmail.com yahoo.com hotmail.com spray.se passagen.se].freeze
DOMAIN_SUFFIXES = %w[se nu com].freeze
DISPOSABLE_HOSTS = %w[
mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info
].freeze
SLUG_DELIMITERS = %w[- _ .].freeze
def email(name = nil)
+"#{user_name(name)}@#{domain_name}"
end
# Returns an email address of an online disposable email service
# (like tempinbox.com). you can really send an email to these
# addresses an access it by going to the service web pages.
def disposable_email(name = nil)
"#{user_name(name)}@#{fetch_sample(DISPOSABLE_HOSTS)}"
end
def free_email(name = nil)
"#{user_name(name)}@#{fetch_sample(HOSTS)}"
end
# Used to fake login names were dot is not allowed
def login_user_name
user_name.tr('.', '')
end
# Mostly used for email creation
def user_name(name = nil)
return user_name_from_name(name) if name
user_name_random
end
def user_name_random
rand(0..1).zero? ? user_name_variant_short : user_name_variant_long
end
def user_name_variant_long
array_parts = [NameSE.first_name, NameSE.last_name]
array_parts.map! { |word| word.gsub(/\W/, '') }
join_to_user_name(array_parts)
end
def user_name_variant_short
array_parts = [NameSE.first_name]
array_parts.map! { |word| word.gsub(/\W/, '') }
join_to_user_name(array_parts)
end
def user_name_from_name(name)
array_parts = shuffle(name.scan(/\w+/))
join_to_user_name(array_parts)
end
def join_to_user_name(array_parts)
join_char = fetch_sample(%w[. _])
array_parts.map(&:downcase).join(join_char)
end
def domain_name
"#{domain_word}.#{domain_suffix}"
end
def domain_word
company_name_single_word.tap do |dw|
dw.gsub!(/\W/, '')
dw.downcase!
end
end
def company_name_single_word
CompanySE.name.split(' ').first
end
def domain_suffix
fetch_sample(DOMAIN_SUFFIXES)
end
def uri(protocol)
"#{protocol}://#{domain_name}"
end
def http_url
uri('http')
end
def ip_v4_address
(1..4).map { fetch_sample(BYTE) }.join('.')
end
def slug(words = nil, glue = nil)
glue ||= fetch_sample(SLUG_DELIMITERS)
(words || FFaker::Lorem.words(2).join(' ')).gsub(' ', glue).downcase
end
end
end
|