faker 1.7.3 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +90 -3
- data/README.md +45 -0
- data/lib/faker.rb +37 -75
- data/lib/faker/address.rb +12 -7
- data/lib/faker/app.rb +1 -5
- data/lib/faker/bank.rb +1 -0
- data/lib/faker/bitcoin.rb +1 -1
- data/lib/faker/code.rb +1 -1
- data/lib/faker/coffee.rb +29 -0
- data/lib/faker/color.rb +2 -2
- data/lib/faker/commerce.rb +1 -2
- data/lib/faker/company.rb +38 -6
- data/lib/faker/compass.rb +65 -0
- data/lib/faker/dessert.rb +19 -0
- data/lib/faker/dr_who.rb +34 -0
- data/lib/faker/dragon_ball.rb +9 -0
- data/lib/faker/family_guy.rb +17 -0
- data/lib/faker/fillmurray.rb +2 -2
- data/lib/faker/finance.rb +1 -1
- data/lib/faker/food.rb +4 -0
- data/lib/faker/funny_name.rb +43 -0
- data/lib/faker/hacker.rb +1 -1
- data/lib/faker/hey_arnold.rb +17 -0
- data/lib/faker/hipster.rb +3 -3
- data/lib/faker/hitchhikers_guide_to_the_galaxy.rb +33 -0
- data/lib/faker/hobbit.rb +21 -0
- data/lib/faker/how_i_met_your_mother.rb +21 -0
- data/lib/faker/id_number.rb +3 -7
- data/lib/faker/internet.rb +20 -14
- data/lib/faker/league_of_legends.rb +29 -0
- data/lib/faker/lorem.rb +5 -5
- data/lib/faker/lovecraft.rb +73 -0
- data/lib/faker/markdown.rb +66 -0
- data/lib/faker/matz.rb +9 -0
- data/lib/faker/music.rb +2 -2
- data/lib/faker/number.rb +6 -6
- data/lib/faker/omniauth.rb +77 -29
- data/lib/faker/overwatch.rb +17 -0
- data/lib/faker/phone_number.rb +2 -10
- data/lib/faker/pokemon.rb +5 -1
- data/lib/faker/rick_and_morty.rb +17 -0
- data/lib/faker/robin.rb +9 -0
- data/lib/faker/rupaul.rb +11 -0
- data/lib/faker/shakespeare.rb +4 -4
- data/lib/faker/simpsons.rb +22 -0
- data/lib/faker/star_trek.rb +21 -0
- data/lib/faker/star_wars.rb +9 -9
- data/lib/faker/time.rb +2 -2
- data/lib/faker/twitter.rb +114 -43
- data/lib/faker/vehicle.rb +3 -3
- data/lib/faker/version.rb +1 -1
- data/lib/faker/zelda.rb +4 -0
- data/lib/locales/bg.yml +41 -0
- data/lib/locales/de.yml +45 -1
- data/lib/locales/en-IND.yml +2 -2
- data/lib/locales/en-MS.yml +39 -0
- data/lib/locales/en.yml +301 -38
- data/lib/locales/en/README.md +13 -0
- data/lib/locales/en/address.yml +37 -0
- data/lib/locales/en/dr_who.yml +74 -0
- data/lib/locales/en/family_guy.yml +7 -0
- data/lib/locales/en/internet.yml +21 -0
- data/lib/locales/en/lovecraft.yml +9 -0
- data/lib/locales/en/rick_and_morty.yml +6 -0
- data/lib/locales/fr.yml +5 -1
- data/lib/locales/nl.yml +26 -26
- data/lib/locales/pt-BR.yml +1 -1
- metadata +33 -3
data/lib/faker/hobbit.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Faker
|
2
|
+
class Hobbit < Base
|
3
|
+
class << self
|
4
|
+
def character
|
5
|
+
fetch('hobbit.character')
|
6
|
+
end
|
7
|
+
|
8
|
+
def thorins_company
|
9
|
+
fetch('hobbit.thorins_company')
|
10
|
+
end
|
11
|
+
|
12
|
+
def quote
|
13
|
+
fetch('hobbit.quote')
|
14
|
+
end
|
15
|
+
|
16
|
+
def location
|
17
|
+
fetch('hobbit.location')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Faker
|
2
|
+
class HowIMetYourMother < Base
|
3
|
+
class << self
|
4
|
+
def character
|
5
|
+
fetch('how_i_met_your_mother.character')
|
6
|
+
end
|
7
|
+
|
8
|
+
def catch_phrase
|
9
|
+
fetch('how_i_met_your_mother.catch_phrase')
|
10
|
+
end
|
11
|
+
|
12
|
+
def high_five
|
13
|
+
fetch('how_i_met_your_mother.high_five')
|
14
|
+
end
|
15
|
+
|
16
|
+
def quote
|
17
|
+
fetch('how_i_met_your_mother.quote')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/faker/id_number.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Faker
|
2
2
|
class IDNumber < Base
|
3
|
-
|
3
|
+
|
4
4
|
INVALID_SSN = [
|
5
5
|
/0{3}-\d{2}-\d{4}/,
|
6
6
|
/\d{3}-0{2}-\d{4}/,
|
@@ -28,13 +28,9 @@ module Faker
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def _translate(key)
|
31
|
-
|
32
|
-
numerify(fetch("id_number.#{key}"))
|
33
|
-
else
|
34
|
-
parse("id_number.#{key}")
|
35
|
-
end
|
31
|
+
parse("id_number.#{key}")
|
36
32
|
end
|
37
33
|
end
|
38
34
|
|
39
35
|
end
|
40
|
-
end
|
36
|
+
end
|
data/lib/faker/internet.rb
CHANGED
@@ -11,15 +11,15 @@ module Faker
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def safe_email(name = nil)
|
14
|
-
[user_name(name), 'example.'+ %w[org com net]
|
14
|
+
[user_name(name), 'example.'+ sample(%w[org com net])].join('@')
|
15
15
|
end
|
16
16
|
|
17
17
|
def user_name(specifier = nil, separators = %w(. _))
|
18
18
|
with_locale(:en) do
|
19
19
|
if specifier.respond_to?(:scan)
|
20
|
-
return specifier.scan(/\w+/).shuffle.join(separators
|
20
|
+
return specifier.scan(/\w+/).shuffle.join(sample(separators)).downcase
|
21
21
|
elsif specifier.kind_of?(Integer)
|
22
|
-
# If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
|
22
|
+
# If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
|
23
23
|
raise ArgumentError, "Given argument is too large" if specifier > 10**6
|
24
24
|
tries = 0 # Don't try forever in case we get something like 1_000_000.
|
25
25
|
begin
|
@@ -36,12 +36,12 @@ module Faker
|
|
36
36
|
return result[0...specifier.max]
|
37
37
|
end
|
38
38
|
|
39
|
-
[
|
39
|
+
sample([
|
40
40
|
Char.prepare(Name.first_name),
|
41
41
|
[Name.first_name, Name.last_name].map{ |name|
|
42
42
|
Char.prepare(name)
|
43
|
-
}.join(separators
|
44
|
-
]
|
43
|
+
}.join(sample(separators))
|
44
|
+
])
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -61,8 +61,8 @@ module Faker
|
|
61
61
|
|
62
62
|
if special_chars
|
63
63
|
chars = %w(! @ # $ % ^ & *)
|
64
|
-
|
65
|
-
temp[i] = chars[
|
64
|
+
rand(min_length).times do |i|
|
65
|
+
temp[i] = chars[rand(chars.length)]
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -73,13 +73,12 @@ module Faker
|
|
73
73
|
with_locale(:en) { [Char.prepare(domain_word), domain_suffix].join('.') }
|
74
74
|
end
|
75
75
|
|
76
|
-
def fix_umlauts(string)
|
76
|
+
def fix_umlauts(string='')
|
77
77
|
Char.fix_umlauts(string)
|
78
78
|
end
|
79
79
|
|
80
80
|
def domain_word
|
81
|
-
|
82
|
-
Char.prepare(Company.name.split(' ').first)
|
81
|
+
with_locale(:en) { Char.prepare(Company.name.split(' ').first) }
|
83
82
|
end
|
84
83
|
|
85
84
|
def domain_suffix
|
@@ -93,7 +92,8 @@ module Faker
|
|
93
92
|
end
|
94
93
|
|
95
94
|
def ip_v4_address
|
96
|
-
|
95
|
+
ary = (2..254).to_a
|
96
|
+
[ sample(ary), sample(ary), sample(ary), sample(ary) ].join('.')
|
97
97
|
end
|
98
98
|
|
99
99
|
def private_ip_v4_address
|
@@ -160,12 +160,18 @@ module Faker
|
|
160
160
|
end
|
161
161
|
|
162
162
|
def slug(words = nil, glue = nil)
|
163
|
-
glue ||= %w[- _ .]
|
163
|
+
glue ||= sample(%w[- _ .])
|
164
164
|
(words || Faker::Lorem::words(2).join(' ')).gsub(' ', glue).downcase
|
165
165
|
end
|
166
166
|
|
167
167
|
def device_token
|
168
|
-
rand(16 ** 64).to_s(16).rjust(64, '0').chars.to_a.
|
168
|
+
shuffle(rand(16 ** 64).to_s(16).rjust(64, '0').chars.to_a).join
|
169
|
+
end
|
170
|
+
|
171
|
+
def user_agent(vendor = nil)
|
172
|
+
agent_hash = translate('faker.internet.user_agent')
|
173
|
+
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
174
|
+
sample(agents)
|
169
175
|
end
|
170
176
|
end
|
171
177
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Faker
|
2
|
+
class LeagueOfLegends < Base
|
3
|
+
class << self
|
4
|
+
def champion
|
5
|
+
fetch('league_of_legends.champion')
|
6
|
+
end
|
7
|
+
|
8
|
+
def location
|
9
|
+
fetch('league_of_legends.location')
|
10
|
+
end
|
11
|
+
|
12
|
+
def quote
|
13
|
+
fetch('league_of_legends.quote')
|
14
|
+
end
|
15
|
+
|
16
|
+
def summoner_spell
|
17
|
+
fetch('league_of_legends.summoner_spell')
|
18
|
+
end
|
19
|
+
|
20
|
+
def masteries
|
21
|
+
fetch('league_of_legends.masteries')
|
22
|
+
end
|
23
|
+
|
24
|
+
def rank
|
25
|
+
fetch('league_of_legends.rank')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/faker/lorem.rb
CHANGED
@@ -5,7 +5,7 @@ module Faker
|
|
5
5
|
|
6
6
|
class << self
|
7
7
|
def word
|
8
|
-
translate('faker.lorem.words')
|
8
|
+
sample(translate('faker.lorem.words'))
|
9
9
|
end
|
10
10
|
|
11
11
|
def words(num = 3, supplemental = false)
|
@@ -15,17 +15,17 @@ module Faker
|
|
15
15
|
(supplemental ? translate('faker.lorem.supplemental') : [])
|
16
16
|
)
|
17
17
|
word_list = word_list * ((resolved_num / word_list.length) + 1)
|
18
|
-
word_list
|
18
|
+
shuffle(word_list)[0, resolved_num]
|
19
19
|
end
|
20
20
|
|
21
21
|
def character
|
22
|
-
CHARACTERS
|
22
|
+
sample(CHARACTERS)
|
23
23
|
end
|
24
24
|
|
25
25
|
def characters(char_count = 255)
|
26
26
|
char_count = resolve(char_count)
|
27
27
|
return '' if char_count.to_i < 1
|
28
|
-
Array.new(char_count) { CHARACTERS
|
28
|
+
Array.new(char_count) { sample(CHARACTERS) }.join
|
29
29
|
end
|
30
30
|
|
31
31
|
def sentence(word_count = 4, supplemental = false, random_words_to_add = 6)
|
@@ -58,7 +58,7 @@ module Faker
|
|
58
58
|
# All other values are simply returned.
|
59
59
|
def resolve(value)
|
60
60
|
case value
|
61
|
-
when Array then value
|
61
|
+
when Array then sample(value)
|
62
62
|
when Range then rand value
|
63
63
|
else value
|
64
64
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Faker
|
2
|
+
class Lovecraft < Base
|
3
|
+
class << self
|
4
|
+
def location
|
5
|
+
fetch('lovecraft.location')
|
6
|
+
end
|
7
|
+
|
8
|
+
def fhtagn(number_of = 1)
|
9
|
+
number_of.times.collect { fetch('lovecraft.fhtagn') }.join(". ")
|
10
|
+
end
|
11
|
+
|
12
|
+
def deity
|
13
|
+
fetch('lovecraft.deity')
|
14
|
+
end
|
15
|
+
|
16
|
+
def tome
|
17
|
+
fetch('lovecraft.tome')
|
18
|
+
end
|
19
|
+
|
20
|
+
def sentence(word_count = 4, random_words_to_add = 6)
|
21
|
+
words(word_count + rand(random_words_to_add.to_i).to_i, true).join(' ').capitalize + '.'
|
22
|
+
end
|
23
|
+
|
24
|
+
def word
|
25
|
+
random_word = sample(translate('faker.lovecraft.words'))
|
26
|
+
random_word.match(/\s/) ? word : random_word
|
27
|
+
end
|
28
|
+
|
29
|
+
def words(num = 3, spaces_allowed = false)
|
30
|
+
resolved_num = resolve(num)
|
31
|
+
word_list = translate('faker.lovecraft.words')
|
32
|
+
word_list = word_list * ((resolved_num / word_list.length) + 1)
|
33
|
+
|
34
|
+
return shuffle(word_list)[0, resolved_num] if spaces_allowed
|
35
|
+
words = shuffle(word_list)[0, resolved_num]
|
36
|
+
words.each_with_index { |w, i| words[i] = word if w.match(/\s/) }
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def sentences(sentence_count = 3)
|
41
|
+
[].tap do |sentences|
|
42
|
+
1.upto(resolve(sentence_count)) do
|
43
|
+
sentences << sentence(3)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def paragraph(sentence_count = 3, random_sentences_to_add = 3)
|
49
|
+
sentences(resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i).join(' ')
|
50
|
+
end
|
51
|
+
|
52
|
+
def paragraphs(paragraph_count = 3)
|
53
|
+
[].tap do |paragraphs|
|
54
|
+
1.upto(resolve(paragraph_count)) do
|
55
|
+
paragraphs << paragraph(3)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
# If an array or range is passed, a random value will be selected.
|
63
|
+
# All other values are simply returned.
|
64
|
+
def resolve(value)
|
65
|
+
case value
|
66
|
+
when Array then sample(value)
|
67
|
+
when Range then rand value
|
68
|
+
else value
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Faker
|
2
|
+
class Markdown < Base
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def headers
|
6
|
+
"#{fetch('markdown.headers')} #{Lorem.word.capitalize}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def emphasis
|
10
|
+
paragraph = Faker::Lorem.paragraph(3)
|
11
|
+
words = paragraph.split(' ')
|
12
|
+
position = rand(0..words.length - 1)
|
13
|
+
formatting = fetch('markdown.emphasis')
|
14
|
+
words[position] = "#{formatting}#{words[position]}#{formatting}"
|
15
|
+
words.join(' ')
|
16
|
+
end
|
17
|
+
|
18
|
+
def ordered_list
|
19
|
+
number = rand(1..10)
|
20
|
+
|
21
|
+
result = []
|
22
|
+
number.times do |i|
|
23
|
+
result << "#{i.to_s}. #{Faker::Lorem.sentence(1)} \n"
|
24
|
+
end
|
25
|
+
result.join('')
|
26
|
+
end
|
27
|
+
|
28
|
+
def unordered_list
|
29
|
+
number = rand(1..10)
|
30
|
+
|
31
|
+
result = []
|
32
|
+
number.times do |i|
|
33
|
+
result << "* #{Faker::Lorem.sentence(1)} \n"
|
34
|
+
end
|
35
|
+
result.join('')
|
36
|
+
end
|
37
|
+
|
38
|
+
def inline_code
|
39
|
+
"`#{Faker::Lorem.sentence(1)}`"
|
40
|
+
end
|
41
|
+
|
42
|
+
def block_code
|
43
|
+
"```ruby\n#{Lorem.sentence(1)}\n```"
|
44
|
+
end
|
45
|
+
|
46
|
+
def table
|
47
|
+
table = []
|
48
|
+
3.times do
|
49
|
+
table << "#{Lorem.word} | #{Lorem.word} | #{Lorem.word}"
|
50
|
+
end
|
51
|
+
table.join("\n")
|
52
|
+
end
|
53
|
+
|
54
|
+
def random
|
55
|
+
send(available_methods[rand(0..available_methods.length - 1)])
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def available_methods
|
61
|
+
Markdown.public_methods(false) - Base.methods
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/faker/matz.rb
ADDED
data/lib/faker/music.rb
CHANGED
data/lib/faker/number.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Faker
|
2
2
|
class Number < Base
|
3
3
|
class << self
|
4
|
-
def number(digits)
|
4
|
+
def number(digits=10)
|
5
5
|
num = ''
|
6
6
|
if digits > 1
|
7
7
|
num = non_zero_digit
|
@@ -10,11 +10,11 @@ module Faker
|
|
10
10
|
num + leading_zero_number(digits)
|
11
11
|
end
|
12
12
|
|
13
|
-
def leading_zero_number(digits)
|
13
|
+
def leading_zero_number(digits=10)
|
14
14
|
(1..digits).collect {digit}.join
|
15
15
|
end
|
16
16
|
|
17
|
-
def decimal_part(digits)
|
17
|
+
def decimal_part(digits=10)
|
18
18
|
num = ''
|
19
19
|
if digits > 1
|
20
20
|
num = non_zero_digit
|
@@ -23,7 +23,7 @@ module Faker
|
|
23
23
|
leading_zero_number(digits) + num
|
24
24
|
end
|
25
25
|
|
26
|
-
def decimal(l_digits, r_digits
|
26
|
+
def decimal(l_digits=5, r_digits=2)
|
27
27
|
l_d = self.number(l_digits)
|
28
28
|
r_d = self.decimal_part(r_digits)
|
29
29
|
"#{l_d}.#{r_d}"
|
@@ -37,13 +37,13 @@ module Faker
|
|
37
37
|
rand(10).to_s
|
38
38
|
end
|
39
39
|
|
40
|
-
def hexadecimal(digits)
|
40
|
+
def hexadecimal(digits=6)
|
41
41
|
hex = ""
|
42
42
|
digits.times { hex += rand(15).to_s(16) }
|
43
43
|
hex
|
44
44
|
end
|
45
45
|
|
46
|
-
def normal(mean, standard_deviation)
|
46
|
+
def normal(mean=1, standard_deviation=1)
|
47
47
|
theta = 2 * Math::PI * rand
|
48
48
|
rho = Math.sqrt(-2 * Math.log(1 - rand))
|
49
49
|
scale = standard_deviation * rho
|
data/lib/faker/omniauth.rb
CHANGED
@@ -29,7 +29,7 @@ module Faker
|
|
29
29
|
credentials: {
|
30
30
|
token: Crypto.md5,
|
31
31
|
refresh_token: Crypto.md5,
|
32
|
-
expires_at:
|
32
|
+
expires_at: Time.forward.to_i,
|
33
33
|
expires: true
|
34
34
|
},
|
35
35
|
extra: {
|
@@ -42,7 +42,7 @@ module Faker
|
|
42
42
|
family_name: auth.last_name,
|
43
43
|
profile: "https://plus.google.com/#{uid}",
|
44
44
|
picture: image,
|
45
|
-
gender:
|
45
|
+
gender: gender,
|
46
46
|
birthday: Date.backward(36400).strftime("%Y-%m-%d"),
|
47
47
|
local: "en",
|
48
48
|
hd: "#{Company.name.downcase}.com"
|
@@ -57,7 +57,7 @@ module Faker
|
|
57
57
|
"email" => email,
|
58
58
|
"aud" => "APP_ID",
|
59
59
|
"iat" => Number.number(10),
|
60
|
-
"exp" =>
|
60
|
+
"exp" => Time.forward.to_i.to_s,
|
61
61
|
"openid_id" => "https://www.google.com/accounts/o8/id?id=#{uid}"
|
62
62
|
}
|
63
63
|
}
|
@@ -81,7 +81,7 @@ module Faker
|
|
81
81
|
},
|
82
82
|
credentials: {
|
83
83
|
token: Crypto.md5,
|
84
|
-
expires_at:
|
84
|
+
expires_at: Time.forward.to_i,
|
85
85
|
expires: true
|
86
86
|
},
|
87
87
|
extra: {
|
@@ -101,7 +101,7 @@ module Faker
|
|
101
101
|
timezone: timezone,
|
102
102
|
locale: 'en_US',
|
103
103
|
verified: random_boolean,
|
104
|
-
updated_time:
|
104
|
+
updated_time: Time.backward.iso8601
|
105
105
|
}
|
106
106
|
}
|
107
107
|
}
|
@@ -163,7 +163,7 @@ module Faker
|
|
163
163
|
protected: random_boolean,
|
164
164
|
description: description,
|
165
165
|
profile_link_color: Color.hex_color,
|
166
|
-
created_at:
|
166
|
+
created_at: Time.backward.strftime("%a %b %d %H:%M:%S %z %Y"),
|
167
167
|
id_str: uid,
|
168
168
|
profile_image_url_https: image,
|
169
169
|
default_profile: random_boolean,
|
@@ -223,8 +223,8 @@ module Faker
|
|
223
223
|
"params" => {
|
224
224
|
oauth_token: token,
|
225
225
|
oauth_token_secret: secret,
|
226
|
-
oauth_expires_in:
|
227
|
-
oauth_authorization_expires_in:
|
226
|
+
oauth_expires_in: Time.forward.to_i,
|
227
|
+
oauth_authorization_expires_in: Time.forward.to_i,
|
228
228
|
},
|
229
229
|
"response" => nil
|
230
230
|
},
|
@@ -245,30 +245,78 @@ module Faker
|
|
245
245
|
}
|
246
246
|
end
|
247
247
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
248
|
+
def github
|
249
|
+
uid = Number.number(8)
|
250
|
+
auth = Omniauth.new()
|
251
|
+
first_name = auth.first_name.downcase
|
252
|
+
last_name = auth.last_name.downcase
|
253
|
+
login = "#{first_name}-#{last_name}"
|
254
|
+
html_url = "https://github.com/#{login}"
|
255
|
+
api_url = "https://api.github.com/users/#{login}"
|
256
|
+
email = "#{first_name}@example.com"
|
253
257
|
|
254
|
-
|
255
|
-
|
256
|
-
|
258
|
+
{
|
259
|
+
provider: "github",
|
260
|
+
uid: uid,
|
261
|
+
info: {
|
262
|
+
nickname: login,
|
263
|
+
email: email,
|
264
|
+
name: auth.name,
|
265
|
+
image: image,
|
266
|
+
urls:{
|
267
|
+
GitHub: html_url
|
268
|
+
}
|
269
|
+
},
|
270
|
+
credentials: {
|
271
|
+
token: Crypto.md5,
|
272
|
+
expires: false
|
273
|
+
},
|
274
|
+
extra: {
|
275
|
+
raw_info: {
|
276
|
+
login: login,
|
277
|
+
id: uid,
|
278
|
+
avatar_url: image,
|
279
|
+
gravatar_id: "",
|
280
|
+
url: api_url,
|
281
|
+
html_url: html_url,
|
282
|
+
followers_url: "#{api_url}/followers",
|
283
|
+
following_url: "#{api_url}/following{/other_user}",
|
284
|
+
gists_url: "#{api_url}/gists{/gist_id}",
|
285
|
+
starred_url: "#{api_url}/starred{/owner}{/repo}",
|
286
|
+
subscriptions_url: "#{api_url}/subscriptions",
|
287
|
+
organizations_url: "#{api_url}/orgs",
|
288
|
+
repos_url: "#{api_url}/repos",
|
289
|
+
events_url: "#{api_url}/events{/privacy}",
|
290
|
+
received_events_url: "#{api_url}/received_events",
|
291
|
+
type: "User",
|
292
|
+
site_admin: random_boolean,
|
293
|
+
name: auth.name,
|
294
|
+
company: nil,
|
295
|
+
blog: nil,
|
296
|
+
location: city_state,
|
297
|
+
email: email,
|
298
|
+
hireable: nil,
|
299
|
+
bio: nil,
|
300
|
+
public_repos: random_number_from_range(1..1000),
|
301
|
+
public_gists: random_number_from_range(1..1000),
|
302
|
+
followers: random_number_from_range(1..1000),
|
303
|
+
following: random_number_from_range(1..1000),
|
304
|
+
created_at: Time.backward(36400).iso8601,
|
305
|
+
updated_at: Time.backward(2).iso8601
|
306
|
+
}
|
307
|
+
}
|
308
|
+
}
|
257
309
|
|
258
|
-
|
259
|
-
(-12..12).to_a.shuffle.pop
|
260
|
-
end
|
310
|
+
end
|
261
311
|
|
262
|
-
|
263
|
-
Object::Time.now.to_s.split(' ')
|
264
|
-
end
|
312
|
+
private
|
265
313
|
|
266
|
-
def
|
267
|
-
|
314
|
+
def gender
|
315
|
+
shuffle(["male", "female"]).pop
|
268
316
|
end
|
269
317
|
|
270
|
-
def
|
271
|
-
|
318
|
+
def timezone
|
319
|
+
shuffle((-12..12).to_a).pop
|
272
320
|
end
|
273
321
|
|
274
322
|
def image
|
@@ -280,13 +328,13 @@ module Faker
|
|
280
328
|
end
|
281
329
|
|
282
330
|
def random_number_from_range(range)
|
283
|
-
range.to_a.
|
331
|
+
shuffle(range.to_a).pop
|
284
332
|
end
|
285
333
|
|
286
334
|
def random_boolean
|
287
|
-
[true, false].
|
335
|
+
shuffle([true, false]).pop
|
288
336
|
end
|
289
337
|
|
290
|
-
|
338
|
+
end
|
291
339
|
end
|
292
340
|
end
|