Sha256: 4ed514c3553e18b7bdf226b14e553cc37122aa6731c9ee2154a9680773ccfef5

Contents?: true

Size: 1.83 KB

Versions: 5

Compression:

Stored size: 1.83 KB

Contents

module SoarAuditorApi
  class AuditorAPI
    AUDIT_LEVELS = [:debug, :info, :warn, :error, :fatal] unless defined? AUDIT_LEVELS; AUDIT_LEVELS.freeze
    DEFAULT_AUDIT_LEVEL = :info unless defined? DEFAULT_AUDIT_LEVEL; DEFAULT_AUDIT_LEVEL.freeze

    def initialize
      @configuration = nil
      @minimum_audit_level = DEFAULT_AUDIT_LEVEL
    end

    def configure(configuration = nil)
      raise ArgumentError, "Invalid configuration provided" unless configuration_is_valid?(configuration)
      @configuration = configuration
    end

    def set_audit_level(minimum_audit_level)
      raise ArgumentError, "Invalid audit level specified" unless AUDIT_LEVELS.include?(minimum_audit_level)
      @minimum_audit_level = minimum_audit_level
    end

    def debug(data)
      audit(data.to_s) if audit_filtered_out?(:debug)
    end

    def <<(data)
      audit(data.to_s) if audit_filtered_out?(:info)
    end

    def info(data)
      audit(data.to_s) if audit_filtered_out?(:info)
    end

    def warn(data)
      audit(data.to_s) if audit_filtered_out?(:warn)
    end

    def error(data)
      audit(data.to_s) if audit_filtered_out?(:error)
    end

    def fatal(data)
      audit(data.to_s) if audit_filtered_out?(:fatal)
    end

    #Safety to ensure that the Auditor that extends this API implements this IOC method
    def configuration_is_valid?(configuration)
      raise NotImplementedError, "Class must implement configuration_is_valid? method in Auditor extending the API"
    end

    #Safety to ensure that the Auditor that extends this API implements this IOC method
    def audit(data)
      raise NotImplementedError, "Class must implement audit method in Auditor extending the API"
    end

    private

    def audit_filtered_out?(audit_level)
      return AUDIT_LEVELS.index(@minimum_audit_level) <= AUDIT_LEVELS.index(audit_level)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
soar_auditor_api-0.0.11 lib/soar_auditor_api/auditor_api.rb
soar_auditor_api-0.0.10 lib/soar_auditor_api/auditor_api.rb
soar_auditor_api-0.0.9 lib/soar_auditor_api/auditor_api.rb
soar_auditor_api-0.0.8 lib/soar_auditor_api/auditor_api.rb
soar_auditor_api-0.0.7 lib/soar_auditor_api/auditor_api.rb