diff options
author | Luke Kanies <luke@madstop.com> | 2007-10-05 00:08:15 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-10-05 00:08:15 -0500 |
commit | 275af562b462813ddf5ddbad2192ddc2bf57770c (patch) | |
tree | aceabf68095b8c34fd599f245022a9aaab0984da /lib/puppet/network/rest_server.rb | |
parent | ce0178316d8cefd072f53d39b59ce47332f6ec8f (diff) | |
parent | 29accba1b9343f4967c15d36506b3bf60d5f0f9c (diff) | |
download | puppet-275af562b462813ddf5ddbad2192ddc2bf57770c.tar.gz puppet-275af562b462813ddf5ddbad2192ddc2bf57770c.tar.xz puppet-275af562b462813ddf5ddbad2192ddc2bf57770c.zip |
Merge branch 'routing' of http://git.rickbradley.com/puppet into routing
Diffstat (limited to 'lib/puppet/network/rest_server.rb')
-rw-r--r-- | lib/puppet/network/rest_server.rb | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/lib/puppet/network/rest_server.rb b/lib/puppet/network/rest_server.rb index e415e8bcb..d1206928c 100644 --- a/lib/puppet/network/rest_server.rb +++ b/lib/puppet/network/rest_server.rb @@ -1,2 +1,37 @@ -class Puppet::Network::RESTServer # :nodoc: +class Puppet::Network::RESTServer + attr_reader :server + + def initialize(args = {}) + raise(ArgumentError, "requires :server to be specified") unless args[:server] + @routes = {} + @listening = false + @server = args[:server] + end + + def register(*indirections) + raise ArgumentError, "indirection names are required" if indirections.empty? + indirections.flatten.each { |i| @routes[i.to_sym] = true } + end + + def unregister(*indirections) + indirections = @routes.keys if indirections.empty? + indirections.flatten.each do |i| + raise(ArgumentError, "indirection [%s] is not known" % i) unless @routes[i.to_sym] + @routes.delete(i.to_sym) + end + end + + def listening? + @listening + end + + def listen + raise "Cannot listen -- already listening" if listening? + @listening = true + end + + def unlisten + raise "Cannot unlisten -- not currently listening" unless listening? + @listening = false + end end |