class Thrift::ThinHTTPServer::RackApplication

Constants

THRIFT_HEADER

Public Class Methods

failed_request() click to toggle source
# File lib/thrift/server/thin_http_server.rb, line 80
def self.failed_request
  Rack::Response.new(['Not Found'], 404, {'Content-Type' => THRIFT_HEADER})
end
for(path, processor, protocol_factory) click to toggle source
# File lib/thrift/server/thin_http_server.rb, line 54
def self.for(path, processor, protocol_factory)
  Rack::Builder.new do
    use Rack::CommonLogger
    use Rack::ShowExceptions
    use Rack::Lint
    map path do
      run lambda { |env|
        request = Rack::Request.new(env)
        if RackApplication.valid_thrift_request?(request)
          RackApplication.successful_request(request, processor, protocol_factory)
        else
          RackApplication.failed_request
        end
      }
    end
  end
end
successful_request(rack_request, processor, protocol_factory) click to toggle source
# File lib/thrift/server/thin_http_server.rb, line 72
def self.successful_request(rack_request, processor, protocol_factory)
  response = Rack::Response.new([], 200, {'Content-Type' => THRIFT_HEADER})
  transport = IOStreamTransport.new rack_request.body, response
  protocol = protocol_factory.get_protocol transport
  processor.process protocol, protocol
  response
end
valid_thrift_request?(rack_request) click to toggle source
# File lib/thrift/server/thin_http_server.rb, line 84
def self.valid_thrift_request?(rack_request)
  rack_request.post? && rack_request.env["CONTENT_TYPE"] == THRIFT_HEADER
end