Class: Sqreen::Actions::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/sqreen/actions/base.rb

Overview

Base class for actions subclasses must also implement some methods in their singleton classes (actions_matching, index and clear)

Direct Known Subclasses

BlockIp, BlockUser, RedirectIp, RedirectUser

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, opts) ⇒ Base

Returns a new instance of Base.



20
21
22
23
24
25
26
27
28
29
# File 'lib/sqreen/actions/base.rb', line 20

def initialize(id, opts)
  @id = id
  duration = opts[:duration]
  @expiry = Time.new + duration unless duration.nil?
  @send_response = if opts[:send_response].nil?
                     true
                   else
                     opts[:send_response] ? true : false
                   end
end

Class Attribute Details

.type_nameObject

Returns the value of attribute type_name.



67
68
69
# File 'lib/sqreen/actions/base.rb', line 67

def type_name
  @type_name
end

Instance Attribute Details

#expiryObject (readonly)

Returns the value of attribute expiry.



18
19
20
# File 'lib/sqreen/actions/base.rb', line 18

def expiry
  @expiry
end

#idObject (readonly)

Returns the value of attribute id.



18
19
20
# File 'lib/sqreen/actions/base.rb', line 18

def id
  @id
end

#send_responseObject (readonly)

Returns the value of attribute send_response.



18
19
20
# File 'lib/sqreen/actions/base.rb', line 18

def send_response
  @send_response
end

Class Method Details

.get_type_class(name) ⇒ Object



69
70
71
# File 'lib/sqreen/actions/base.rb', line 69

def get_type_class(name)
  subclasses[name]
end

.inherited(subclass) ⇒ Object



85
86
87
88
89
# File 'lib/sqreen/actions/base.rb', line 85

def inherited(subclass)
  class << subclass
    public :new
  end
end

.known_subclassesObject



73
74
75
# File 'lib/sqreen/actions/base.rb', line 73

def known_subclasses
  subclasses.values
end

.known_typesObject



77
78
79
# File 'lib/sqreen/actions/base.rb', line 77

def known_types
  subclasses.keys
end

.new_indexObject



81
82
83
# File 'lib/sqreen/actions/base.rb', line 81

def new_index
  raise 'implement in singletons of subclasses'
end

Instance Method Details

#run(*args) ⇒ Object

See Sqreen::CB for return values



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/sqreen/actions/base.rb', line 32

def run(*args)
  return if expiry && Time.new > expiry
  ret = do_run(*args)
  unless ret.nil? || !@send_response
    Sqreen.internal_track(event_name,
                          'properties' => {
                            'output' => event_properties(*args),
                            'action_id' => id,
                          })
  end
  ret
end