Method: Puppet::Network::HTTP::Rack#call
- Defined in:
- lib/vendor/puppet/network/http/rack.rb
#call(env) ⇒ Object
The real rack application (which needs to respond to call). The work we need to do, roughly is:
-
Read request (from env) and prepare a response
-
Route the request to the correct handler
-
Return the response (in rack-format) to our caller.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/vendor/puppet/network/http/rack.rb', line 37 def call(env) request = Rack::Request.new(env) response = Rack::Response.new Puppet.debug 'Handling request: %s %s' % [request.request_method, request.fullpath] # if we shall serve XMLRPC, have /RPC2 go to the xmlrpc handler if @xmlrpc_http_handler and @xmlrpc_path == request.path_info[0, @xmlrpc_path.size] handler = @xmlrpc_http_handler else # everything else is handled by the new REST handler handler = @rest_http_handler end begin handler.process(request, response) rescue => detail # Send a Status 500 Error on unhandled exceptions. response.status = 500 response['Content-Type'] = 'text/plain' response.write 'Internal Server Error: "%s"' % detail. # log what happened Puppet.err "Puppet Server (Rack): Internal Server Error: Unhandled Exception: \"%s\"" % detail. Puppet.err "Backtrace:" detail.backtrace.each { |line| Puppet.err " > #{line}" } end response.finish end |