diff options
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 |