class ZabbixApi
  class BaseError < RuntimeError
    attr_accessor :response, :error, :error_message

    def initialize(message, response = nil)
      super(message)
      @response = response

      set_error! if @response
    end

  private

    def set_error!
      @error = @response['error']
      @error_message = "#{@error['message']}: #{@error['data']}"
    rescue StandardError
      @error = nil
      @error_message = nil
    end
  end

  class ApiError < BaseError
  end

  class HttpError < BaseError
  end
end