module Honeycomb::HoneycombPropagation::MarshalTraceContext

Serialize trace headers

Public Class Methods

parse_faraday_env(_env, propagation_context) click to toggle source
# File lib/honeycomb/propagation/honeycomb.rb, line 75
def self.parse_faraday_env(_env, propagation_context)
  {
    "X-Honeycomb-Trace" => to_trace_header(propagation_context),
  }
end
to_trace_header(propagation_context) click to toggle source
# File lib/honeycomb/propagation/honeycomb.rb, line 81
def self.to_trace_header(propagation_context)
  fields = propagation_context.trace_fields
  context = Base64.urlsafe_encode64(JSON.generate(fields)).strip
  dataset = propagation_context.dataset
  encoded_dataset = URI.encode_www_form_component(dataset)
  data_to_propogate = [
    "dataset=#{encoded_dataset}",
    "trace_id=#{propagation_context.trace_id}",
    "parent_id=#{propagation_context.parent_id}",
    "context=#{context}",
  ]
  "1;#{data_to_propogate.join(',')}"
end

Public Instance Methods

to_trace_header() click to toggle source
# File lib/honeycomb/propagation/honeycomb.rb, line 63
def to_trace_header
  context = Base64.urlsafe_encode64(JSON.generate(trace.fields)).strip
  encoded_dataset = URI.encode_www_form_component(builder.dataset)
  data_to_propogate = [
    "dataset=#{encoded_dataset}",
    "trace_id=#{trace.id}",
    "parent_id=#{id}",
    "context=#{context}",
  ]
  "1;#{data_to_propogate.join(',')}"
end