buildCaptureContext static method

Map<String, dynamic> buildCaptureContext({
  1. required String url,
  2. required List<CxNetworkCaptureRule> rules,
  3. required Map<String, String> reqHeaders,
  4. Map<String, String>? resHeaders,
  5. String? requestPayload,
  6. String? responsePayload,
})

Resolves the first matching CxNetworkCaptureRule for url and returns a map of the capture-sensitive fields (request/response headers and payloads) that should be included in a network telemetry span.

reqHeaders — all request headers (already flattened to String values). resHeaders — all response headers (already flattened to String values); pass null when unavailable. requestPayload — serialised request body; pass null when unavailable. responsePayload — serialised response body; pass null when unavailable.

Returns an empty map when no rule matches or when the matching rule does not opt in to capturing headers/payloads.

Implementation

static Map<String, dynamic> buildCaptureContext({
  required String url,
  required List<CxNetworkCaptureRule> rules,
  required Map<String, String> reqHeaders,
  Map<String, String>? resHeaders,
  String? requestPayload,
  String? responsePayload,
}) {
  final captureRule = resolveNetworkCaptureRule(url, rules);
  final result = <String, dynamic>{};

  if (captureRule?.reqHeaders != null) {
    final filtered = filterHeaders(reqHeaders, captureRule!.reqHeaders!);
    if (filtered.isNotEmpty) result['request_headers'] = filtered;
  }

  if (captureRule?.resHeaders != null && resHeaders != null) {
    final filtered = filterHeaders(resHeaders, captureRule!.resHeaders!);
    if (filtered.isNotEmpty) result['response_headers'] = filtered;
  }

  if ((captureRule?.collectReqPayload ?? false) && requestPayload != null) {
    final limited = applyPayloadLimit(requestPayload);
    if (limited != null) result['request_payload'] = limited;
  }

  if ((captureRule?.collectResPayload ?? false) && responsePayload != null) {
    final limited = applyPayloadLimit(responsePayload);
    if (limited != null) result['response_payload'] = limited;
  }

  return result;
}