Class: Discovery
- Inherits:
-
Object
- Object
- Discovery
- Defined in:
- lib/yadis/manager.rb
Constant Summary collapse
- @@default_suffix =
'auth'
- @@prefix =
'_yadis_services_'
Instance Method Summary collapse
- #create_manager(services, yadis_url = nil) ⇒ Object
- #current ⇒ Object
- #destroy_manager ⇒ Object
-
#discover(filter = nil) ⇒ Object
The filter argument is a Proc that will be used to call YADIS.filter_services.
- #finish ⇒ Object
- #get_manager ⇒ Object
-
#initialize(session, url, session_key_suffix = nil) ⇒ Discovery
constructor
expects a normalized url.
- #next_service ⇒ Object
- #store_manager(manager) ⇒ Object
Constructor Details
#initialize(session, url, session_key_suffix = nil) ⇒ Discovery
expects a normalized url
38 39 40 41 42 |
# 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 |
Instance Method Details
#create_manager(services, yadis_url = nil) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# 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 ⇒ Object
80 81 82 83 84 |
# File 'lib/yadis/manager.rb', line 80 def current manager = self.get_manager return nil unless manager return manager.current end |
#destroy_manager ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 |
# 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) ⇒ Object
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.
131 132 133 134 135 136 137 138 139 140 141 |
# 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 ⇒ Object
71 72 73 74 75 76 77 78 |
# 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 ⇒ Object
86 87 88 89 90 91 92 93 94 95 |
# 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 ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# 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) ⇒ Object
124 125 126 |
# File 'lib/yadis/manager.rb', line 124 def store_manager(manager) @session[@session_key] = manager end |