Class: Aikido::Zen::Events::AttackWave

Inherits:
Aikido::Zen::Event show all
Defined in:
lib/aikido/zen/event.rb

Instance Attribute Summary collapse

Attributes inherited from Aikido::Zen::Event

#system_info, #time, #type

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request:, attack:, **opts) ⇒ Aikido::Zen::Events::AttackWave

Returns an attack wave event.

Parameters:



102
103
104
105
106
# File 'lib/aikido/zen/event.rb', line 102

def initialize(request:, attack:, **opts)
  super(type: "detected_attack_wave", **opts)
  @request = request
  @attack = attack
end

Instance Attribute Details

#attackAikido::Zen::AttackWave::Attack (readonly)



95
96
97
# File 'lib/aikido/zen/event.rb', line 95

def attack
  @attack
end

#requestAikido::Zen::AttackWave::Request (readonly)



92
93
94
# File 'lib/aikido/zen/event.rb', line 92

def request
  @request
end

Class Method Details

.from_context(context) ⇒ Aikido::Zen::Events::AttackWave

Returns an attack wave event.

Parameters:

Returns:



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/aikido/zen/event.rb', line 76

def self.from_context(context)
  request = Aikido::Zen::AttackWave::Request.new(
    ip_address: context.request.client_ip,
    user_agent: context.request.user_agent,
    source: context.request.framework
  )

  attack = Aikido::Zen::AttackWave::Attack.new(
    metadata: {}, # not used yet
    user: context.request.actor
  )

  new(request: request, attack: attack)
end

Instance Method Details

#as_jsonObject



108
109
110
111
112
113
# File 'lib/aikido/zen/event.rb', line 108

def as_json
  super.update(
    request: @request.as_json,
    attack: @attack.as_json
  )
end