lib/oxidized/source/http.rb in oxidized-0.24.0 vs lib/oxidized/source/http.rb in oxidized-0.25.0

- old
+ new

@@ -10,40 +10,21 @@ raise NoConfig, 'no source http url config, edit ~/.config/oxidized/config' end end require "net/http" + require "net/https" require "uri" require "json" def load node_want = nil nodes = [] - uri = URI.parse(@cfg.url) - http = Net::HTTP.new(uri.host, uri.port) - http.use_ssl = true if uri.scheme == 'https' - http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @cfg.secure - - # map headers - headers = {} - @cfg.headers.each do |header, value| - headers[header] = value - end - - req_uri = uri.request_uri - if node_want - req_uri = "#{req_uri}/#{node_want}" - end - request = Net::HTTP::Get.new(req_uri, headers) - if (@cfg.user? && @cfg.pass?) - request.basic_auth(@cfg.user, @cfg.pass) - end - - response = http.request(request) - data = JSON.parse(response.body) + data = JSON.parse(read_http(node_want)) data = string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location? data.each do |node| next if node.empty? + # map node parameters keys = {} @cfg.map.each do |key, want_position| keys[key.to_sym] = node_var_interpolate string_navigate(node, want_position) end @@ -69,8 +50,31 @@ match.empty? ? head : [head, match[1..-2].to_i] end.flatten.each do |want| object = object[want] if object.respond_to? :each end object + end + + def read_http node_want + uri = URI.parse(@cfg.url) + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true if uri.scheme == 'https' + http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @cfg.secure + + # map headers + headers = {} + @cfg.headers.each do |header, value| + headers[header] = value + end + + req_uri = uri.request_uri + if node_want + req_uri = "#{req_uri}/#{node_want}" + end + request = Net::HTTP::Get.new(req_uri, headers) + if (@cfg.user? && @cfg.pass?) + request.basic_auth(@cfg.user, @cfg.pass) + end + http.request(request).body end end end