Sha256: aa07cd7c32ae848d214854f619e9f05d1f9cccf896bb6d39822af485f7a34937

Contents?: true

Size: 1.57 KB

Versions: 23

Compression:

Stored size: 1.57 KB

Contents

# Copyright (c) 2016 SolarWinds, LLC.
# All rights reserved.

module AppOpticsAPM
  module Inst
    module RestClientRequest
      def self.included(klass)
        AppOpticsAPM::Util.method_alias(klass, :execute, ::RestClient::Request)
      end

      ##
      # execute_with_appoptics
      #
      # The wrapper method for RestClient::Request.execute
      #
      def execute_with_appoptics(&block)
        blacklisted = AppOpticsAPM::API.blacklisted?(url)

        unless AppOpticsAPM.tracing?
          xtrace = AppOpticsAPM::Context.toString
          @processed_headers['X-Trace'] = AppOpticsAPM::Context.toString if AppOpticsAPM::XTrace.valid?(xtrace) && !blacklisted
          return execute_without_appoptics(&block)
        end

        begin
          kvs = {}
          kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:rest_client][:collect_backtraces]
          AppOpticsAPM::API.log_entry('rest-client', kvs)

          @processed_headers['X-Trace'] = AppOpticsAPM::Context.toString unless blacklisted

          # The core rest-client call
          execute_without_appoptics(&block)
        rescue => e
          AppOpticsAPM::API.log_exception('rest-client', e)
          raise e
        ensure
          AppOpticsAPM::API.log_exit('rest-client')
        end
      end
    end
  end
end

if defined?(RestClient) && AppOpticsAPM::Config[:rest_client][:enabled]
  AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting rest-client' if AppOpticsAPM::Config[:verbose]
  AppOpticsAPM::Util.send_include(RestClient::Request, AppOpticsAPM::Inst::RestClientRequest)
end

Version data entries

23 entries across 23 versions & 3 rubygems

Version Path
appoptics_apm-zearn-4.13.1 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.13.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.12.2 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.12.1 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.12.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.11.2 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.11.1 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.11.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.10.1 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.10.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.9.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.8.4 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.8.3 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.8.2 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.8.1 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.8.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.7.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.6.0 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm_mnfst-4.5.2 lib/appoptics_apm/inst/rest-client.rb
appoptics_apm-4.5.2 lib/appoptics_apm/inst/rest-client.rb