lib/omniauth/strategies/osm.rb in omniauth-osm-0.2.1 vs lib/omniauth/strategies/osm.rb in omniauth-osm-0.3.0
- old
+ new
@@ -5,19 +5,22 @@
module Strategies
class Osm < OmniAuth::Strategies::OAuth
option :name, "osm"
option :client_options, :site => 'http://www.openstreetmap.org'
+ option :fetch_permissions, false
uid { raw_info['id'] }
info do
raw_info
end
def raw_info
@raw_info ||= parse_info(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
# EXAMPLE XML
@@ -52,9 +55,15 @@
basic_attributes['image_url'] = image.attribute('href').value if image
basic_attributes['lat'] = home.attribute('lat').value.to_f if home
basic_attributes['lon'] = home.attribute('lon').value.to_f if home
basic_attributes['description'] = description.text if description
basic_attributes
+ end
+
+ def parse_permissions(xml_data)
+ # extract event information
+ doc = REXML::Document.new(xml_data)
+ doc.get_elements('//permission').map { |p| p.attribute('name').value }
end
end
end
end