faker 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1282 -0
  3. data/History.md +176 -0
  4. data/License.txt +20 -0
  5. data/README.md +364 -0
  6. data/bin/faker +5 -0
  7. data/lib/faker.rb +308 -0
  8. data/lib/faker/blockchain/bitcoin.rb +34 -0
  9. data/lib/faker/blockchain/ethereum.rb +16 -0
  10. data/lib/faker/blockchain/tezos.rb +51 -0
  11. data/lib/faker/books/book.rb +25 -0
  12. data/lib/faker/books/culture_series.rb +34 -0
  13. data/lib/faker/books/dune.rb +66 -0
  14. data/lib/faker/books/lovecraft.rb +104 -0
  15. data/lib/faker/creature/animal.rb +13 -0
  16. data/lib/faker/creature/cat.rb +23 -0
  17. data/lib/faker/creature/dog.rb +43 -0
  18. data/lib/faker/creature/horse.rb +19 -0
  19. data/lib/faker/default/address.rb +123 -0
  20. data/lib/faker/default/alphanumeric.rb +56 -0
  21. data/lib/faker/default/ancient.rb +23 -0
  22. data/lib/faker/default/app.rb +31 -0
  23. data/lib/faker/default/appliance.rb +15 -0
  24. data/lib/faker/default/artist.rb +11 -0
  25. data/lib/faker/default/avatar.rb +28 -0
  26. data/lib/faker/default/bank.rb +108 -0
  27. data/lib/faker/default/beer.rb +41 -0
  28. data/lib/faker/default/boolean.rb +15 -0
  29. data/lib/faker/default/bossa_nova.rb +15 -0
  30. data/lib/faker/default/business.rb +23 -0
  31. data/lib/faker/default/cannabis.rb +45 -0
  32. data/lib/faker/default/chile_rut.rb +54 -0
  33. data/lib/faker/default/chuck_norris.rb +14 -0
  34. data/lib/faker/default/code.rb +201 -0
  35. data/lib/faker/default/coffee.rb +37 -0
  36. data/lib/faker/default/coin.rb +15 -0
  37. data/lib/faker/default/color.rb +32 -0
  38. data/lib/faker/default/commerce.rb +80 -0
  39. data/lib/faker/default/company.rb +264 -0
  40. data/lib/faker/default/compass.rb +67 -0
  41. data/lib/faker/default/construction.rb +29 -0
  42. data/lib/faker/default/cosmere.rb +48 -0
  43. data/lib/faker/default/crypto.rb +21 -0
  44. data/lib/faker/default/crypto_coin.rb +49 -0
  45. data/lib/faker/default/currency.rb +19 -0
  46. data/lib/faker/default/date.rb +101 -0
  47. data/lib/faker/default/dc_comics.rb +25 -0
  48. data/lib/faker/default/demographic.rb +41 -0
  49. data/lib/faker/default/dessert.rb +21 -0
  50. data/lib/faker/default/device.rb +31 -0
  51. data/lib/faker/default/driving_licence.rb +65 -0
  52. data/lib/faker/default/educator.rb +35 -0
  53. data/lib/faker/default/electrical_components.rb +21 -0
  54. data/lib/faker/default/esport.rb +27 -0
  55. data/lib/faker/default/file.rb +49 -0
  56. data/lib/faker/default/fillmurray.rb +23 -0
  57. data/lib/faker/default/finance.rb +44 -0
  58. data/lib/faker/default/food.rb +49 -0
  59. data/lib/faker/default/funny_name.rb +45 -0
  60. data/lib/faker/default/gender.rb +15 -0
  61. data/lib/faker/default/greek_philosophers.rb +15 -0
  62. data/lib/faker/default/hacker.rb +45 -0
  63. data/lib/faker/default/hipster.rb +97 -0
  64. data/lib/faker/default/house.rb +15 -0
  65. data/lib/faker/default/id_number.rb +164 -0
  66. data/lib/faker/default/industry_segments.rb +25 -0
  67. data/lib/faker/default/internet.rb +283 -0
  68. data/lib/faker/default/invoice.rb +109 -0
  69. data/lib/faker/default/job.rb +25 -0
  70. data/lib/faker/default/json.rb +87 -0
  71. data/lib/faker/default/kpop.rb +31 -0
  72. data/lib/faker/default/lorem.rb +150 -0
  73. data/lib/faker/default/lorem_flickr.rb +78 -0
  74. data/lib/faker/default/lorem_pixel.rb +47 -0
  75. data/lib/faker/default/markdown.rb +84 -0
  76. data/lib/faker/default/marketing.rb +13 -0
  77. data/lib/faker/default/measurement.rb +116 -0
  78. data/lib/faker/default/military.rb +27 -0
  79. data/lib/faker/default/name.rb +58 -0
  80. data/lib/faker/default/nation.rb +33 -0
  81. data/lib/faker/default/nato_phonetic_alphabet.rb +11 -0
  82. data/lib/faker/default/nhs.rb +38 -0
  83. data/lib/faker/default/number.rb +150 -0
  84. data/lib/faker/default/omniauth.rb +371 -0
  85. data/lib/faker/default/phone_number.rb +54 -0
  86. data/lib/faker/default/placeholdit.rb +41 -0
  87. data/lib/faker/default/programming_language.rb +15 -0
  88. data/lib/faker/default/relationship.rb +46 -0
  89. data/lib/faker/default/restaurant.rb +11 -0
  90. data/lib/faker/default/science.rb +19 -0
  91. data/lib/faker/default/slack_emoji.rb +43 -0
  92. data/lib/faker/default/source.rb +35 -0
  93. data/lib/faker/default/south_africa.rb +51 -0
  94. data/lib/faker/default/space.rb +64 -0
  95. data/lib/faker/default/string.rb +49 -0
  96. data/lib/faker/default/stripe.rb +81 -0
  97. data/lib/faker/default/subscription.rb +25 -0
  98. data/lib/faker/default/superhero.rb +27 -0
  99. data/lib/faker/default/team.rb +29 -0
  100. data/lib/faker/default/time.rb +102 -0
  101. data/lib/faker/default/twitter.rb +188 -0
  102. data/lib/faker/default/types.rb +101 -0
  103. data/lib/faker/default/university.rb +30 -0
  104. data/lib/faker/default/vehicle.rb +162 -0
  105. data/lib/faker/default/verb.rb +27 -0
  106. data/lib/faker/default/world_cup.rb +36 -0
  107. data/lib/faker/games/dota.rb +33 -0
  108. data/lib/faker/games/elder_scrolls.rb +41 -0
  109. data/lib/faker/games/fallout.rb +25 -0
  110. data/lib/faker/games/game.rb +21 -0
  111. data/lib/faker/games/half_life.rb +21 -0
  112. data/lib/faker/games/heroes.rb +21 -0
  113. data/lib/faker/games/heroes_of_the_storm.rb +25 -0
  114. data/lib/faker/games/league_of_legends.rb +33 -0
  115. data/lib/faker/games/myst.rb +29 -0
  116. data/lib/faker/games/overwatch.rb +21 -0
  117. data/lib/faker/games/pokemon.rb +21 -0
  118. data/lib/faker/games/sonic_the_hedgehog.rb +21 -0
  119. data/lib/faker/games/super_smash_bros.rb +17 -0
  120. data/lib/faker/games/witcher.rb +33 -0
  121. data/lib/faker/games/world_of_warcraft.rb +17 -0
  122. data/lib/faker/games/zelda.rb +26 -0
  123. data/lib/faker/japanese_media/dragon_ball.rb +13 -0
  124. data/lib/faker/japanese_media/one_piece.rb +33 -0
  125. data/lib/faker/japanese_media/sword_art_online.rb +25 -0
  126. data/lib/faker/movies/back_to_the_future.rb +21 -0
  127. data/lib/faker/movies/ghostbusters.rb +21 -0
  128. data/lib/faker/movies/harry_potter.rb +33 -0
  129. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +37 -0
  130. data/lib/faker/movies/hobbit.rb +25 -0
  131. data/lib/faker/movies/lebowski.rb +21 -0
  132. data/lib/faker/movies/lord_of_the_rings.rb +21 -0
  133. data/lib/faker/movies/movie.rb +11 -0
  134. data/lib/faker/movies/princess_bride.rb +17 -0
  135. data/lib/faker/movies/star_wars.rb +107 -0
  136. data/lib/faker/movies/v_for_vendetta.rb +21 -0
  137. data/lib/faker/music/grateful_dead.rb +19 -0
  138. data/lib/faker/music/music.rb +47 -0
  139. data/lib/faker/music/opera.rb +26 -0
  140. data/lib/faker/music/phish.rb +13 -0
  141. data/lib/faker/music/rock_band.rb +13 -0
  142. data/lib/faker/music/umphreys_mcgee.rb +13 -0
  143. data/lib/faker/quotes/quote.rb +32 -0
  144. data/lib/faker/quotes/shakespeare.rb +41 -0
  145. data/lib/faker/sports/basketball.rb +25 -0
  146. data/lib/faker/sports/football.rb +29 -0
  147. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +15 -0
  148. data/lib/faker/tv_shows/bojack_horseman.rb +23 -0
  149. data/lib/faker/tv_shows/breaking_bad.rb +19 -0
  150. data/lib/faker/tv_shows/buffy.rb +31 -0
  151. data/lib/faker/tv_shows/community.rb +19 -0
  152. data/lib/faker/tv_shows/dr_who.rb +39 -0
  153. data/lib/faker/tv_shows/dumb_and_dumber.rb +23 -0
  154. data/lib/faker/tv_shows/family_guy.rb +23 -0
  155. data/lib/faker/tv_shows/friends.rb +23 -0
  156. data/lib/faker/tv_shows/game_of_thrones.rb +31 -0
  157. data/lib/faker/tv_shows/hey_arnold.rb +23 -0
  158. data/lib/faker/tv_shows/how_i_met_your_mother.rb +27 -0
  159. data/lib/faker/tv_shows/michael_scott.rb +13 -0
  160. data/lib/faker/tv_shows/new_girl.rb +19 -0
  161. data/lib/faker/tv_shows/parks_and_rec.rb +19 -0
  162. data/lib/faker/tv_shows/rick_and_morty.rb +23 -0
  163. data/lib/faker/tv_shows/ru_paul.rb +19 -0
  164. data/lib/faker/tv_shows/seinfeld.rb +23 -0
  165. data/lib/faker/tv_shows/silicon_valley.rb +43 -0
  166. data/lib/faker/tv_shows/simpsons.rb +23 -0
  167. data/lib/faker/tv_shows/south_park.rb +19 -0
  168. data/lib/faker/tv_shows/star_trek.rb +27 -0
  169. data/lib/faker/tv_shows/stargate.rb +23 -0
  170. data/lib/faker/tv_shows/stranger_things.rb +19 -0
  171. data/lib/faker/tv_shows/the_expanse.rb +27 -0
  172. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +23 -0
  173. data/lib/faker/tv_shows/the_it_crowd.rb +27 -0
  174. data/lib/faker/tv_shows/the_thick_of_it.rb +23 -0
  175. data/lib/faker/tv_shows/twin_peaks.rb +23 -0
  176. data/lib/faker/tv_shows/venture_bros.rb +27 -0
  177. data/lib/faker/version.rb +5 -0
  178. data/lib/helpers/base58.rb +22 -0
  179. data/lib/helpers/char.rb +66 -0
  180. data/lib/helpers/unique_generator.rb +56 -0
  181. data/lib/locales/README.md +40 -0
  182. data/lib/locales/ar.yml +102 -0
  183. data/lib/locales/bg.yml +44 -0
  184. data/lib/locales/ca-CAT.yml +24 -0
  185. data/lib/locales/ca.yml +31 -0
  186. data/lib/locales/da-DK.yml +73 -0
  187. data/lib/locales/de-AT.yml +56 -0
  188. data/lib/locales/de-CH.yml +19 -0
  189. data/lib/locales/de.yml +174 -0
  190. data/lib/locales/ee.yml +61 -0
  191. data/lib/locales/en-AU.yml +28 -0
  192. data/lib/locales/en-BORK.yml +4 -0
  193. data/lib/locales/en-CA.yml +36 -0
  194. data/lib/locales/en-GB.yml +14 -0
  195. data/lib/locales/en-IND.yml +25 -0
  196. data/lib/locales/en-MS.yml +47 -0
  197. data/lib/locales/en-NEP.yml +49 -0
  198. data/lib/locales/en-NG.yml +77 -0
  199. data/lib/locales/en-NZ.yml +39 -0
  200. data/lib/locales/en-PAK.yml +18 -0
  201. data/lib/locales/en-SG.yml +35 -0
  202. data/lib/locales/en-UG.yml +128 -0
  203. data/lib/locales/en-US.yml +103 -0
  204. data/lib/locales/en-ZA.yml +148 -0
  205. data/lib/locales/en-au-ocker.yml +33 -0
  206. data/lib/locales/en.yml +11 -0
  207. data/lib/locales/en/README.md +13 -0
  208. data/lib/locales/en/address.yml +581 -0
  209. data/lib/locales/en/ancient.yml +7 -0
  210. data/lib/locales/en/animal.yml +6 -0
  211. data/lib/locales/en/app.yml +8 -0
  212. data/lib/locales/en/appliance.yml +5 -0
  213. data/lib/locales/en/aqua_teen_hunger_force.yml +4 -0
  214. data/lib/locales/en/artist.yml +4 -0
  215. data/lib/locales/en/back_to_the_future.yml +120 -0
  216. data/lib/locales/en/bank.yml +302 -0
  217. data/lib/locales/en/basketball.yml +99 -0
  218. data/lib/locales/en/beer.yml +9 -0
  219. data/lib/locales/en/bojack_horseman.yml +6 -0
  220. data/lib/locales/en/book.yml +7 -0
  221. data/lib/locales/en/bossa_nova.yml +6 -0
  222. data/lib/locales/en/breaking_bad.yml +28 -0
  223. data/lib/locales/en/buffy.yml +260 -0
  224. data/lib/locales/en/business.yml +5 -0
  225. data/lib/locales/en/cannabis.yml +13 -0
  226. data/lib/locales/en/cat.yml +7 -0
  227. data/lib/locales/en/chuck_norris.yml +82 -0
  228. data/lib/locales/en/code.yml +4 -0
  229. data/lib/locales/en/coffee.yml +31 -0
  230. data/lib/locales/en/coin.yml +6 -0
  231. data/lib/locales/en/color.yml +4 -0
  232. data/lib/locales/en/commerce.yml +11 -0
  233. data/lib/locales/en/community.yml +33 -0
  234. data/lib/locales/en/company.yml +22 -0
  235. data/lib/locales/en/compass.yml +34 -0
  236. data/lib/locales/en/construction.yml +425 -0
  237. data/lib/locales/en/cosmere.yml +57 -0
  238. data/lib/locales/en/crypto_coin.yml +25 -0
  239. data/lib/locales/en/culture_series.yml +307 -0
  240. data/lib/locales/en/currency.yml +6 -0
  241. data/lib/locales/en/dc_comics.yml +52 -0
  242. data/lib/locales/en/demographic.yml +8 -0
  243. data/lib/locales/en/dessert.yml +6 -0
  244. data/lib/locales/en/device.yml +7 -0
  245. data/lib/locales/en/dog.yml +11 -0
  246. data/lib/locales/en/dota.yml +105 -0
  247. data/lib/locales/en/dr_who.yml +96 -0
  248. data/lib/locales/en/dragon_ball.yml +4 -0
  249. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  250. data/lib/locales/en/dune.yml +159 -0
  251. data/lib/locales/en/educator.yml +11 -0
  252. data/lib/locales/en/elder_scrolls.yml +11 -0
  253. data/lib/locales/en/electrical_components.yml +6 -0
  254. data/lib/locales/en/esport.yml +8 -0
  255. data/lib/locales/en/fallout.yml +137 -0
  256. data/lib/locales/en/family_guy.yml +7 -0
  257. data/lib/locales/en/file.yml +5 -0
  258. data/lib/locales/en/finance.yml +113 -0
  259. data/lib/locales/en/food.yml +13 -0
  260. data/lib/locales/en/football.yml +8 -0
  261. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  262. data/lib/locales/en/friends.yml +6 -0
  263. data/lib/locales/en/funny_name.yml +4 -0
  264. data/lib/locales/en/game.yml +283 -0
  265. data/lib/locales/en/game_of_thrones.yml +8 -0
  266. data/lib/locales/en/gender.yml +5 -0
  267. data/lib/locales/en/ghostbusters.yml +91 -0
  268. data/lib/locales/en/grateful_dead.yml +48 -0
  269. data/lib/locales/en/greek_philosophers.yml +26 -0
  270. data/lib/locales/en/hacker.yml +8 -0
  271. data/lib/locales/en/half_life.yml +7 -0
  272. data/lib/locales/en/harry_potter.yml +9 -0
  273. data/lib/locales/en/heroes.yml +6 -0
  274. data/lib/locales/en/heroes_of_the_storm.yml +7 -0
  275. data/lib/locales/en/hey_arnold.yml +24 -0
  276. data/lib/locales/en/hipster.yml +4 -0
  277. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  278. data/lib/locales/en/hobbit.yml +19 -0
  279. data/lib/locales/en/horse.yml +6 -0
  280. data/lib/locales/en/house.yml +5 -0
  281. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  282. data/lib/locales/en/id_number.yml +5 -0
  283. data/lib/locales/en/industry_segments.yml +7 -0
  284. data/lib/locales/en/internet.yml +21 -0
  285. data/lib/locales/en/invoice.yml +6 -0
  286. data/lib/locales/en/job.yml +15 -0
  287. data/lib/locales/en/kpop.yml +83 -0
  288. data/lib/locales/en/league_of_legends.yml +10 -0
  289. data/lib/locales/en/lebowski.yml +43 -0
  290. data/lib/locales/en/lord_of_the_rings.yml +6 -0
  291. data/lib/locales/en/lorem.yml +11 -0
  292. data/lib/locales/en/lovecraft.yml +9 -0
  293. data/lib/locales/en/markdown.yml +5 -0
  294. data/lib/locales/en/marketing.yml +4 -0
  295. data/lib/locales/en/measurement.yml +11 -0
  296. data/lib/locales/en/michael_scott.yml +45 -0
  297. data/lib/locales/en/military.yml +8 -0
  298. data/lib/locales/en/movie.yml +5 -0
  299. data/lib/locales/en/music.yml +32 -0
  300. data/lib/locales/en/myst.yml +48 -0
  301. data/lib/locales/en/name.yml +25 -0
  302. data/lib/locales/en/nation.yml +11 -0
  303. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  304. data/lib/locales/en/new_girl.yml +40 -0
  305. data/lib/locales/en/one_piece.yml +9 -0
  306. data/lib/locales/en/opera.yml +172 -0
  307. data/lib/locales/en/overwatch.yml +41 -0
  308. data/lib/locales/en/parks_and_rec.yml +7 -0
  309. data/lib/locales/en/phish.yml +4 -0
  310. data/lib/locales/en/phone_number.yml +7 -0
  311. data/lib/locales/en/pokemon.yml +8 -0
  312. data/lib/locales/en/princess_bride.yml +5 -0
  313. data/lib/locales/en/programming_language.yml +6 -0
  314. data/lib/locales/en/quote.yml +166 -0
  315. data/lib/locales/en/relationship.yml +10 -0
  316. data/lib/locales/en/restaurant.yml +129 -0
  317. data/lib/locales/en/rick_and_morty.yml +6 -0
  318. data/lib/locales/en/rock_band.yml +4 -0
  319. data/lib/locales/en/rupaul.yml +125 -0
  320. data/lib/locales/en/science.yml +6 -0
  321. data/lib/locales/en/seinfeld.yml +6 -0
  322. data/lib/locales/en/shakespeare.yml +56 -0
  323. data/lib/locales/en/silicon_valley.yml +53 -0
  324. data/lib/locales/en/simpsons.yml +26 -0
  325. data/lib/locales/en/slack_emoji.yml +20 -0
  326. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  327. data/lib/locales/en/source.yml +16 -0
  328. data/lib/locales/en/south_park.yml +5 -0
  329. data/lib/locales/en/space.yml +17 -0
  330. data/lib/locales/en/star_trek.yml +7 -0
  331. data/lib/locales/en/star_wars.yml +258 -0
  332. data/lib/locales/en/stargate.yml +21 -0
  333. data/lib/locales/en/stranger_thing.yml +36 -0
  334. data/lib/locales/en/stripe.yml +42 -0
  335. data/lib/locales/en/subscription.yml +8 -0
  336. data/lib/locales/en/super_smash_bros.yml +205 -0
  337. data/lib/locales/en/superhero.yml +12 -0
  338. data/lib/locales/en/sword_art_online.yml +334 -0
  339. data/lib/locales/en/team.yml +8 -0
  340. data/lib/locales/en/the_expanse.yml +7 -0
  341. data/lib/locales/en/the_it_crowd.yml +155 -0
  342. data/lib/locales/en/the_thick_of_it.yml +6 -0
  343. data/lib/locales/en/twin_peaks.yml +6 -0
  344. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  345. data/lib/locales/en/university.yml +10 -0
  346. data/lib/locales/en/v_for_vendetta.yml +163 -0
  347. data/lib/locales/en/vehicle.yml +80 -0
  348. data/lib/locales/en/venture_bros.yml +7 -0
  349. data/lib/locales/en/verbs.yml +8 -0
  350. data/lib/locales/en/witcher.yml +11 -0
  351. data/lib/locales/en/world_cup.yml +271 -0
  352. data/lib/locales/en/world_of_warcraft.yml +8 -0
  353. data/lib/locales/en/yoda.yml +4 -0
  354. data/lib/locales/en/zelda.yml +8 -0
  355. data/lib/locales/es-MX.yml +102 -0
  356. data/lib/locales/es.yml +94 -0
  357. data/lib/locales/fa.yml +10 -0
  358. data/lib/locales/fi-FI.yml +35 -0
  359. data/lib/locales/fr-CA.yml +90 -0
  360. data/lib/locales/fr-CH.yml +78 -0
  361. data/lib/locales/fr.yml +114 -0
  362. data/lib/locales/he.yml +27 -0
  363. data/lib/locales/hy.yml +416 -0
  364. data/lib/locales/id.yml +23 -0
  365. data/lib/locales/it.yml +70 -0
  366. data/lib/locales/ja.yml +98 -0
  367. data/lib/locales/ko.yml +40 -0
  368. data/lib/locales/lv.yml +55 -0
  369. data/lib/locales/nb-NO.yml +62 -0
  370. data/lib/locales/nl.yml +92 -0
  371. data/lib/locales/no.yml +7 -0
  372. data/lib/locales/pl.yml +77 -0
  373. data/lib/locales/pt-BR.yml +697 -0
  374. data/lib/locales/pt.yml +66 -0
  375. data/lib/locales/ru.yml +76 -0
  376. data/lib/locales/sk.yml +78 -0
  377. data/lib/locales/sv.yml +81 -0
  378. data/lib/locales/tr.yml +40 -0
  379. data/lib/locales/uk.yml +86 -0
  380. data/lib/locales/vi.yml +68 -0
  381. data/lib/locales/zh-CN.yml +56 -0
  382. data/lib/locales/zh-TW.yml +29 -0
  383. metadata +543 -0
