Sha256: 9dfabec4cae8126f40dabf0f05ff06f5b0746cb08c03994860e4fc4024925fce

Contents?: true

Size: 1.21 KB

Versions: 9

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module Mihari
  module Structs
    class Config < Dry::Struct
      attribute :name, Types::String
      attribute :type, Types::String
      attribute :is_configured, Types::Bool
      attribute :values, Types.Array(Types::Hash).optional

      #
      # @param [Class<Mihari::Analyzers::Base>, Class<Mihari::Emitters::Base>] klass
      #
      # @return [Mihari::Structs::Config, nil] config
      #
      def self.from_class(klass)
        return nil if klass == Mihari::Analyzers::Rule

        name = klass.to_s.split("::").last.to_s

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

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

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

          new(name: name, values: values, is_configured: is_configured, type: type)
        rescue ArgumentError => _e
          nil
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mihari-5.2.1 lib/mihari/structs/config.rb
mihari-5.2.0 lib/mihari/structs/config.rb
mihari-5.1.4 lib/mihari/structs/config.rb
mihari-5.1.3 lib/mihari/structs/config.rb
mihari-5.1.2 lib/mihari/structs/config.rb
mihari-5.1.1 lib/mihari/structs/config.rb
mihari-5.1.0 lib/mihari/structs/config.rb
mihari-5.0.1 lib/mihari/structs/config.rb
mihari-5.0.0 lib/mihari/structs/config.rb