module Stark::Rack::ContentNegotiation

Constants

THRIFT_CONTENT_TYPE
THRIFT_JSON_CONTENT_TYPE

Public Instance Methods

accept_json?(env) click to toggle source
# File lib/stark/rack/content_negotiation.rb, line 6
def accept_json?(env)
  env['HTTP_ACCEPT'] == THRIFT_JSON_CONTENT_TYPE ||
    env['HTTP_CONTENT_TYPE'] == THRIFT_JSON_CONTENT_TYPE
end
headers(env) click to toggle source
# File lib/stark/rack/content_negotiation.rb, line 11
def headers(env)
  headers = { 'Content-Type' => THRIFT_CONTENT_TYPE }
  if accept_json?(env)
    headers['Content-Type'] = THRIFT_JSON_CONTENT_TYPE
  end
  headers
end
protocol_factory(env) click to toggle source
# File lib/stark/rack/content_negotiation.rb, line 19
def protocol_factory(env)
  if env['stark.protocol.factory']
    env['stark.protocol.factory']
  else
    if accept_json?(env)
      f = Thrift::JsonProtocolFactory.new
      env['stark.protocol'] = :json
    else
      f = Thrift::BinaryProtocolFactory.new
      env['stark.protocol'] = :binary
    end
    env['stark.protocol.factory'] = f
  end
end