1. import json
  2. import pickle
  3. import datetime
  4. class Cookie:
  5. def __init__(self, name, value, expiry=None, domain=None, path=None, secure=False, httponly=False):
  6. self.name = name
  7. self.value = value
  8. self.expiry = expiry # datetime object
  9. self.domain = domain
  10. self.path = path
  11. self.secure = secure
  12. self.httponly = httponly
  13. def __repr__(self):
  14. return f"Cookie(name='{self.name}', value='{self.value}', expiry={self.expiry}, domain={self.domain}, path={self.path}, secure={self.secure}, httponly={self.httponly})"
  15. def serialize_cookies_json(cookies):
  16. """Serializes a list of Cookie objects to a JSON string."""
  17. cookie_data = []
  18. for cookie in cookies:
  19. cookie_data.append({
  20. "name": cookie.name,
  21. "value": cookie.value,
  22. "expiry": cookie.expiry.isoformat() if cookie.expiry else None, # Convert datetime to ISO format
  23. "domain": cookie.domain,
  24. "path": cookie.path,
  25. "secure": cookie.secure,
  26. "httponly": cookie.httponly
  27. })
  28. return json.dumps(cookie_data, indent=4)
  29. def deserialize_cookies_json(json_string):
  30. """Deserializes a JSON string of cookies back into a list of Cookie objects."""
  31. cookie_data = json.loads(json_string)
  32. cookies = []
  33. for data in cookie_data:
  34. expiry_str = data.get("expiry")
  35. expiry = datetime.datetime.fromisoformat(expiry_str) if expiry_str else None
  36. cookies.append(Cookie(
  37. name=data["name"],
  38. value=data["value"],
  39. expiry=expiry,
  40. domain=data.get("domain"),
  41. path=data.get("path"),
  42. secure=data["secure"],
  43. httponly=data["httponly"]
  44. ))
  45. return cookies
  46. def serialize_cookies_pickle(cookies, filename):
  47. """Serializes a list of Cookie objects to a pickle file."""
  48. with open(filename, 'wb') as f:
  49. pickle.dump(cookies, f)
  50. def deserialize_cookies_pickle(filename):
  51. """Deserializes a list of Cookie objects from a pickle file."""
  52. with open(filename, 'rb') as f:
  53. return pickle.load(f)
  54. if __name__ == '__main__':
  55. # Example Usage
  56. cookies = [
  57. Cookie("sessionid", "1234567890", datetime.datetime(2024, 12, 31, 23, 59, 59)),
  58. Cookie("user_id", "9876543210", domain="example.com", secure=True)
  59. ]
  60. # Serialize to JSON
  61. json_string = serialize_cookies_json(cookies)
  62. print("JSON Serialization:\n", json_string)
  63. # Deserialize from JSON
  64. deserialized_cookies = deserialize_cookies_json(json_string)
  65. print("\nDeserialized Cookies:\n", deserialized_cookies)
  66. # Serialize to Pickle
  67. serialize_cookies_pickle(cookies, "cookies.pickle")
  68. # Deserialize from Pickle
  69. loaded_cookies = deserialize_cookies_pickle("cookies.pickle")
  70. print("\nDeserialized from Pickle:\n", loaded_cookies)

Add your comment