Sha256: 5fdc6c9d04bc15d5d0fbc475c91199ff64c306ea3f3c2a7093e130ef8811a537

Contents?: true

Size: 1.24 KB

Versions: 9

Compression:

Stored size: 1.24 KB

Contents

# 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

9 entries across 9 versions & 1 rubygems

Version Path
sqreen-1.18.6-java lib/sqreen/actions.rb
sqreen-1.18.6 lib/sqreen/actions.rb
sqreen-1.18.5-java lib/sqreen/actions.rb
sqreen-1.18.5 lib/sqreen/actions.rb
sqreen-1.18.4-java lib/sqreen/actions.rb
sqreen-1.18.4 lib/sqreen/actions.rb
sqreen-1.18.3-java lib/sqreen/actions.rb
sqreen-1.18.3 lib/sqreen/actions.rb
sqreen-1.18.3.beta2 lib/sqreen/actions.rb