Sha256: ec5dc2ae1f96d9d59f882ec70ec5fd5646d3ef387c0539b1e201886c097f99dc

Contents?: true

Size: 1.69 KB

Versions: 16

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

module Mihari
  module Structs
    class Config < Dry::Struct
      # @!attribute [r] name
      #   @return [String]
      attribute :name, Types::String

      # @!attribute [r] type
      #   @return [String]
      attribute :type, Types::String

      # @!attribute [r] is_configured
      #   @return [Boolean]
      attribute :configured, Types::Bool

      # @!attribute [r] values
      #   @return [Array<Hash>, nil]
      attribute :items, Types.Array(Types::Hash).optional

      class << self
        #
        # Get a dummy instance
        #
        # @param [Class<Mihari::Analyzers::Base>, Class<Mihari::Emitters::Base>, Class<Mihari::Enrichers::Base>] klass
        #
        # @return [Mihari::Analyzers::Base, Mihari::Emitter::Base, Mihari::Enricher::Base] dummy
        #
        def get_dummy(klass)
          case klass.type
          when "analyzer"
            klass.new("dummy")
          when "emitter"
            klass.new(rule: nil)
          else
            klass.new
          end
        end

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

          return nil if klass.type.nil?

          begin
            instance = get_dummy(klass)
            new(
              name: klass.key,
              items: klass.configuration_items,
              configured: instance.configured?,
              type: klass.type
            )
          rescue ArgumentError
            nil
          end
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mihari-8.1.0 lib/mihari/structs/config.rb
mihari-8.0.2 lib/mihari/structs/config.rb
mihari-8.0.1 lib/mihari/structs/config.rb
mihari-8.0.0 lib/mihari/structs/config.rb
mihari-7.6.4 lib/mihari/structs/config.rb
mihari-7.6.3 lib/mihari/structs/config.rb
mihari-7.6.2 lib/mihari/structs/config.rb
mihari-7.6.1 lib/mihari/structs/config.rb
mihari-7.6.0 lib/mihari/structs/config.rb
mihari-7.5.0 lib/mihari/structs/config.rb
mihari-7.4.0 lib/mihari/structs/config.rb
mihari-7.3.2 lib/mihari/structs/config.rb
mihari-7.3.1 lib/mihari/structs/config.rb
mihari-7.3.0 lib/mihari/structs/config.rb
mihari-7.2.0 lib/mihari/structs/config.rb
mihari-7.1.3 lib/mihari/structs/config.rb