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