Sha256: 48a9b7524f0def3fca20ba4728cf345665c94ee0d30df353fe0958bf4fcb22e9

Contents?: true

Size: 1.27 KB

Versions: 10

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).map do |klass|
        name = klass.to_s.split("::").last.to_s

        [name, build_status(klass)]
      end.to_h.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

10 entries across 10 versions & 1 rubygems

Version Path
mihari-3.11.0 lib/mihari/status.rb
mihari-3.10.1 lib/mihari/status.rb
mihari-3.10.0 lib/mihari/status.rb
mihari-3.9.2 lib/mihari/status.rb
mihari-3.9.1 lib/mihari/status.rb
mihari-3.9.0 lib/mihari/status.rb
mihari-3.8.1 lib/mihari/status.rb
mihari-3.8.0 lib/mihari/status.rb
mihari-3.7.2 lib/mihari/status.rb
mihari-3.7.1 lib/mihari/status.rb