Sha256: c4d6778a6c10880a3338e0b22072c74178ad59434f69523b1b596a8dcc852d0f

Contents?: true

Size: 981 Bytes

Versions: 1

Compression:

Stored size: 981 Bytes

Contents

require 'faraday'
require 'finagle-thrift'
require 'finagle-thrift/trace'
require 'uri'

require 'faraday/zipkin/version'

module Faraday
  module Zipkin
    class TraceHeaders < ::Faraday::Middleware
      B3_HEADERS = {
        :trace_id => "X-B3-TraceId",
        :parent_id => "X-B3-ParentSpanId",
        :span_id => "X-B3-SpanId",
        :sampled => "X-B3-Sampled"
      }.freeze

      def initialize(app)
        @app = app
      end

      def call(env)
        trace_id = ::Trace.id
        host = URI.parse(env[:url]).host
        ::Trace.push(trace_id.next_id) do
          ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_SEND, host))
          B3_HEADERS.each do |method, header|
            env[:request_headers][header] = ::Trace.id.send(method).to_s
          end
          result = @app.call(env)
          ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_RECV, host))
          result
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
faraday-zipkin-0.1.0 lib/faraday/zipkin.rb