class OmniAuth::Strategies::Samedi
Provides implementation of an OmniAuth
strategy that works with samedi Booking API.
For more information, consult the OmniAuth
Strategy Contribution Guide: github.com/omniauth/omniauth/wiki/Strategy-Contribution-Guide
Note: this file is explicitly required by config/initializers/omniauth.rb so changes to it won't be automatically reloaded and you need to restart the Rails app after every change to the strategy. Changing `require` to `require_dependency` won't work, because Rails doesn't clear dependencies required by initializers.
Constants
- BOOKING_API_URL
- BOOKING_AUTH_URL
Private Instance Methods
booking_api_client()
click to toggle source
# File lib/omniauth/strategies/samedi.rb, line 79 def booking_api_client @booking_api_client ||= Faraday.new(BOOKING_API_URL) do |faraday| faraday.headers = { 'Authorization': "Bearer #{access_token.token}" } faraday.adapter Faraday.default_adapter end end
fetch_user_info()
click to toggle source
# File lib/omniauth/strategies/samedi.rb, line 67 def fetch_user_info response = booking_api_client.get('user') return response if response.success? fail!("error_#{response.status}_getting_user_info") nil rescue Faraday::TimeoutError => e fail!(:timeout_getting_user_info, e) nil end
query_string()
click to toggle source
samedi Booking API doesn't like a query string inside redirect_uri, so we need to override it explicitly
# File lib/omniauth/strategies/samedi.rb, line 54 def query_string '' end
user_info()
click to toggle source
# File lib/omniauth/strategies/samedi.rb, line 58 def user_info return @user_info if @user_info user_info_response = fetch_user_info return {} unless user_info_response @user_info = MultiJson.load(user_info_response.body) end