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