Module: Honeycomb::HoneycombPropagation::MarshalTraceContext

Included in:
PropagationSerializer
Defined in:
lib/honeycomb/propagation/honeycomb.rb

Overview

Serialize trace headers

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse_faraday_env(_env, propagation_context) ⇒ Object



75
76
77
78
79
# 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) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
# 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

Instance Method Details

#to_trace_headerObject



63
64
65
66
67
68
69
70
71
72
73
# 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