class ZBX::HttpClient

HttpClient send http request for api

Public Class Methods

new(api_url=nil) click to toggle source
# File lib/zbx/http_client.rb, line 6
def initialize api_url=nil
  @api_url = api_url
end

Public Instance Methods

api_url=(url) click to toggle source
# File lib/zbx/http_client.rb, line 43
def api_url= url
  @api_url, @uri, @http = url, nil, nil
end
http() click to toggle source
# File lib/zbx/http_client.rb, line 29
def http
  # Our http client. Borrowed from zabbixapi(https://github.com/vadv/zabbixapi)
  @http ||= Net::HTTP.new uri.host, uri.port
  if uri.port == 443
    @http.use_ssl = true
    @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
  @http
end
request(options={}) click to toggle source
# File lib/zbx/http_client.rb, line 10
def request options={}
  # send post request
  req = Net::HTTP::Post.new uri.request_uri
  req.add_field('Content-Type', 'application/json-rpc')
  req.body = options.to_json
  res = http.request(req)

  begin
    parsed = JSON.parse(res.body)
  rescue
    raise "Zabbix API Request Error: \n HTTP Response : #{res.inspect} \n #{res.body}"
  end

  if parsed["error"] or parsed["result"].nil?
    raise "Zabbix API Request Message(Bad request) : #{parsed}"
  end
  parsed['result']
end
uri() click to toggle source
# File lib/zbx/http_client.rb, line 39
def uri
  @uri ||= URI.parse(@api_url)
end