Sha256: 1a807e7698261ad0fe6062cec84690194849ec3ea1a3055303c5da80547b9101

Contents?: true

Size: 1.82 KB

Versions: 4

Compression:

Stored size: 1.82 KB

Contents

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

require 'json'
require 'sqreen/event'

module Sqreen
  # When a request is deeemed worthy of being sent to the backend
  class RequestRecord < Sqreen::Event
    def observed
      (payload && payload[:observed]) || {}
    end

    def to_hash
      res = { :version => '20171208' }
      if payload[:observed]
        res[:observed] = payload[:observed]
        rulespack = nil
        observed.fetch(:attacks, []).each do |att|
          rulespack = att.delete(:rulespack_id) || rulespack
        end
        observed.fetch(:sqreen_exceptions, []).each do |exc|
          excp = exc.delete(:exception)
          if excp
            exc[:message] = excp.message
            exc[:klass] = excp.class.name
          end
          rulespack = exc.delete(:rulespack_id) || rulespack
        end
        res[:rulespack_id] = rulespack unless rulespack.nil?
        if observed[:observations]
          res[:observed][:observations] = observed[:observations].map do |cat, key, value, time|
            { :category => cat, :key => key, :value => value, :time => time }
          end
        end
        if observed[:sdk]
          payload[:observed][:sdk] = observed[:sdk].map do |meth, time, *args|
            { :name => meth, :time => time, :args => args }
          end
        end
      end
      res[:local] = payload['local'] if payload['local']
      if payload['request']
        res[:request] = payload['request']
        res[:client_ip] = res[:request].delete(:client_ip) if res[:request][:client_ip]
      else
        res[:request] = {}
      end
      res[:request][:parameters] = payload['params'] if payload['params']
      res[:request][:headers] = payload['headers'] if payload['headers']
      res
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sqreen-1.9.1-java lib/sqreen/events/request_record.rb
sqreen-1.9.1 lib/sqreen/events/request_record.rb
sqreen-1.9.0-java lib/sqreen/events/request_record.rb
sqreen-1.9.0 lib/sqreen/events/request_record.rb