Sha256: 7f3d049e3025e5ca4eba17a8ec7f96f3edb99f035dee0b7a28e631bcc45bd30f

Contents?: true

Size: 909 Bytes

Versions: 11

Compression:

Stored size: 909 Bytes

Contents

# frozen_string_literal: true

module Mihari
  class Status
    def check
      statuses.map do |key, value|
        [key, convert(**value)]
      end.to_h
    end

    def self.check
      new.check
    end

    private

    def convert(status:, message:)
      {
        status: status ? "OK" : "Bad",
        message: message
      }
    end

    def statuses
      (Mihari.analyzers + Mihari.emitters).map do |klass|
        name = klass.to_s.downcase.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
      status = instance.configured?
      message = instance.configuration_status

      message ? { status: status, message: message } : nil
    rescue ArgumentError => _e
      nil
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mihari-1.4.1 lib/mihari/status.rb
mihari-1.4.0 lib/mihari/status.rb
mihari-1.3.2 lib/mihari/status.rb
mihari-1.3.1 lib/mihari/status.rb
mihari-1.3.0 lib/mihari/status.rb
mihari-1.2.1 lib/mihari/status.rb
mihari-1.2.0 lib/mihari/status.rb
mihari-1.1.1 lib/mihari/status.rb
mihari-1.1.0 lib/mihari/status.rb
mihari-1.0.1 lib/mihari/status.rb
mihari-1.0.0 lib/mihari/status.rb