Merge tracking headers to the given headers. Args: headers: headers to merge tracking headers into. Returns: A dictionary of HTTP headers with tracking headers merged.
(headers: dict[str, str] | None)
| 32 | |
| 33 | |
| 34 | def merge_tracking_headers(headers: dict[str, str] | None) -> dict[str, str]: |
| 35 | """Merge tracking headers to the given headers. |
| 36 | |
| 37 | Args: |
| 38 | headers: headers to merge tracking headers into. |
| 39 | |
| 40 | Returns: |
| 41 | A dictionary of HTTP headers with tracking headers merged. |
| 42 | """ |
| 43 | new_headers = (headers or {}).copy() |
| 44 | for key, tracking_header_value in get_tracking_headers().items(): |
| 45 | custom_value = new_headers.get(key, None) |
| 46 | if not custom_value: |
| 47 | new_headers[key] = tracking_header_value |
| 48 | continue |
| 49 | |
| 50 | # Merge tracking headers with existing headers and avoid duplicates. |
| 51 | value_parts = tracking_header_value.split(" ") |
| 52 | for custom_value_part in custom_value.split(" "): |
| 53 | if custom_value_part not in value_parts: |
| 54 | value_parts.append(custom_value_part) |
| 55 | new_headers[key] = " ".join(value_parts) |
| 56 | return new_headers |