Sha256: 8068a6f6db141f50e4881e4bfc832fc4aa927efac613130664e6138c0605cd27

Contents?: true

Size: 1.8 KB

Versions: 9

Compression:

Stored size: 1.8 KB

Contents

# typed: false

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

# TODO: sqreen/events

require 'json'
require 'sqreen/log'
require 'sqreen/event'
require 'sqreen/encoding_sanitizer'
require 'sqreen/sensitive_data_redactor'

module Sqreen
  # When a request is deeemed worthy of being sent to the backend
  class RequestRecord < Sqreen::Event
    attr_reader :redactor

    # @param [Hash] payload
    # @param [Sqreen::SensitiveDataRedactor] redactor
    def initialize(payload, redactor = nil)
      @redactor = redactor
      super(payload)
    end

    def observed
      (payload && payload[:observed]) || {}
    end

    def last_identify_args
      return nil unless observed[:sdk]

      observed[:sdk].reverse_each do |meth, _time, *args|
        next unless meth == :identify
        return args
      end
      nil
    end

    def processed_sdk_calls
      return [] unless observed[:sdk]
      auth_keys = last_identify_id

      observed[:sdk].map do |meth, time, *args|
        {
          :name => meth,
          :time => time,
          :args => inject_identifiers(args, meth, auth_keys),
        }
      end
    end

    private

    def inject_identifiers(args, meth, auth_keys)
      return args unless meth == :track && auth_keys

      track_opts = args[1] || {}
      if track_opts[:user_identifiers].nil?
        args[1] = track_opts.dup
        args[1][:user_identifiers] = auth_keys
      elsif track_opts[:user_identifiers] != auth_keys
        Sqreen.log.warn 'Sqreen.identify and Sqreen.track have been called ' \
                          'with different user_identifiers values'
      end

      args
    end

    def last_identify_id
      args = last_identify_args
      args.first if args.respond_to? :first
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sqreen-1.20.4.beta1 lib/sqreen/events/request_record.rb
sqreen-1.20.3 lib/sqreen/events/request_record.rb
sqreen-1.20.2 lib/sqreen/events/request_record.rb
sqreen-1.21.0.beta2 lib/sqreen/events/request_record.rb
sqreen-1.21.0.beta1 lib/sqreen/events/request_record.rb
sqreen-1.20.1-java lib/sqreen/events/request_record.rb
sqreen-1.20.1 lib/sqreen/events/request_record.rb
sqreen-1.20.0-java lib/sqreen/events/request_record.rb
sqreen-1.20.0 lib/sqreen/events/request_record.rb