@@ -0,0 +1,371 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Omniauth < Base
5
+ require 'time'
6
+ attr_reader :name,
7
+ :first_name,
8
+ :last_name,
9
+ :email
10
+
11
+ def initialize(name: nil, email: nil)
12
+ @name = name || "#{Name.first_name} #{Name.last_name}"
13
+ @email = email || Internet.safe_email(name: self.name)
14
+ @first_name, @last_name = self.name.split
15
+ end
16
+
17
+ class << self
18
+ # rubocop:disable Metrics/ParameterLists
19
+ def google(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 9).to_s)
20
+ # rubocop:enable Metrics/ParameterLists
21
+ warn_for_deprecated_arguments do |keywords|
22
+ keywords << :name if legacy_name != NOT_GIVEN
23
+ keywords << :email if legacy_email != NOT_GIVEN
24
+ keywords << :uid if legacy_uid != NOT_GIVEN
25
+ end
26
+
27
+ auth = Omniauth.new(name: name, email: email)
28
+ {
29
+ provider: 'google_oauth2',
30
+ uid: uid,
31
+ info: {
32
+ name: auth.name,
33
+ first_name: auth.first_name,
34
+ last_name: auth.last_name,
35
+ email: auth.email,
36
+ image: image
37
+ },
38
+ credentials: {
39
+ token: Crypto.md5,
40
+ refresh_token: Crypto.md5,
41
+ expires_at: Time.forward.to_i,
42
+ expires: true
43
+ },
44
+ extra: {
45
+ raw_info: {
46
+ sub: uid,
47
+ email: auth.email,
48
+ email_verified: random_boolean.to_s,
49
+ name: auth.name,
50
+ given_name: auth.first_name,
51
+ family_name: auth.last_name,
52
+ profile: "https://plus.google.com/#{uid}",
53
+ picture: image,
54
+ gender: gender,
55
+ birthday: Date.backward(days: 36_400).strftime('%Y-%m-%d'),
56
+ local: 'en',
57
+ hd: "#{Company.name.downcase}.com"
58
+ },
59
+ id_info: {
60
+ 'iss' => 'accounts.google.com',
61
+ 'at_hash' => Crypto.md5,
62
+ 'email_verified' => true,
63
+ 'sub' => Number.number(digits: 28).to_s,
64
+ 'azp' => 'APP_ID',
65
+ 'email' => auth.email,
66
+ 'aud' => 'APP_ID',
67
+ 'iat' => Time.forward.to_i,
68
+ 'exp' => Time.forward.to_i,
69
+ 'openid_id' => "https://www.google.com/accounts/o8/id?id=#{uid}"
70
+ }
71
+ }
72
+ }
73
+ end
74
+
75
+ # rubocop:disable Metrics/ParameterLists
76
+ def facebook(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_username = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, username: nil, uid: Number.number(digits: 7).to_s)
77
+ # rubocop:enable Metrics/ParameterLists
78
+ warn_for_deprecated_arguments do |keywords|
79
+ keywords << :name if legacy_name != NOT_GIVEN
80
+ keywords << :email if legacy_email != NOT_GIVEN
81
+ keywords << :username if legacy_username != NOT_GIVEN
82
+ keywords << :uid if legacy_uid != NOT_GIVEN
83
+ end
84
+
85
+ auth = Omniauth.new(name: name, email: email)
86
+ username ||= "#{auth.first_name.downcase[0]}#{auth.last_name.downcase}"
87
+ {
88
+ provider: 'facebook',
89
+ uid: uid,
90
+ info: {
91
+ email: auth.email,
92
+ name: auth.name,
93
+ first_name: auth.first_name,
94
+ last_name: auth.last_name,
95
+ image: image,
96
+ verified: random_boolean
97
+ },
98
+ credentials: {
99
+ token: Crypto.md5,
100
+ expires_at: Time.forward.to_i,
101
+ expires: true
102
+ },
103
+ extra: {
104
+ raw_info: {
105
+ id: uid,
106
+ name: auth.name,
107
+ first_name: auth.first_name,
108
+ last_name: auth.last_name,
109
+ link: "http://www.facebook.com/#{username}",
110
+ username: username,
111
+ location: {
112
+ id: Number.number(digits: 9).to_s,
113
+ name: city_state
114
+ },
115
+ gender: gender,
116
+ email: auth.email,
117
+ timezone: timezone,
118
+ locale: 'en_US',
119
+ verified: random_boolean,
120
+ updated_time: Time.backward.iso8601
121
+ }
122
+ }
123
+ }
124
+ end
125
+
126
+ # rubocop:disable Metrics/ParameterLists
127
+ def twitter(legacy_name = NOT_GIVEN, legacy_nickname = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, nickname: nil, uid: Number.number(digits: 6).to_s)
128
+ # rubocop:enable Metrics/ParameterLists
129
+ warn_for_deprecated_arguments do |keywords|
130
+ keywords << :name if legacy_name != NOT_GIVEN
131
+ keywords << :nickname if legacy_nickname != NOT_GIVEN
132
+ keywords << :uid if legacy_uid != NOT_GIVEN
133
+ end
134
+
135
+ auth = Omniauth.new(name: name)
136
+ nickname ||= auth.name.downcase.delete(' ')
137
+ location = city_state
138
+ description = Lorem.sentence
139
+ {
140
+ provider: 'twitter',
141
+ uid: uid,
142
+ info: {
143
+ nickname: nickname,
144
+ name: auth.name,
145
+ location: location,
146
+ image: image,
147
+ description: description,
148
+ urls: {
149
+ Website: nil,
150
+ Twitter: "https://twitter.com/#{nickname}"
151
+ }
152
+ },
153
+ credentials: {
154
+ token: Crypto.md5,
155
+ secret: Crypto.md5
156
+ },
157
+ extra: {
158
+ access_token: '',
159
+ raw_info: {
160
+ name: auth.name,
161
+ listed_count: random_number_from_range(1..10),
162
+ profile_sidebar_border_color: Color.hex_color,
163
+ url: nil,
164
+ lang: 'en',
165
+ statuses_count: random_number_from_range(1..1000),
166
+ profile_image_url: image,
167
+ profile_background_image_url_https: image,
168
+ location: location,
169
+ time_zone: Address.city,
170
+ follow_request_sent: random_boolean,
171
+ id: uid,
172
+ profile_background_tile: random_boolean,
173
+ profile_sidebar_fill_color: Color.hex_color,
174
+ followers_count: random_number_from_range(1..10_000),
175
+ default_profile_image: random_boolean,
176
+ screen_name: '',
177
+ following: random_boolean,
178
+ utc_offset: timezone,
179
+ verified: random_boolean,
180
+ favourites_count: random_number_from_range(1..10),
181
+ profile_background_color: Color.hex_color,
182
+ is_translator: random_boolean,
183
+ friends_count: random_number_from_range(1..10_000),
184
+ notifications: random_boolean,
185
+ geo_enabled: random_boolean,
186
+ profile_background_image_url: image,
187
+ protected: random_boolean,
188
+ description: description,
189
+ profile_link_color: Color.hex_color,
190
+ created_at: Time.backward.strftime('%a %b %d %H:%M:%S %z %Y'),
191
+ id_str: uid,
192
+ profile_image_url_https: image,
193
+ default_profile: random_boolean,
194
+ profile_use_background_image: random_boolean,
195
+ entities: {
196
+ description: {
197
+ urls: []
198
+ }
199
+ },
200
+ profile_text_color: Color.hex_color,
201
+ contributors_enabled: random_boolean
202
+ }
203
+ }
204
+ }
205
+ end
206
+
207
+ # rubocop:disable Metrics/ParameterLists
208
+ def linkedin(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 6).to_s)
209
+ # rubocop:enable Metrics/ParameterLists
210
+ warn_for_deprecated_arguments do |keywords|
211
+ keywords << :name if legacy_name != NOT_GIVEN
212
+ keywords << :email if legacy_email != NOT_GIVEN
213
+ keywords << :uid if legacy_uid != NOT_GIVEN
214
+ end
215
+
216
+ auth = Omniauth.new(name: name, email: email)
217
+ first_name = auth.first_name.downcase
218
+ last_name = auth.last_name.downcase
219
+ location = city_state
220
+ description = Lorem.sentence
221
+ token = Crypto.md5
222
+ secret = Crypto.md5
223
+ industry = Commerce.department
224
+ url = "http://www.linkedin.com/in/#{first_name}#{last_name}"
225
+ {
226
+ 'provider' => 'linkedin',
227
+ 'uid' => uid,
228
+ 'info' => {
229
+ 'name' => auth.name,
230
+ 'email' => auth.email,
231
+ 'nickname' => auth.name,
232
+ 'first_name' => auth.first_name,
233
+ 'last_name' => auth.last_name,
234
+ 'location' => location,
235
+ 'description' => description,
236
+ 'image' => image,
237
+ 'phone' => PhoneNumber.phone_number,
238
+ 'headline' => description,
239
+ 'industry' => industry,
240
+ 'urls' => {
241
+ 'public_profile' => url
242
+ }
243
+ },
244
+ 'credentials' => {
245
+ 'token' => token,
246
+ 'secret' => secret
247
+ },
248
+ 'extra' => {
249
+ 'access_token' => {
250
+ 'token' => token,
251
+ 'secret' => secret,
252
+ 'consumer' => nil,
253
+ 'params' => {
254
+ oauth_token: token,
255
+ oauth_token_secret: secret,
256
+ oauth_expires_in: Time.forward.to_i,
257
+ oauth_authorization_expires_in: Time.forward.to_i
258
+ },
259
+ 'response' => nil
260
+ },
261
+ 'raw_info' => {
262
+ 'firstName' => auth.first_name,
263
+ 'headline' => description,
264
+ 'id' => uid,
265
+ 'industry' => industry,
266
+ 'lastName' => auth.last_name,
267
+ 'location' => {
268
+ 'country' => { 'code' => Address.country_code.downcase },
269
+ 'name' => city_state.split(', ').first
270
+ },
271
+ 'pictureUrl' => image,
272
+ 'publicProfileUrl' => url
273
+ }
274
+ }
275
+ }
276
+ end
277
+
278
+ # rubocop:disable Metrics/ParameterLists
279
+ def github(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 8).to_s)
280
+ # rubocop:enable Metrics/ParameterLists
281
+ warn_for_deprecated_arguments do |keywords|
282
+ keywords << :name if legacy_name != NOT_GIVEN
283
+ keywords << :email if legacy_email != NOT_GIVEN
284
+ keywords << :uid if legacy_uid != NOT_GIVEN
285
+ end
286
+
287
+ auth = Omniauth.new(name: name, email: email)
288
+ login = auth.name.downcase.tr(' ', '-')
289
+ html_url = "https://github.com/#{login}"
290
+ api_url = "https://api.github.com/users/#{login}"
291
+ {
292
+ provider: 'github',
293
+ uid: uid,
294
+ info: {
295
+ nickname: login,
296
+ email: auth.email,
297
+ name: auth.name,
298
+ image: image,
299
+ urls: {
300
+ GitHub: html_url
301
+ }
302
+ },
303
+ credentials: {
304
+ token: Crypto.md5,
305
+ expires: false
306
+ },
307
+ extra: {
308
+ raw_info: {
309
+ login: login,
310
+ id: uid,
311
+ avatar_url: image,
312
+ gravatar_id: '',
313
+ url: api_url,
314
+ html_url: html_url,
315
+ followers_url: "#{api_url}/followers",
316
+ following_url: "#{api_url}/following{/other_user}",
317
+ gists_url: "#{api_url}/gists{/gist_id}",
318
+ starred_url: "#{api_url}/starred{/owner}{/repo}",
319
+ subscriptions_url: "#{api_url}/subscriptions",
320
+ organizations_url: "#{api_url}/orgs",
321
+ repos_url: "#{api_url}/repos",
322
+ events_url: "#{api_url}/events{/privacy}",
323
+ received_events_url: "#{api_url}/received_events",
324
+ type: 'User',
325
+ site_admin: random_boolean,
326
+ name: auth.name,
327
+ company: nil,
328
+ blog: nil,
329
+ location: city_state,
330
+ email: auth.email,
331
+ hireable: nil,
332
+ bio: nil,
333
+ public_repos: random_number_from_range(1..1000),
334
+ public_gists: random_number_from_range(1..1000),
335
+ followers: random_number_from_range(1..1000),
336
+ following: random_number_from_range(1..1000),
337
+ created_at: Time.backward(days: 36_400).iso8601,
338
+ updated_at: Time.backward(days: 2).iso8601
339
+ }
340
+ }
341
+ }
342
+ end
343
+
344
+ private
345
+
346
+ def gender
347
+ shuffle(%w[male female]).pop
348
+ end
349
+
350
+ def timezone
351
+ shuffle((-12..12).to_a).pop
352
+ end
353
+
354
+ def image
355
+ Placeholdit.image
356
+ end
357
+
358
+ def city_state
359
+ "#{Address.city}, #{Address.state}"
360
+ end
361
+
362
+ def random_number_from_range(range)
363
+ shuffle(range.to_a).pop
364
+ end
365
+
366
+ def random_boolean
367
+ shuffle([true, false]).pop
368
+ end
369
+ end
370
+ end
371
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class PhoneNumber < Base
5
+ class << self
6
+ def phone_number
7
+ parse('phone_number.formats')
8
+ end
9
+
10
+ def cell_phone
11
+ parse('cell_phone.formats')
12
+ end
13
+
14
+ def country_code
15
+ "+#{fetch('country_code')}"
16
+ end
17
+
18
+ def phone_number_with_country_code
19
+ "#{country_code} #{phone_number}"
20
+ end
21
+
22
+ def cell_phone_with_country_code
23
+ "#{country_code} #{cell_phone}"
24
+ end
25
+
26
+ # US and Canada only
27
+ def area_code
28
+ fetch('phone_number.area_code')
29
+ rescue I18n::MissingTranslationData
30
+ nil
31
+ end
32
+
33
+ # US and Canada only
34
+ def exchange_code
35
+ fetch('phone_number.exchange_code')
36
+ rescue I18n::MissingTranslationData
37
+ nil
38
+ end
39
+
40
+ # US and Canada only
41
+ # Can be used for both extensions and last four digits of phone number.
42
+ # Since extensions can be of variable length, this method taks a length parameter
43
+ def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
44
+ warn_for_deprecated_arguments do |keywords|
45
+ keywords << :length if legacy_length != NOT_GIVEN
46
+ end
47
+
48
+ rand.to_s[2..(1 + length)]
49
+ end
50
+
51
+ alias extension subscriber_number
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Placeholdit < Base
5
+ class << self
6
+ SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
+
8
+ # rubocop:disable Metrics/ParameterLists
9
+ def image(legacy_size = NOT_GIVEN, legacy_format = NOT_GIVEN, legacy_background_color = NOT_GIVEN, legacy_text_color = NOT_GIVEN, legacy_text = NOT_GIVEN, size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
10
+ # rubocop:enable Metrics/ParameterLists
11
+ warn_for_deprecated_arguments do |keywords|
12
+ keywords << :size if legacy_size != NOT_GIVEN
13
+ keywords << :format if legacy_format != NOT_GIVEN
14
+ keywords << :background_color if legacy_background_color != NOT_GIVEN
15
+ keywords << :text_color if legacy_text_color != NOT_GIVEN
16
+ keywords << :text if legacy_text != NOT_GIVEN
17
+ end
18
+
19
+ background_color = generate_color if background_color == :random
20
+ text_color = generate_color if text_color == :random
21
+
22
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
23
+ raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}" unless SUPPORTED_FORMATS.include?(format)
24
+ raise ArgumentError, "background_color must be a hex value without '#'" unless background_color.nil? || background_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
25
+ raise ArgumentError, "text_color must be a hex value without '#'" unless text_color.nil? || text_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
26
+
27
+ image_url = "https://placehold.it/#{size}.#{format}"
28
+ image_url += "/#{background_color}" if background_color
29
+ image_url += "/#{text_color}" if text_color
30
+ image_url += "?text=#{text}" if text
31
+ image_url
32
+ end
33
+
34
+ private
35
+
36
+ def generate_color
37
+ format('%06x', (rand * 0xffffff))
38
+ end
39
+ end
40
+ end
41
+ end