Sha256: 917f49577fedf34412ba9d4c6f3eae835e9bde3cec70ef1c4c8a61eedf3d5399

Contents?: true

Size: 1.26 KB

Versions: 19

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module Datadog
  module AppSec
    class Processor
      # Actions store the actions information in memory
      # Also, takes care of merging when RC send new information
      module Actions
        class << self
          def actions
            @actions ||= []
          end

          def fecth_configuration(action)
            actions.find { |action_configuration| action_configuration['id'] == action }
          end

          def merge(actions_to_merge)
            return if actions_to_merge.empty?

            if actions.empty?
              @actions = actions_to_merge
            else
              merged_actions = []
              actions_dup = actions.dup

              actions_to_merge.each do |new_action|
                existing_action = actions_dup.find { |action| new_action['id'] == action['id'] }

                # the old action is discard and the new kept
                actions_dup.delete(existing_action) if existing_action
                merged_actions << new_action
              end

              @actions = merged_actions.concat(actions_dup)
            end
          end

          private

          # Used in tests
          def reset
            @actions = []
          end
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
datadog-2.2.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.23.3 lib/datadog/appsec/processor/actions.rb
ddtrace-1.23.2 lib/datadog/appsec/processor/actions.rb
datadog-2.1.0 lib/datadog/appsec/processor/actions.rb
datadog-2.0.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.23.1 lib/datadog/appsec/processor/actions.rb
datadog-2.0.0.beta2 lib/datadog/appsec/processor/actions.rb
ddtrace-1.22.0 lib/datadog/appsec/processor/actions.rb
datadog-2.0.0.beta1 lib/datadog/appsec/processor/actions.rb
ddtrace-1.21.1 lib/datadog/appsec/processor/actions.rb
ddtrace-1.21.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.20.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.19.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.18.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.17.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.16.2 lib/datadog/appsec/processor/actions.rb
ddtrace-1.16.1 lib/datadog/appsec/processor/actions.rb
ddtrace-1.16.0 lib/datadog/appsec/processor/actions.rb
ddtrace-1.15.0 lib/datadog/appsec/processor/actions.rb