class Elastics::HttpClients::Patron

Public Instance Methods

request(method, path, data=nil) click to toggle source
# File lib/elastics/http_clients/patron.rb, line 5
def request(method, path, data=nil)
  # patron would raise an error for :post and :put requests with no data
  # and elasticsearch ignores the data when it expects no data,
  # so we silence patron by adding some dummy data
  data = {} if (method == 'POST' || method == 'PUT') && data.nil?
  opts = options.merge(:data => data)
  session.request method.to_s.downcase.to_sym, path, {}, opts
rescue ::Patron::TimeoutError
  session.request method.to_s.downcase.to_sym, path, {}, opts
end

Private Instance Methods

session() click to toggle source
# File lib/elastics/http_clients/patron.rb, line 18
def session
  Thread.current[:elastics_patron_session] ||= begin
                                                sess                       = ::Patron::Session.new
                                                sess.headers['User-Agent'] = "elastics-client"
                                                sess.base_url              = base_uri
                                                sess
                                              end
end