Sha256: 286ca4c769a42b7f173f0f2ebfcfd0dd0113338a07cf32e52526b8dcbb837616

Contents?: true

Size: 850 Bytes

Versions: 5

Compression:

Stored size: 850 Bytes

Contents

# frozen_string_literal: true

module ElasticAPM
  class Context
    # @api private
    class User
      def initialize(id: nil, email: nil, username: nil)
        @id = id
        @email = email
        @username = username
      end

      def self.infer(config, record)
        return unless record

        new(
          id: safe_get(record, config.current_user_id_method)&.to_s,
          email: safe_get(record, config.current_user_email_method),
          username: safe_get(record, config.current_user_username_method)
        )
      end

      attr_accessor :id, :email, :username

      def empty?
        !id && !email && !username
      end

      class << self
        private

        def safe_get(record, method_name)
          record.respond_to?(method_name) ? record.send(method_name) : nil
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
elastic-apm-2.5.0 lib/elastic_apm/context/user.rb
elastic-apm-2.4.0 lib/elastic_apm/context/user.rb
elastic-apm-2.3.1 lib/elastic_apm/context/user.rb
elastic-apm-2.3.0 lib/elastic_apm/context/user.rb
elastic-apm-2.2.0 lib/elastic_apm/context/user.rb