module NFAgent class Client def self.post(end_point, data_hash) Log.info("Submitting to #{Config.service_host} on port #{Config.service_port}") proxy_class = Net::HTTP::Proxy(Config.http_proxy_host, Config.http_proxy_port, Config.http_proxy_user, Config.http_proxy_password) # TODO: Enable SSL proxy_class.start(Config.service_host, Config.service_port) do |http| http.read_timeout = 120 # 2 minutes TODO: Make this a config option with 120 as default req = Net::HTTP::Post.new("/#{end_point}") p({"key" => Config.client_key}.merge(data_hash).delete('data')) req.set_form_data({"key" => Config.client_key}.merge(data_hash)) ClientResponse.new do |resp| resp.response, resp.message = http.request(req) if !resp.ok? Log.info("Client Returned with code (#{resp.response.code}, #{resp.response.msg}) and message '#{resp.message}'") end end end rescue Exception => e # Trap Exception class here to ensure we catch Timeout ClientResponse.new do |resp| Log.info("Client Error: #{$!}") resp.message = $! end end end end