class OmniAuth::Strategies::Doximity
Attributes
profile[R]
Public Instance Methods
callback_phase()
click to toggle source
# File lib/omniauth/strategies/doximity.rb, line 38 def callback_phase @profile = user_profile(request.params['code']) self.env['omniauth.auth'] = auth_hash call_app! end
exchange_code(code)
click to toggle source
# File lib/omniauth/strategies/doximity.rb, line 44 def exchange_code(code) redirect_uri = URI(options.redirect_uri) redirect_uri.query = request.params.except('code').to_query uri = URI::HTTPS.build( host: options.client_options.site, path: options.client_options.token_path ) req = Net::HTTP::Post.new(uri.to_s) req.set_form_data( client_id: consumer.key, client_secret: consumer.secret, redirect_uri: redirect_uri.to_s, grant_type: options.grant_type, code: code ) res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.request(req) end JSON.parse(res.body) end
request_phase()
click to toggle source
# File lib/omniauth/strategies/doximity.rb, line 22 def request_phase redirect_uri = URI(options.redirect_uri) redirect_uri.query = request.params.to_query uri = URI::HTTPS.build( host: options.client_options.site, path: options.client_options.authorize_path, query: { client_id: consumer.key, redirect_uri: redirect_uri.to_s, response_type: options.response_type, scope: options.scope }.to_query ) redirect uri.to_s end
user_profile(code)
click to toggle source
# File lib/omniauth/strategies/doximity.rb, line 68 def user_profile(code) token_exchange = exchange_code(code) uri = URI::HTTPS.build( host: options.client_options.site, path: options.client_options.profile_path, query: { access_token: token_exchange['access_token'] }.to_query ) req = Net::HTTP::Get.new(uri.to_s) res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.request(req) end JSON.parse(res.body).merge('token_exchange' => token_exchange) end
Private Instance Methods
auth_hash()
click to toggle source
# File lib/omniauth/strategies/doximity.rb, line 110 def auth_hash hash = AuthHash.new(:provider => options.name, :uid => uid) hash.info = info hash.credentials = { 'token' => profile['token_exchange']['access_token'] } hash.extra = extra hash end