addBaggageHeader function

void addBaggageHeader(
  1. SentryBaggageHeader baggage,
  2. Map<String, dynamic> headers
)

Implementation

void addBaggageHeader(
  SentryBaggageHeader baggage,
  Map<String, dynamic> headers,
) {
  final currentValue = headers[baggage.name] as String? ?? '';

  final currentBaggage = SentryBaggage.fromHeader(currentValue);
  final sentryBaggage = SentryBaggage.fromHeader(baggage.value);

  // overwrite sentry's keys https://develop.sentry.dev/sdk/performance/dynamic-sampling-context/#baggage
  final filteredBaggageHeader = Map.from(currentBaggage.keyValues);
  filteredBaggageHeader.removeWhere((key, value) => key.startsWith('sentry-'));

  final mergedBaggage = <String, String>{
    ...filteredBaggageHeader,
    ...sentryBaggage.keyValues,
  };

  final newBaggage = SentryBaggage(mergedBaggage);

  headers[baggage.name] = newBaggage.toHeaderString();
}