Class: ZabbixApi::Client
- Inherits:
-
Object
- Object
- ZabbixApi::Client
- Defined in:
- lib/zabbixapi/client.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
- #_request(body) ⇒ Object
- #api_request(body) ⇒ Object
- #api_version ⇒ Object
- #auth ⇒ Object
- #http_request(body) ⇒ Object
- #id ⇒ Object
-
#initialize(options = {}) ⇒ Client
constructor
A new instance of Client.
- #message_json(body) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Client
Returns a new instance of Client.
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/zabbixapi/client.rb', line 28 def initialize( = {}) @options = unless ENV['http_proxy'].nil? @proxy_uri = URI.parse(ENV['http_proxy']) @proxy_host = @proxy_uri.host @proxy_port = @proxy_uri.port @proxy_user, @proxy_pass = @proxy_uri.userinfo.split(/:/) if @proxy_uri.userinfo end @auth_hash = auth end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
8 9 10 |
# File 'lib/zabbixapi/client.rb', line 8 def @options end |
Instance Method Details
#_request(body) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/zabbixapi/client.rb', line 76 def _request(body) puts "[DEBUG] Send request: #{body}" if @options[:debug] result = JSON.parse(http_request(body)) raise "Server answer API error:\n #{JSON.pretty_unparse(result['error'])}\n on request:\n #{JSON.pretty_unparse(JSON.parse(body))}" if result['error'] result['result'] end |
#api_request(body) ⇒ Object
83 84 85 |
# File 'lib/zabbixapi/client.rb', line 83 def api_request(body) _request (body) end |
#api_version ⇒ Object
14 15 16 |
# File 'lib/zabbixapi/client.rb', line 14 def api_version @version ||= api_request(:method => "apiinfo.version", :params => {}) end |
#auth ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/zabbixapi/client.rb', line 18 def auth api_request( :method => 'user.authenticate', :params => { :user => @options[:user], :password => @options[:password], } ) end |
#http_request(body) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/zabbixapi/client.rb', line 50 def http_request(body) uri = URI.parse(@options[:url]) unless @proxy_uri.nil? http = Net::HTTP.Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_pass).new(uri.host, uri.port) if uri.port == 443 http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end else http = Net::HTTP.new(uri.host, uri.port) if uri.port == 443 http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end end request = Net::HTTP::Post.new(uri.request_uri) request.basic_auth @options[:http_user], @options[:http_password] if @options[:http_user] request.add_field('Content-Type', 'application/json-rpc') request.body = body response = http.request(request) raise "HTTP Error: #{response.code} on #{@options[:url]}" unless response.code == "200" puts "[DEBUG] Get answer: #{response.body}" if @options[:debug] response.body end |
#id ⇒ Object
10 11 12 |
# File 'lib/zabbixapi/client.rb', line 10 def id rand(100000) end |
#message_json(body) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/zabbixapi/client.rb', line 39 def (body) = { :method => body[:method], :params => body[:params], :auth => @auth_hash, :id => id, :jsonrpc => '2.0' } JSON.generate() end |