Sha256: fcfd485a11d3d5eaf5968ad3bb53d5f57a051cdb0883e3115e9d4031a8d35d2c

Contents?: true

Size: 788 Bytes

Versions: 5

Compression:

Stored size: 788 Bytes

Contents

# frozen_string_literal: true

module Mihari
  class Status
    def check
      statuses
    end

    def self.check
      new.check
    end

    private

    def statuses
      (Mihari.analyzers + Mihari.emitters).map do |klass|
        name = klass.to_s.split("::").last.to_s

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

    def build_status(klass)
      is_analyzer = klass.ancestors.include?(Mihari::Analyzers::Base)

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

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mihari-2.4.0 lib/mihari/status.rb
mihari-2.3.1 lib/mihari/status.rb
mihari-2.3.0 lib/mihari/status.rb
mihari-2.2.1 lib/mihari/status.rb
mihari-2.2.0 lib/mihari/status.rb