lib/faraday/zipkin.rb in faraday-zipkin-0.2.2 vs lib/faraday/zipkin.rb in faraday-zipkin-0.2.3
- old
+ new
@@ -1,49 +2 @@
-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, service_name=nil)
- @app = app
- @service_name = service_name
- end
-
- def call(env)
- # handle either a URI object (passed by Faraday v0.8.x in testing), or something string-izable
- url = env[:url].respond_to?(:host) ? env[:url] : URI.parse(env[:url].to_s)
- service_name = @service_name || url.host.split('.').first # default to url-derived service name
- endpoint = ::Trace::Endpoint.new(::Trace::Endpoint.host_to_i32(url.host), url.port, service_name)
-
- trace_id = ::Trace.id
- ::Trace.push(trace_id.next_id) do
- B3_HEADERS.each do |method, header|
- env[:request_headers][header] = ::Trace.id.send(method).to_s
- end
-
- # annotate with method (GET/POST/etc.) and uri path
- ::Trace.set_rpc_name(env[:method].to_s.upcase)
- ::Trace.record(::Trace::BinaryAnnotation.new("http.uri", url.path, "STRING", endpoint))
- ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_SEND, endpoint))
- result = @app.call(env).on_complete do |renv|
- # record HTTP status code on response
- ::Trace.record(::Trace::BinaryAnnotation.new("http.status", [renv[:status]].pack('n'), "I16", endpoint))
- end
- ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_RECV, endpoint))
- result
- end
- end
- end
- end
-end
+require 'faraday-zipkin'
\ No newline at end of file