import re
from collections import defaultdict
def group_response_headers(headers):
"""
Groups response headers for isolated environments and performs basic sanity checks.
Args:
headers (dict): A dictionary of response headers.
Returns:
dict: A dictionary where keys are environment names and values are lists of headers
specific to that environment. Returns an empty dictionary if input is invalid.
"""
if not isinstance(headers, dict):
return {}
environments = defaultdict(list)
# Define environment-specific header patterns. Can be extended.
environment_patterns = {
"dev": r"X-Dev-.*", #headers starting with X-Dev-
"staging": r"X-Staging-.*", # headers starting with X-Staging-
"prod": r"X-Prod-.*", #headers starting with X-Prod-
}
for key, value in headers.items():
if isinstance(value, str): #process only string header values
for env, pattern in environment_patterns.items():
if re.match(pattern, key):
environments[env].append(key)
break # Only assign to one environment
# Sanity check: Ensure each environment has at least one header.
filtered_environments = {k: v for k, v in environments.items() if v}
return filtered_environments
if __name__ == '__main__':
#Example Usage
headers1 = {
"Content-Type": "application/json",
"X-Dev-Debug": "enabled",
"X-Staging-Feature": "new",
"Server": "nginx",
}
grouped_headers1 = group_response_headers(headers1)
print(grouped_headers1)
headers2 = {
"Content-Type": "application/json",
"X-Prod-Security": "high"
}
grouped_headers2 = group_response_headers(headers2)
print(grouped_headers2)
headers3 = {}
grouped_headers3 = group_response_headers(headers3)
print(grouped_headers3)
headers4 = "not a dictionary"
grouped_headers4 = group_response_headers(headers4)
print(grouped_headers4)
Add your comment