Sha256: 8e0dba00ca0fb196b7aa3f345476f82c9a77ba8c557a39b96e3a433072078ff2

Contents?: true

Size: 1.27 KB

Versions: 25

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Mihari
  class Status
    def check
      statuses
    end

    def self.check
      new.check
    end

    private

    #
    # Statuses of analyzers and emitters
    #
    # @return [Array<Hash>]
    #
    def statuses
      (Mihari.analyzers + Mihari.emitters + Mihari.enrichers).to_h do |klass|
        name = klass.to_s.split("::").last.to_s

        [name, build_status(klass)]
      end.compact
    end

    #
    # Build a status of a class
    #
    # @param [Class<Mihari::Analyzers::Base>, Class<Mihari::Emitters::Base>] klass
    #
    # @return [Hash, nil]
    #
    def build_status(klass)
      return nil if klass == Mihari::Analyzers::Rule

      is_analyzer = klass.ancestors.include?(Mihari::Analyzers::Base)
      is_emitter = klass.ancestors.include?(Mihari::Emitters::Base)
      is_enricher = klass.ancestors.include?(Mihari::Enrichers::Base)

      instance = is_analyzer ? klass.new("dummy") : klass.new
      is_configured = instance.configured?
      values = instance.configuration_values

      type = "Analyzer"
      type = "Emitter" if is_emitter
      type = "Enricher" if is_enricher

      values ? { is_configured: is_configured, values: values, type: type } : nil
    rescue ArgumentError => _e
      nil
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
mihari-4.12.0 lib/mihari/status.rb
mihari-4.11.0 lib/mihari/status.rb
mihari-4.10.0 lib/mihari/status.rb
mihari-4.9.0 lib/mihari/status.rb
mihari-4.8.0 lib/mihari/status.rb
mihari-4.7.4 lib/mihari/status.rb
mihari-4.7.3 lib/mihari/status.rb
mihari-4.7.2 lib/mihari/status.rb
mihari-4.7.1 lib/mihari/status.rb
mihari-4.7.0 lib/mihari/status.rb
mihari-4.6.1 lib/mihari/status.rb
mihari-4.6.0 lib/mihari/status.rb
mihari-4.5.3 lib/mihari/status.rb
mihari-4.5.2 lib/mihari/status.rb
mihari-4.5.1 lib/mihari/status.rb
mihari-4.5.0 lib/mihari/status.rb
mihari-4.4.1 lib/mihari/status.rb
mihari-4.4.0 lib/mihari/status.rb
mihari-4.3.0 lib/mihari/status.rb
mihari-4.2.0 lib/mihari/status.rb