class OmniAuth::Strategies::OsmOauth2
Public Class Methods
site()
click to toggle source
# File lib/omniauth/strategies/osm_oauth2.rb, line 11 def self.site ENV['OSM_AUTH_SITE'] || 'https://www.openstreetmap.org' end
Public Instance Methods
raw_info()
click to toggle source
# File lib/omniauth/strategies/osm_oauth2.rb, line 46 def raw_info @raw_info ||= parse_details(access_token.get('/api/0.6/user/details').body) @raw_info['permissions'] ||= parse_permissions(access_token.get('/api/0.6/permissions').body) if options[:fetch_permissions] @raw_info rescue ::Errno::ETIMEDOUT raise ::Timeout::Error end
Private Instance Methods
parse_details(xml_data)
click to toggle source
extract /api/0.6/user/details
# File lib/omniauth/strategies/osm_oauth2.rb, line 57 def parse_details(xml_data) doc = REXML::Document.new(xml_data) user = doc.elements['//user'] home = doc.elements['//home'] languages = doc.get_elements('//lang') image = doc.elements['//img'] description = doc.elements['//description'] basic_attributes = {} if user basic_attributes['id'] = user.attribute('id').value basic_attributes['display_name'] = user.attribute('display_name').value end basic_attributes['languages'] = languages.map(&:text) if languages basic_attributes['image_url'] = image.attribute('href').value if image if home basic_attributes['lat'] = home.attribute('lat').value.to_f basic_attributes['lon'] = home.attribute('lon').value.to_f end basic_attributes['description'] = description.text if description basic_attributes end
parse_permissions(xml_data)
click to toggle source
extract /api/0.6/permissions
# File lib/omniauth/strategies/osm_oauth2.rb, line 80 def parse_permissions(xml_data) doc = REXML::Document.new(xml_data) doc.get_elements('//permission').map { |p| p.attribute('name').value } end