lib/zobbix.rb in zobbix-0.0.1 vs lib/zobbix.rb in zobbix-0.0.2
- old
+ new
@@ -32,10 +32,15 @@
def initialize(method)
super "Unknown method #{method.inspect}"
end
end
+ #
+ # @param [Hash] credentials Connection credentials
+ # @option opts [String] :uri Zabbix Server URI
+ # @option opts [String] :user
+ # @option opts [String] :password
def self.connect(credentials)
new(credentials)
.tap(&:check_version!)
.tap(&:authenticate!)
end
@@ -43,13 +48,10 @@
def self.supported_version?(zabbix_version)
zabbix_version.to_s =~ /^2\.4\./
end
attr_reader :credentials, :auth
-
- #
- # @param Zobbix::Credentials
def initialize(credentials)
@raise_exceptions = credentials.delete(:raise_exceptions) || false
@credentials = Credentials.new(credentials)
@auth = nil
end
@@ -58,11 +60,11 @@
#
# @note This method should be called automatically
# @raise Zobbix::ConnectionError Can't establish connection
# @raise Zobbix::UnsupportedVersionError Bad API version
def check_version!
- version = Apiinfo::VersionRequest.perform(credentials.uri).result
+ version = request('apiinfo.version').result
if version.nil?
raise ConnectionError.new(credentials)
end
@@ -78,57 +80,35 @@
# @see https://www.zabbix.com/documentation/2.4/manual/api#authentication
# @note This method should be called automatically
#
# @raise Zobbix::AuthenticationError
def authenticate!
- response = User::LoginRequest.perform(credentials.uri,
- credentials.user,
- credentials.password)
+ response = request('user.login', user: credentials.user,
+ password: credentials.password)
unless response.success?
raise AuthenticationError.new(credentials)
end
@auth = response.result
end
# Makes API request
#
- # @param [String] request method
- # @param [Hash] request params
- # @return [Zobbix::ApiResponse] response object
+ # @param [String] method Request method
+ # @param [Hash] params Request params
+ # @return [Zobbix::ApiResponse] Response object
#
# @see https://www.zabbix.com/documentation/2.4/manual/api/reference
def request(method, params = {})
- request = resolve_class(method)
+ params = params.merge(auth: @auth) if requires_auth?(method)
- response =
- if request
- if requires_auth?(method)
- request.perform(credentials.uri, @auth, params)
- else
- request.perform(credentials.uri, params)
- end
- else
- raw_request(method, params)
- end
-
+ response = ApiRequest.perform(credentials.uri, method, params)
response.raise_exception if @raise_exceptions && response.error?
-
response
end
private
-
- def resolve_class(method)
- namespace, mtd = method.split('.').map(&:capitalize)
- self.class.const_get(namespace).const_get("#{mtd}Request")
- rescue NameError
- end
-
- def raw_request(method, params)
- ApiRequest.perform(credentials.uri, method, params.merge(auth: @auth))
- end
def requires_auth?(method)
method = method.to_s
method != 'apiinfo.version' && method != 'user.login'
end