class Discovery
Public Class Methods
new(session, url, session_key_suffix=nil)
click to toggle source
expects a normalized url
# File lib/yadis/manager.rb, line 38 def initialize(session, url, session_key_suffix=nil) @session = session @url = url @session_key = @@prefix + (session_key_suffix or @@default_suffix) end
Public Instance Methods
create_manager(services, yadis_url=nil)
click to toggle source
# File lib/yadis/manager.rb, line 97 def create_manager(services, yadis_url=nil) if self.get_manager raise ArgumentError, "There is already a manager for #{@url}" end if services.length > 0 manager = YadisServiceManager.new(@url, yadis_url, services) self.store_manager(manager) else manager = nil end return manager end
current()
click to toggle source
# File lib/yadis/manager.rb, line 80 def current manager = self.get_manager return nil unless manager return manager.current end
destroy_manager()
click to toggle source
# File lib/yadis/manager.rb, line 112 def destroy_manager if self.get_manager begin @session.delete(@session_key) rescue # sometimes Hash like session objects don't have a delete # method. We handle that case by assigning nil to the session[key] @session[@session_key] = nil end end end
discover(filter=nil)
click to toggle source
The filter argument is a Proc that will be used to call YADIS#filter_services. See the documentation for YADIS#filter_services for more information about writing filters.
# File lib/yadis/manager.rb, line 131 def discover(filter=nil) y = YADIS.new(@url) # a default filter which sends through everything. you should # probably consider writing a custom filter and passing it in. unless filter filter = lambda {|s| s} end return [y.uri, y.filter_services(filter)] end
finish()
click to toggle source
# File lib/yadis/manager.rb, line 71 def finish manager = self.get_manager return nil unless manager service = manager.current self.destroy_manager return service end
get_manager()
click to toggle source
# File lib/yadis/manager.rb, line 86 def get_manager manager = @session[@session_key] # make sure we've got the right manager here if manager and manager.for_url?(@url) return manager end return nil end
next_service()
click to toggle source
# File lib/yadis/manager.rb, line 44 def next_service manager = self.get_manager if manager and manager.length <= 0 self.destroy_manager manager = nil end unless manager begin yadis_url, services = self.discover rescue YADISParseError, YADISHTTPError manager = nil else manager = self.create_manager(services, yadis_url) end end if manager service = manager.next self.store_manager(manager) else service = nil end return service end
store_manager(manager)
click to toggle source
# File lib/yadis/manager.rb, line 124 def store_manager(manager) @session[@session_key] = manager end