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