This header is passed by Rack::Proxy during testing. Rack::Proxy seems to set content-length for you, and setting it in here really slows the tests down. Better suggestions welcome.
# File lib/faye/adapters/rack_adapter.rb, line 55 def add_extension(extension) @server.add_extension(extension) end
# File lib/faye/adapters/rack_adapter.rb, line 63 def add_websocket_extension(extension) @extensions << extension end
# File lib/faye/adapters/rack_adapter.rb, line 75 def call(env) Faye.ensure_reactor_running! request = Rack::Request.new(env) unless request.path_info =~ @endpoint_re env['faye.client'] = get_client return @app ? @app.call(env) : [404, TYPE_TEXT, ["Sure you're not looking for #{@endpoint} ?"]] end return @static.call(env) if @static =~ request.path_info # http://groups.google.com/group/faye-users/browse_thread/thread/4a01bb7d25d3636a if env['REQUEST_METHOD'] == 'OPTIONS' or env['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] == 'POST' return handle_options end return handle_websocket(request) if Faye::WebSocket.websocket?(env) return handle_eventsource(request) if Faye::EventSource.eventsource?(env) handle_request(request) end
# File lib/faye/adapters/rack_adapter.rb, line 67 def close @server.close end
# File lib/faye/adapters/rack_adapter.rb, line 71 def get_client @client ||= Client.new(@server) end
# File lib/faye/adapters/rack_adapter.rb, line 51 def listen(*args) raise 'The listen() method is deprecated - see https://github.com/faye/faye-websocket-ruby#running-your-socket-application for information on running your Faye server' end
# File lib/faye/adapters/rack_adapter.rb, line 59 def remove_extension(extension) @server.remove_extension(extension) end
# File lib/faye/adapters/rack_adapter.rb, line 25 def initialize(app = nil, options = nil, &block) @app = app if app.respond_to?(:call) @options = [app, options].grep(Hash).first || {} ::WebSocket::Driver.validate_options(@options, [:engine, :mount, :ping, :timeout, :extensions, :websocket_extensions]) @endpoint = @options[:mount] || DEFAULT_ENDPOINT @extensions = [] @endpoint_re = Regexp.new('^' + @endpoint.gsub(/\/$/, '') + '(/[^/]*)*(\.[^\.]+)?$') @server = Server.new(@options) @static = StaticServer.new(File.join(ROOT, '..', 'build', 'client'), /\.(?:js|map)$/) @static.map(File.basename(@endpoint) + '.js', SCRIPT_PATH) @static.map('client.js', SCRIPT_PATH) if extensions = @options[:extensions] [*extensions].each { |extension| add_extension(extension) } end if websocket_extensions = @options[:websocket_extensions] [*websocket_extensions].each { |ext| add_websocket_extension(ext) } end block.call(self) if block end