Note: This class is deprecated and will be removed. Please use EM-HTTP-Request instead.
EM.run{ conn = EM::Protocols::HttpClient2.connect 'google.com', 80 req = conn.get('/') req.callback{ |response| p(response.status) p(response.headers) p(response.content) } }
Make a connection to a remote HTTP server. Can take either a pair of arguments (which will be interpreted as a hostname/ip-address and a port), or a hash. If the arguments are a hash, then supported values include:
:host => a hostname or ip-address :port => a port number :ssl => true to enable ssl
# File lib/em/protocols/httpclient2.rb, line 246 def self.connect *args if args.length == 2 args = {:host=>args[0], :port=>args[1]} else args = args.first end h,prt,ssl = args[:host], Integer(args[:port]), (args[:tls] || args[:ssl]) conn = EM.connect( h, prt, self ) conn.start_tls if ssl conn.set_default_host_header( h, prt, ssl ) conn end
# File lib/em/protocols/httpclient2.rb, line 46 def initialize warn "HttpClient2 is deprecated and will be removed. EM-Http-Request should be used instead." @authorization = nil @closed = nil @requests = nil end
@private
# File lib/em/protocols/httpclient2.rb, line 309 def connection_completed super @connected.succeed end
Get a url
req = conn.get(:uri => '/') req.callback{|response| puts response.content }
# File lib/em/protocols/httpclient2.rb, line 265 def get args if args.is_a?(String) args = {:uri=>args} end args[:verb] = "GET" request args end
# File lib/em/protocols/httpclient2.rb, line 366 def pop_request @requests.pop end
Post to a url
req = conn.post('/data') req.callback{|response| puts response.content }
# File lib/em/protocols/httpclient2.rb, line 279 def post args if args.is_a?(String) args = {:uri=>args} end args[:verb] = "POST" request args end
@private
# File lib/em/protocols/httpclient2.rb, line 303 def post_init super @connected = EM::DefaultDeferrable.new end
@private
# File lib/em/protocols/httpclient2.rb, line 358 def receive_binary_data text @requests.last.receive_text text end
@private
# File lib/em/protocols/httpclient2.rb, line 348 def receive_line ln if req = @requests.last req.receive_line ln else p "??????????" p ln end end
@private
# File lib/em/protocols/httpclient2.rb, line 334 def request args args[:host_header] = @host_header unless args.has_key?(:host_header) args[:authorization] = @authorization unless args.has_key?(:authorization) r = Request.new self, args if @closed r.fail else (@requests ||= []).unshift r @connected.callback {r.send_request} end r end
# File lib/em/protocols/httpclient2.rb, line 293 def set_default_host_header host, port, ssl if (ssl and port != 443) or (!ssl and port != 80) @host_header = "#{host}:#{port}" else @host_header = host end end
# File lib/em/protocols/httpclient2.rb, line 327 def unbind super @closed = true (@requests || []).each {|r| r.fail} end