Sha256: 3682a20349c70709ade59904ac78f6568f599b4c4217a2eb06eba9252b140288

Contents?: true

Size: 1.26 KB

Versions: 10

Compression:

Stored size: 1.26 KB

Contents

# typed: ignore

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

require 'sqreen/actions/unknown_action_type'
require 'sqreen/actions/base'

require 'sqreen/actions/block_user'
require 'sqreen/actions/redirect_user'
require 'sqreen/actions/block_ip'
require 'sqreen/actions/redirect_ip'
require 'sqreen/actions/repository'
require 'sqreen/actions/unknown_action_type'

module Sqreen
  # Implements actions (behavior taken in response to agent signals)
  module Actions
    # @return [Sqreen::Actions::Base]
    def self.deserialize_action(hash)
      action_type = hash['action']
      raise 'no action type available' unless action_type

      subclass = Sqreen::Actions::Base.get_type_class(action_type)
      raise Sqreen::Actions::UnknownActionType, action_type unless subclass

      id = hash['action_id']
      raise 'no action id available' unless id

      duration = hash['duration']
      if !duration.nil? && duration <= 0
        Sqreen.log.debug "Action #{id} is already expired"
        return nil
      end

      opts = {
        :duration => duration,
        :send_response => hash['send_response'],
      }

      subclass.new(id, opts, hash['parameters'] || {})
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
sqreen-1.25.1 lib/sqreen/actions.rb
sqreen-1.25.0 lib/sqreen/actions.rb
sqreen-1.24.3 lib/sqreen/actions.rb
sqreen-1.24.2 lib/sqreen/actions.rb
sqreen-1.24.1 lib/sqreen/actions.rb
sqreen-1.24.0 lib/sqreen/actions.rb
sqreen-1.23.2 lib/sqreen/actions.rb
sqreen-1.23.1 lib/sqreen/actions.rb
sqreen-1.23.0 lib/sqreen/actions.rb
sqreen-1.22.1 lib/sqreen/actions.rb