parseTraceparent function

({bool sampled, String spanId, String traceId})? parseTraceparent(
  1. String? value
)

Implementation

({String traceId, String spanId, bool sampled})? parseTraceparent(String? value) {
  if (value == null) return null;
  final parts = value.split('-');
  if (parts.length != 4 || parts[1].length != 32 || parts[2].length != 16) {
    return null;
  }
  final hex = RegExp(r'^[0-9a-f]+$');
  if (!hex.hasMatch(parts[1]) || !hex.hasMatch(parts[2])) return null;
  if (parts[3].length != 2 || !hex.hasMatch(parts[3])) return null;
  return (traceId: parts[1], spanId: parts[2],
      sampled: (int.parse(parts[3], radix: 16) & 1) == 1);
}