Sha256: e887d1e25d1f6738d9a34533d89c18a16db7b66ab23f1ea5fc69e3f02d7087d8

Contents?: true

Size: 906 Bytes

Versions: 10

Compression:

Stored size: 906 Bytes

Contents

# frozen_string_literal: true

module Mihari
  module Enrichers
    #
    # Base class for enrichers
    #
    class Base < Actor
      prepend MemoWise

      def initialize(options: nil)
        super(options: options)
      end

      #
      # @param [String] value
      #
      def call(value)
        raise NotImplementedError, "You must implement #{self.class}##{__method__}"
      end

      #
      # @return [Dry::Monads::Result::Success<Object>, Dry::Monads::Result::Failure]
      #
      def result(value)
        Try[StandardError] do
          retry_on_error(
            times: retry_times,
            interval: retry_interval,
            exponential_backoff: retry_exponential_backoff
          ) { call value }
        end.to_result
      end

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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mihari-7.1.0 lib/mihari/enrichers/base.rb
mihari-7.0.5 lib/mihari/enrichers/base.rb
mihari-7.0.4 lib/mihari/enrichers/base.rb
mihari-7.0.3 lib/mihari/enrichers/base.rb
mihari-7.0.2 lib/mihari/enrichers/base.rb
mihari-7.0.1 lib/mihari/enrichers/base.rb
mihari-7.0.0 lib/mihari/enrichers/base.rb
mihari-6.3.0 lib/mihari/enrichers/base.rb
mihari-6.2.0 lib/mihari/enrichers/base.rb
mihari-6.1.0 lib/mihari/enrichers/base.rb