module Tom::Http

Public Class Methods

make_request(method, url, options = {}) click to toggle source

Makes a http request of the given method to the given url. Passes the options on to EM::HttpRequest.put (or whatever method has to be called) and does some error handling and works around some EM:HttpRequest oddities (see handle_errors).

@param method [Symbol] Request method, lowercase, you know

the deal

@param url [String] Full url (e.g. host + path) @param options [Hash] Options to pass to EM::HttpRequest's

get/put/post/delete method
# File lib/http.rb, line 14
def self.make_request(method, url, options = {})
  Tom::Log.logger.info "     curl -X#{method.upcase} -d '#{options[:body]}' #{url}"

  conn = EM::HttpRequest.new(url, connection_options)
  result  = conn.send(method, options)

  # Disabling this for a while
  # handle_errors(method, url, result)

  result
end

Private Class Methods

connection_options() click to toggle source
# File lib/http.rb, line 28
def self.connection_options
  { connect_timeout: Tom.config[:timeouts][:connect_timeout],
    inactivity_timeout: Tom.config[:timeouts][:inactivity_timeout]}
end
handle_errors(method, url, result) click to toggle source
# File lib/http.rb, line 33
def self.handle_errors(method, url, result)
  result.errback do
    raise "Tom::Adapter.forward_request error '#{result.error}' for #{method} #{url}"
  end
  return unless result.response_header.status == 0
  raise "EM::HttpRequest returned response code 0 for #{url} - timeout?"
end