1. import re
  2. def deserialize_headers(header_string):
  3. """
  4. Deserializes a string of response headers into a dictionary.
  5. Handles multiple headers separated by newlines or semicolons.
  6. """
  7. headers = {}
  8. if not header_string:
  9. return headers
  10. header_list = re.split(r'\n|;', header_string) # Split by newline or semicolon
  11. for header in header_list:
  12. header = header.strip()
  13. if not header:
  14. continue
  15. if ' ' in header: # Handle headers with key-value separated by space
  16. try:
  17. key, value = header.split(' ', 1) #split only once
  18. headers[key] = value
  19. except ValueError:
  20. headers[header] = "" #handle cases where split fails
  21. else:
  22. headers[header] = "" # handle cases where there is only a key
  23. return headers
  24. if __name__ == '__main__':
  25. # Example Usage:
  26. header_string = """
  27. Content-Type: application/json
  28. Authorization: Bearer <token>
  29. X-Custom-Header: some_value; another_value
  30. """
  31. deserialized_headers = deserialize_headers(header_string)
  32. print(deserialized_headers)
  33. header_string2 = "Content-Type: text/plain\nUser-Agent: MyAgent"
  34. deserialized_headers2 = deserialize_headers(header_string2)
  35. print(deserialized_headers2)
  36. header_string3 = "Header1 Header2"
  37. deserialized_headers3 = deserialize_headers(header_string3)
  38. print(deserialized_headers3)

Add your comment