Class: Puppet::Network::HTTP::Rack

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/network/http/rack.rb

Overview

An rack application, for running the Puppet HTTP Server.

Instance Method Summary collapse

Instance Method Details

#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.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/puppet/network/http/rack.rb', line 15

def call(env)
  request = Rack::Request.new(env)
  response = Rack::Response.new
  Puppet.debug 'Handling request: %s %s' % [request.request_method, request.fullpath]

  begin
    Puppet::Network::HTTP::RackREST.new.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.message
    # log what happened
    Puppet.log_exception(detail, _("Puppet Server (Rack): Internal Server Error: Unhandled Exception: \"%s\"") % detail.message)
  end
  response.finish
end