class OmniAuth::Strategies::LinkedIn

Public Instance Methods

access_token() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 42
def access_token
  ::OAuth2::AccessToken.new(client, oauth2_access_token.token, {
    :expires_in => oauth2_access_token.expires_in,
    :expires_at => oauth2_access_token.expires_at
  })
end
Also aliased as: oauth2_access_token
callback_url() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 36
def callback_url
  full_host + script_name + callback_path
end
oauth2_access_token()
Alias for: access_token
raw_info() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 49
def raw_info
  @raw_info ||= access_token.get(profile_endpoint).parsed
end

Private Instance Methods

email_address() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 55
def email_address
  if options.fields.include? 'email-address'
    fetch_email_address
    parse_email_address
  end
end
email_address_available?() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 72
def email_address_available?
  @email_address_response['elements'] &&
    @email_address_response['elements'].is_a?(Array) &&
    @email_address_response['elements'].first &&
    @email_address_response['elements'].first['handle~']
end
email_address_endpoint() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 125
def email_address_endpoint
  '/v2/emailAddress?q=members&projection=(elements*(handle~))'
end
fetch_email_address() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 62
def fetch_email_address
  @email_address_response ||= access_token.get(email_address_endpoint).parsed
end
field_locale(field_name) click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 100
def field_locale field_name
  "#{ raw_info[field_name]['preferredLocale']['language'] }_" \
    "#{ raw_info[field_name]['preferredLocale']['country'] }"
end
fields() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 88
def fields
  options.fields.each.with_object([]) do |field, result|
    result << fields_mapping[field] if fields_mapping.has_key? field
  end
end
fields_mapping() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 79
def fields_mapping
  {
    'id' => 'id',
    'first-name' => 'firstName',
    'last-name' => 'lastName',
    'picture-url' => 'profilePicture(displayImage~:playableStreams)'
  }
end
localized_field(field_name) click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 94
def localized_field field_name
  return unless localized_field_available? field_name

  raw_info[field_name]['localized'][field_locale(field_name)]
end
localized_field_available?(field_name) click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 105
def localized_field_available? field_name
  raw_info[field_name] && raw_info[field_name]['localized']
end
parse_email_address() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 66
def parse_email_address
  return unless email_address_available?

  @email_address_response['elements'].first['handle~']['emailAddress']
end
picture_available?() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 115
def picture_available?
  raw_info['profilePicture'] &&
    raw_info['profilePicture']['displayImage~'] &&
    picture_references
end
picture_references() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 121
def picture_references
  raw_info['profilePicture']['displayImage~']['elements']
end
picture_url() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 109
def picture_url
  return unless picture_available?

  picture_references.last['identifiers'].first['identifier']
end
profile_endpoint() click to toggle source
# File lib/omniauth/strategies/linkedin.rb, line 129
def profile_endpoint
  "/v2/me?projection=(#{ fields.join(',') })"
end