class Jerakia::Datasource::Http

Public Instance Methods

lookup() click to toggle source
# File lib/jerakia/datasource/http.rb, line 30
def lookup

  lookup_supported_params = [
    :host,
    :port,
    :output,
    :failure,
    :ignore_404,
    :headers,
    :http_connect_timeout,
    :http_read_timeout,
    :use_ssl,
    :ssl_ca_cert,
    :ssl_cert,
    :ssl_key,
    :ssl_verify,
    :use_auth,
    :auth_user,
    :auth_pass
  ]
  lookup_params = options.select { |p| lookup_supported_params.include?(p) }
  http_lookup = LookupHttp.new(lookup_params)


  paths = options[:paths].flatten
  answer do |response|
    path = paths.shift
    break unless path
    Jerakia.log.debug("Attempting to load data from #{path}")

    data = http_lookup.get_parsed(path)
    Jerakia.log.debug("Datasource provided #{data} (#{data.class}) looking for key #{request.key}")

    if data.is_a?(Hash)
      if options[:lookup_key]
        response.submit data[request.key] if data.has_key?(request.key)
      else
        response.submit data
      end
    else
      unless options[:output] == 'plain' || options[:failure] == 'graceful'
        raise Jerakia::Error, "HTTP request did not return a hash for #{request.key}"
      end
      response.submit data
    end
  end
end