class Faker::Omniauth

def github(name: nil, email: nil, uid: Number.number(digits: 8).to_s)

Returns:
  • (Hash) - An auth hash in the format provided by omniauth-github.

Parameters:
  • uid (String) -- A specific UID to return in the response.
  • email (String) -- A specific email to return in the response.
  • name (String) -- A specific name to return in the response.
def github(name: nil, email: nil, uid: Number.number(digits: 8).to_s)
  auth = Omniauth.new(name: name, email: email)
  login = auth.name.downcase.tr(' ', '-')
  html_url = "https://github.com/#{login}"
  api_url = "https://api.github.com/users/#{login}"
  {
    provider: 'github',
    uid: uid,
    info: {
      nickname: login,
      email: auth.email,
      name: auth.name,
      image: image,
      urls: {
        GitHub: html_url
      }
    },
    credentials: {
      token: Crypto.md5,
      expires: false
    },
    extra: {
      raw_info: {
        login: login,
        id: uid,
        avatar_url: image,
        gravatar_id: '',
        url: api_url,
        html_url: html_url,
        followers_url: "#{api_url}/followers",
        following_url: "#{api_url}/following{/other_user}",
        gists_url: "#{api_url}/gists{/gist_id}",
        starred_url: "#{api_url}/starred{/owner}{/repo}",
        subscriptions_url: "#{api_url}/subscriptions",
        organizations_url: "#{api_url}/orgs",
        repos_url: "#{api_url}/repos",
        events_url: "#{api_url}/events{/privacy}",
        received_events_url: "#{api_url}/received_events",
        type: 'User',
        site_admin: random_boolean,
        name: auth.name,
        company: nil,
        blog: nil,
        location: city_state,
        email: auth.email,
        hireable: nil,
        bio: nil,
        public_repos: random_number_from_range(1..1000),
        public_gists: random_number_from_range(1..1000),
        followers: random_number_from_range(1..1000),
        following: random_number_from_range(1..1000),
        created_at: Time.backward(days: 36_400).iso8601,
        updated_at: Time.backward(days: 2).iso8601
      }
    }
  }
end