class Thrift::RackApplication

Constants

THRIFT_HEADER

Public Class Methods

for(path, processor, protocol_factory) click to toggle source
   # File lib/thrift/server/rack_application.rb
26 def self.for(path, processor, protocol_factory)
27   Rack::Builder.new do
28     map path do
29       run Thrift::RackApplication.new(processor, protocol_factory)
30     end
31   end
32 end
new(processor, protocol_factory) click to toggle source
   # File lib/thrift/server/rack_application.rb
34 def initialize(processor, protocol_factory)
35   @processor = processor
36   @protocol_factory = protocol_factory
37   @headers = { 'Content-Type' => THRIFT_HEADER }
38 end

Public Instance Methods

call(env) click to toggle source
   # File lib/thrift/server/rack_application.rb
40 def call(env)
41   req = Rack::Request.new(env)
42 
43   if valid_thrift_request?(req)
44     successful_request(req)
45   else
46     failed_request
47   end
48 end
failed_request() click to toggle source
   # File lib/thrift/server/rack_application.rb
60 def failed_request
61   [404, @headers, 'Not found']
62 end
successful_request(req) click to toggle source
   # File lib/thrift/server/rack_application.rb
50 def successful_request(req)
51   resp = Rack::Response.new([], 200, @headers)
52   transport = IOStreamTransport.new req.body, resp
53   protocol = @protocol_factory.get_protocol transport
54 
55   @processor.process protocol, protocol
56 
57   [resp.status, resp.headers, resp.body]
58 end
valid_thrift_request?(req) click to toggle source
   # File lib/thrift/server/rack_application.rb
64 def valid_thrift_request?(req)
65   req.post? && req.env['CONTENT_TYPE'] == THRIFT_HEADER
66 end