module TraceView::Inst::TyphoeusRequestOps
Public Class Methods
included(klass)
click to toggle source
# File lib/traceview/inst/typhoeus.rb, line 8 def self.included(klass) ::TraceView::Util.method_alias(klass, :run, ::Typhoeus::Request::Operations) end
Public Instance Methods
run_with_traceview()
click to toggle source
# File lib/traceview/inst/typhoeus.rb, line 12 def run_with_traceview return run_without_traceview unless TraceView.tracing? TraceView::API.log_entry(:typhoeus) # Prepare X-Trace header handling blacklisted = TraceView::API.blacklisted?(url) context = TraceView::Context.toString task_id = TraceView::XTrace.task_id(context) options[:headers]['X-Trace'] = context unless blacklisted response = run_without_traceview if response.code == 0 TraceView::API.log(:typhoeus, :error, { :ErrorClass => response.return_code, :ErrorMsg => response.return_message }) end kvs = {} kvs[:IsService] = 1 kvs[:HTTPStatus] = response.code kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:typhoeus][:collect_backtraces] uri = URI(response.effective_url) # Conditionally log query params if TraceView::Config[:typhoeus][:log_args] kvs[:RemoteURL] = uri.to_s else kvs[:RemoteURL] = uri.to_s.split('?').first end kvs[:HTTPMethod] = ::TraceView::Util.upcase(options[:method]) kvs[:Blacklisted] = true if blacklisted # Re-attach net::http edge unless it's blacklisted or if we don't have a # valid X-Trace header unless blacklisted xtrace = response.headers['X-Trace'] if xtrace && TraceView::XTrace.valid?(xtrace) && TraceView.tracing? # Assure that we received back a valid X-Trace with the same task_id if task_id == TraceView::XTrace.task_id(xtrace) TraceView::Context.fromString(xtrace) else TraceView.logger.debug "Mismatched returned X-Trace ID: #{xtrace}" end end end TraceView::API.log(:typhoeus, :info, kvs) response rescue => e TraceView::API.log_exception(:typhoeus, e) raise e ensure TraceView::API.log_exit(:typhoeus) end