Sha256: 6209143eb2c2c4c06750faa92a5495645e45778f1244c9784f03b9ee80fa192a

Contents?: true

Size: 1010 Bytes

Versions: 4

Compression:

Stored size: 1010 Bytes

Contents

# frozen_string_literal: true

module Mihari
  module Emitters
    class Base
      include Mixins::Configurable
      include Mixins::Retriable

      # @return [Array<Mihari::Artifact>]
      attr_reader :artifacts

      # @return [Mihari::Structs::Rule]
      attr_reader :rule

      #
      # @param [Array<Mihari::Artifact>] artifacts
      # @param [Mihari::Structs::Rule] rule
      # @param [Hash] **_options
      #
      def initialize(artifacts:, rule:, **_options)
        @artifacts = artifacts
        @rule = rule
      end

      class << self
        def inherited(child)
          super
          Mihari.emitters << child
        end
      end

      # @return [Boolean]
      def valid?
        raise NotImplementedError, "You must implement #{self.class}##{__method__}"
      end

      def run(**params)
        retry_on_error { emit(**params) }
      end

      def emit(*)
        raise NotImplementedError, "You must implement #{self.class}##{__method__}"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-5.3.1 lib/mihari/emitters/base.rb
mihari-5.3.0 lib/mihari/emitters/base.rb
mihari-5.2.4 lib/mihari/emitters/base.rb
mihari-5.2.3 lib/mihari/emitters/base.rb