Class: EventMachine::HttpRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/em-http/request.rb

Overview

EventMachine based HTTP request class with support for streaming consumption of the response. Response is parsed with a Ragel-generated whitelist parser which supports chunked HTTP encoding.

Example

EventMachine.run {
  http = EventMachine::HttpRequest.new('http://127.0.0.1/').get :query => {'keyname' => 'value'}

  http.callback {
   p http.response_header.status
   p http.response_header
   p http.response

EventMachine.stop

  }
}

Direct Known Subclasses

MockHttpRequest

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, headers = {}) ⇒ HttpRequest

Returns a new instance of HttpRequest.



29
30
31
32
# File 'lib/em-http/request.rb', line 29

def initialize(host, headers = {})
  @headers = headers
  @uri = host.kind_of?(Addressable::URI) ? host : Addressable::URI::parse(host)
end

Instance Attribute Details

#methodObject (readonly)

Returns the value of attribute method.



27
28
29
# File 'lib/em-http/request.rb', line 27

def method
  @method
end

#optionsObject (readonly)

Returns the value of attribute options.



27
28
29
# File 'lib/em-http/request.rb', line 27

def options
  @options
end

Instance Method Details

#delete(options = {}, &blk) ⇒ Object



52
# File 'lib/em-http/request.rb', line 52

def delete options = {}, &blk;  setup_request(:delete, options, &blk);  end

#get(options = {}, &blk) ⇒ Object

Send an HTTP request and consume the response. Supported options:

head: {Key: Value}
  Specify an HTTP header, e.g. {'Connection': 'close'}

query: {Key: Value}
  Specify query string parameters (auto-escaped)

body: String
  Specify the request body (you must encode it for now)

on_response: Proc
  Called for each response body chunk (you may assume HTTP 200
  OK then)


50
# File 'lib/em-http/request.rb', line 50

def get    options = {}, &blk;  setup_request(:get,  options, &blk);    end

#head(options = {}, &blk) ⇒ Object



51
# File 'lib/em-http/request.rb', line 51

def head   options = {}, &blk;  setup_request(:head, options, &blk);    end

#post(options = {}, &blk) ⇒ Object



54
# File 'lib/em-http/request.rb', line 54

def post   options = {}, &blk;  setup_request(:post, options, &blk);    end

#put(options = {}, &blk) ⇒ Object



53
# File 'lib/em-http/request.rb', line 53

def put    options = {}, &blk;  setup_request(:put, options, &blk);     end