Sha256: e9fc74f3e2f21422031736f9896b07edae8bc082cc0244b183eca06a5e5c733a
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
# frozen_string_literal: true module Mihari module Emitters # # Base class for emitters # class Base < Actor # @return [Mihari::Rule] attr_reader :rule # # @param [Mihari::Rule] rule # @param [Hash, nil] options # def initialize(rule:, options: nil) super(options: options) @rule = rule end # # @return [Boolean] # def parallel? options[:parallel] || Mihari.config.parallel end # A target to emit the data # # @return [String] # def target raise NotImplementedError, "You must implement #{self.class}##{__method__}" end # # @param [Array<Mihari::Models::Artifact>] artifacts # def call(artifacts) raise NotImplementedError, "You must implement #{self.class}##{__method__}" end # # @return [Dry::Monads::Result::Success<Object>, Dry::Monads::Result::Failure] # def result(artifacts) result = Try[StandardError] do retry_on_error( times: retry_times, interval: retry_interval, exponential_backoff: retry_exponential_backoff ) { call(artifacts) } end.to_result if result.failure? Mihari.logger.warn("Emitter:#{self.class.key} for #{target.truncate(32)} failed - #{result.failure}") end result end class << self def inherited(child) super Mihari.emitters << child end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mihari-7.3.2 | lib/mihari/emitters/base.rb |
mihari-7.3.1 | lib/mihari/emitters/base.rb |