summaryrefslogtreecommitdiffstats
path: root/lib/puppet/network/http/mongrel
diff options
context:
space:
mode:
authorRick Bradley <rick@rickbradley.com>2007-10-16 13:57:56 -0500
committerRick Bradley <rick@rickbradley.com>2007-10-16 13:57:56 -0500
commit2a497fff66a7827059b712e84dcaff171ccab6be (patch)
tree1e66995191c44dd3e5951f13a1dd73263bf60395 /lib/puppet/network/http/mongrel
parent6ab78f62ee589e542fd653a54109c0f5141ea026 (diff)
Refactored to use a Handler base class for server+protocol handlers. Finally eliminated dependency on Puppet.start, etc., from WEBrick HTTP server class. {webrick,mongrel}+REST now support request handling uniformly; need encode/decode next.
Diffstat (limited to 'lib/puppet/network/http/mongrel')
-rw-r--r--lib/puppet/network/http/mongrel/rest.rb47
1 files changed, 4 insertions, 43 deletions
diff --git a/lib/puppet/network/http/mongrel/rest.rb b/lib/puppet/network/http/mongrel/rest.rb
index f9a6e3796..8f3de957e 100644
--- a/lib/puppet/network/http/mongrel/rest.rb
+++ b/lib/puppet/network/http/mongrel/rest.rb
@@ -1,47 +1,9 @@
-class Puppet::Network::HTTP::MongrelREST
- def initialize(args = {})
- raise ArgumentError unless @server = args[:server]
- raise ArgumentError unless @handler = args[:handler]
- register_handler
- end
-
- # handle an HTTP request coming from Mongrel
- def process(request, response)
- return @model.find if get?(request) and singular?(request)
- return @model.search if get?(request) and plural?(request)
- return @model.destroy if delete?(request) and singular?(request)
- return @model.new.save if put?(request) and singular?(request)
- raise ArgumentError, "Did not understand HTTP #{http_method(request)} request for '#{path(request)}'"
- # TODO: here, raise an exception, or do some defaulting or something
- end
-
+require 'puppet/network/http/handler'
+
+class Puppet::Network::HTTP::MongrelREST < Puppet::Network::HTTP::Handler
+
private
- def find_model_for_handler(handler)
- Puppet::Indirector::Indirection.model(handler) ||
- raise(ArgumentError, "Cannot locate indirection [#{handler}].")
- end
-
- def get?(request)
- http_method(request) == 'GET'
- end
-
- def put?(request)
- http_method(request) == 'PUT'
- end
-
- def delete?(request)
- http_method(request) == 'DELETE'
- end
-
- def singular?(request)
- %r{/#{@handler.to_s}$}.match(path(request))
- end
-
- def plural?(request)
- %r{/#{@handler.to_s}s$}.match(path(request))
- end
-
def register_handler
@model = find_model_for_handler(@handler)
@server.register('/' + @handler.to_s, self)
@@ -55,5 +17,4 @@ class Puppet::Network::HTTP::MongrelREST
def path(request)
request.params[Mongrel::Const::REQUEST_PATH]
end
-
end