class Faye::Transport::Http
Public Class Methods
Source
# File lib/faye/transport/http.rb, line 4 def self.usable?(dispatcher, endpoint, &callback) callback.call(URI === endpoint) end
Public Instance Methods
Source
# File lib/faye/transport/http.rb, line 8 def encode(messages) Faye.to_json(messages) end
Source
# File lib/faye/transport/http.rb, line 12 def request(messages) content = encode(messages) params = build_params(content) request = create_request(params) request.callback do handle_response(messages, request.response) store_cookies(request.response_header['SET_COOKIE']) end request.errback do handle_error(messages) end request end
Private Instance Methods
Source
# File lib/faye/transport/http.rb, line 31 def build_params(content) headers = { 'Content-Length' => content.bytesize, 'Content-Type' => 'application/json', 'Host' => @endpoint.host + (@endpoint.port ? ":#{ @endpoint.port }" : '') } params = { :head => headers.merge(@dispatcher.headers), :body => content } cookie = get_cookies params[:head]['Cookie'] = cookie unless cookie == '' params end
Source
# File lib/faye/transport/http.rb, line 49 def create_request(params) options = { :inactivity_timeout => 0, :tls => @dispatcher.tls } if @proxy[:origin] uri = URI(@proxy[:origin]) options[:proxy] = { :host => uri.host, :port => uri.port } if uri.user options[:proxy][:authorization] = [uri.user, uri.password] end end client = EventMachine::HttpRequest.new(@endpoint.to_s, options) client.post(params) end
Source
# File lib/faye/transport/http.rb, line 67 def handle_response(messages, response) replies = MultiJson.load(response) rescue nil if replies receive(replies) else handle_error(messages) end end