class OpenID::Consumer::DiscoveryManager

Manages calling discovery and tracking which endpoints have already been attempted.

Public Class Methods

new(session, url, session_key_suffix=nil) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 63
def initialize(session, url, session_key_suffix=nil)
  @url = url

  @session = OpenID::Consumer::Session.new(session, DiscoveredServices)
  @session_key_suffix = session_key_suffix || 'auth'
end

Public Instance Methods

cleanup(force=false) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 92
def cleanup(force=false)
  manager = get_manager(force)
  if !manager.nil?
    service = manager.current
    destroy_manager(force)
  else
    service = nil
  end
  return service
end
get_next_service() { |url| ... } click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 70
def get_next_service
  manager = get_manager
  if !manager.nil? && manager.empty?
    destroy_manager
    manager = nil
  end

  if manager.nil?
    yadis_url, services = yield @url
    manager = create_manager(yadis_url, services)
  end

  if !manager.nil?
    service = manager.next
    store(manager)
  else
    service = nil
  end

  return service
end

Protected Instance Methods

create_manager(yadis_url, services) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 114
def create_manager(yadis_url, services)
  manager = get_manager
  if !manager.nil?
    raise StandardError, "There is already a manager for #{yadis_url}"
  end
  if services.empty?
    return nil
  end
  manager = DiscoveredServices.new(@url, yadis_url, services)
  store(manager)
  return manager
end
destroy!() click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 145
def destroy!
  @session[session_key] = nil
end
destroy_manager(force=false) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 127
def destroy_manager(force=false)
  if !get_manager(force).nil?
    destroy!
  end
end
get_manager(force=false) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 105
def get_manager(force=false)
  manager = load
  if force || manager.nil? || manager.for_url?(@url)
    return manager
  else
    return nil
  end
end
load() click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 141
def load
  @session[session_key]
end
session_key() click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 133
def session_key
  'OpenID::Consumer::DiscoveredServices::' + @session_key_suffix
end
store(manager) click to toggle source
# File lib/openid/consumer/discovery_manager.rb, line 137
def store(manager)
  @session[session_key] = manager
end