class ElasticAPM::Traceparent

def self.parse(header)

rubocop:disable Metrics/AbcSize
def self.parse(header)
  raise InvalidTraceparentHeader unless header.length == 55
  raise InvalidTraceparentHeader unless header[0..1] == VERSION
  new.tap do |t|
    t.version, t.trace_id, t.span_id, t.flags =
      header.split('-').tap do |values|
        values[-1] = Util.hex_to_bits(values[-1])
      end
    raise InvalidTraceparentHeader if HEX_REGEX =~ t.trace_id
    raise InvalidTraceparentHeader if HEX_REGEX =~ t.span_id
  end
end