# class Puppet::Network::HTTP::Rack

An rack application, for running the Puppet HTTP Server.

### Public Instance Methods

call(env) click to toggle source

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.

    # 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