Sha256: f15a121d9bc3005456045c08ba22c8f9a1fe80d57a03bef5e8c124410f73655c

Contents?: true

Size: 1.17 KB

Versions: 8

Compression:

Stored size: 1.17 KB

Contents

module Appsignal
  class JSExceptionTransaction
    attr_reader :uuid, :ext

    def initialize(data)
      @data = data
      @uuid = SecureRandom.uuid
      @ext = Appsignal::Extension.start_transaction(@uuid, Appsignal::Transaction::FRONTEND, 0)

      set_action
      set_metadata
      set_error
      set_sample_data
    end

    def set_action
      @ext.set_action(@data['action']) if @data['action']
    end

    def set_metadata
      @ext.set_metadata(
        'path', @data['path']
      ) if @data['path']
    end

    def set_error
      @ext.set_error(
        @data['name'],
        @data['message'] || '',
        Appsignal::Utils.data_generate(@data['backtrace'] || [])
      )
    end

    def set_sample_data
      {
        :params       => @data['params'],
        :session_data => @data['session_data'],
        :environment  => @data['environment'],
        :tags         => @data['tags']
      }.each do |key, data|
        next unless data.is_a?(Array) || data.is_a?(Hash)
        @ext.set_sample_data(
          key.to_s,
          Appsignal::Utils.data_generate(data)
        )
      end
    end

    def complete!
      @ext.finish(0)
      @ext.complete
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
appsignal-2.0.6 lib/appsignal/js_exception_transaction.rb
appsignal-2.0.5 lib/appsignal/js_exception_transaction.rb
appsignal-2.0.5.beta.1 lib/appsignal/js_exception_transaction.rb
appsignal-2.1.0.alpha.3 lib/appsignal/js_exception_transaction.rb
appsignal-2.1.0.alpha.2 lib/appsignal/js_exception_transaction.rb
appsignal-2.1.0.alpha.1 lib/appsignal/js_exception_transaction.rb
appsignal-2.0.4 lib/appsignal/js_exception_transaction.rb
appsignal-2.0.3 lib/appsignal/js_exception_transaction.rb