class OmniAuth::Strategies::GitHub

Constants

DEFAULT_SCOPE

OAuth client settings

Public Instance Methods

authorize_params() click to toggle source
Calls superclass method
# File lib/j1_app/omniauth/strategies/github.rb, line 38
def authorize_params
  super.tap do |params|
    %w[scope client_options].each do |v|
      if request.params[v]
        params[v.to_sym] = request.params[v]
      end
      params[:scope] = get_scope(params)
    end
  end
end
callback_url() click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 49
def callback_url
  options[:redirect_uri] || full_host + script_name + callback_path
end
request_phase() click to toggle source
Calls superclass method
# File lib/j1_app/omniauth/strategies/github.rb, line 34
def request_phase
  super
end

Private Instance Methods

email() click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 97
def email
  (email_access_allowed?) ? primary_email : raw_info['email']
end
email_access_allowed?() click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 113
def email_access_allowed?
  return false unless options['scope']
  email_scopes = ['user', 'user:email']
  scopes = options['scope'].split(',')
  (scopes & email_scopes).any?
end
emails() click to toggle source

The new /user/emails API - developer.github.com/v3/users/emails/#future-response

# File lib/j1_app/omniauth/strategies/github.rb, line 107
def emails
  return [] unless email_access_allowed?
  access_token.options[:mode] = :query
  @emails ||= access_token.get('user/emails', :headers => { 'Accept' => 'application/vnd.github.v3' }).parsed
end
get_scope(params) click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 120
def get_scope(params)
  raw_scope = params[:scope] || DEFAULT_SCOPE
  scope_list = raw_scope.split(' ').map { |item| item.split(',') }.flatten
  scope_list.join(' ')
end
primary_email() click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 101
def primary_email
  primary = emails.find{ |i| i['primary'] && i['verified'] }
  primary && primary['email'] || nil
end
prune!(hash) click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 126
def prune!(hash)
  hash.delete_if do |_, value|
    prune!(value) if value.is_a?(Hash)
    value.nil? || (value.respond_to?(:empty?) && value.empty?)
  end
end
raw_info() click to toggle source

Helpers

# File lib/j1_app/omniauth/strategies/github.rb, line 92
def raw_info
  access_token.options[:mode] = :query
  @raw_info ||= access_token.get('user').parsed
end
skip_extra?() click to toggle source
# File lib/j1_app/omniauth/strategies/github.rb, line 133
def skip_extra?
  !!options[:skip_extra]
end