Class: ZipkinTracer::FaradayHandler

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/zipkin-tracer/faraday/zipkin-tracer.rb

Overview

Faraday middleware. It will add CR/CS annotations to outgoing connections done by Faraday

Instance Method Summary collapse

Constructor Details

#initialize(app, service_name = nil) ⇒ FaradayHandler

Returns a new instance of FaradayHandler.



9
10
11
12
# File 'lib/zipkin-tracer/faraday/zipkin-tracer.rb', line 9

def initialize(app, service_name = nil)
  @app = app
  @service_name = service_name
end

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/zipkin-tracer/faraday/zipkin-tracer.rb', line 14

def call(env)
  trace_id = Trace.id.next_id
  Trace.with_trace_id(trace_id) do
    b3_headers.each do |method, header|
      env[:request_headers][header] = trace_id.send(method).to_s
    end
    if trace_id.sampled?
      trace!(env, trace_id)
    else
      @app.call(env)
    end
  end
end