Sha256: 9cdfa16f281aaa29b075a5d5d9b562204d7bb569171bbc20eae048c29c399150

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

module Hawkei
  ##
  # == Hawkei \Message
  #
  # Return the base message for an event
  class Message
    class << self

      def base
        Util.deep_compact(
          message_id: SecureRandom.uuid,
          timestamp: Time.now.utc.iso8601(3),
          session_tracker_id: session_tracker_id,
          auto_id: Hawkei::Store.get(:auto_id),
        )
      end

      def extended
        Util.deep_compact(
          library: library,
          server: server,
          request: Hawkei::Store.get(:request),
          worker: Hawkei::Store.get(:worker),
          environment: Hawkei::Store.get(:environment) || Hawkei.configurations.environment_name,
          metadata: metadata
        ).merge(base)
      end

      private

      def session_tracker_id
        return Hawkei::Store.get(:session_tracker_id) if Hawkei::Store.exist?(:session_tracker_id)

        Hawkei::Store.set(:session_tracker_id, SecureRandom.uuid)
      end

      def library
        {
          name: Hawkei::LIBRARY_NAME,
          language: 'ruby',
          version: Hawkei::VERSION,
        }
      end

      def server
        {
          host: Socket.gethostname,
          pid: Process.pid,
          software: Hawkei::Store.get(:server_software) || program_name,
        }
      end

      def program_name
        name = $PROGRAM_NAME

        name.split('/').last
      rescue StandardError => _e
        name
      end

      def metadata
        return nil if Hawkei.configurations.metadata.nil?

        Hawkei.configurations.metadata.each_with_object({}) do |(key, value), hash|
          if value.is_a?(Proc)
            begin
              hash[key] = value.call
            rescue StandardError => _e
              nil
            end
            next
          end

          hash[key] = value
        end
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hawkei-1.1.0 lib/hawkei/message.rb