class OmniAuth::Strategies::Uoc::UocValidator

Constants

DEFAULT_CONTENT_TYPE
SESSION_REQUEST_BODY

Public Class Methods

new(configuration, username, password) click to toggle source
# File lib/omniauth/strategies/uoc/uoc_validator.rb, line 16
def initialize(configuration, username, password)
  @configuration, @username, @password = configuration, username, password
  @session_uri       = URI.parse(@configuration.session_url)
  MultiXml.parser = :nokogiri
end

Public Instance Methods

user_info() click to toggle source
# File lib/omniauth/strategies/uoc/uoc_validator.rb, line 22
def user_info
  retrieve_user_info!
end

Private Instance Methods

make_session_request() click to toggle source
# File lib/omniauth/strategies/uoc/uoc_validator.rb, line 48
def make_session_request
  conn = Faraday.new(:url => @session_uri.to_s) do |faraday|
    faraday.request  :url_encoded             # form-encode POST params
    faraday.response :logger                  # log requests to STDOUT
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end

  conn.post do |req|
    req.headers['Content-Type'] = DEFAULT_CONTENT_TYPE
    req.body = make_session_request_body(@username, @password)
  end
end
make_session_request_body(username,password) click to toggle source
# File lib/omniauth/strategies/uoc/uoc_validator.rb, line 61
def make_session_request_body(username,password)
  request_body = MultiXml.parse(SESSION_REQUEST_BODY)
  request_body['session']['name'] = username
  request_body['session']['password'] = password
  request_body['session'].to_xml :root => :session
end
retrieve_user_info!() click to toggle source
# File lib/omniauth/strategies/uoc/uoc_validator.rb, line 27
def retrieve_user_info!
  response = make_session_request
  user_info = nil
  unless response.status.to_i != 201 || response.body.nil? || response.body == ''
    xml = MultiXml.parse(response.body)
    if(xml['session']['authenticated'] == 'true')
      user_info = {
          :name => xml['session']['fullname'],
          :email => xml['session']['email'],
          :nickname =>xml['session']['login'],
          :extra => xml['session']
      }
    end
  end
  if user_info.nil?
    OmniAuth.logger.send(:warn, "(crowd) [retrieve_user_info!] response code: #{response.status.to_s}")
    OmniAuth.logger.send(:warn, "(crowd) [retrieve_user_info!] response body: #{response.body}")
  end
  user_info
end