import json
import pickle
import datetime
class Cookie:
def __init__(self, name, value, expiry=None, domain=None, path=None, secure=False, httponly=False):
self.name = name
self.value = value
self.expiry = expiry # datetime object
self.domain = domain
self.path = path
self.secure = secure
self.httponly = httponly
def __repr__(self):
return f"Cookie(name='{self.name}', value='{self.value}', expiry={self.expiry}, domain={self.domain}, path={self.path}, secure={self.secure}, httponly={self.httponly})"
def serialize_cookies_json(cookies):
"""Serializes a list of Cookie objects to a JSON string."""
cookie_data = []
for cookie in cookies:
cookie_data.append({
"name": cookie.name,
"value": cookie.value,
"expiry": cookie.expiry.isoformat() if cookie.expiry else None, # Convert datetime to ISO format
"domain": cookie.domain,
"path": cookie.path,
"secure": cookie.secure,
"httponly": cookie.httponly
})
return json.dumps(cookie_data, indent=4)
def deserialize_cookies_json(json_string):
"""Deserializes a JSON string of cookies back into a list of Cookie objects."""
cookie_data = json.loads(json_string)
cookies = []
for data in cookie_data:
expiry_str = data.get("expiry")
expiry = datetime.datetime.fromisoformat(expiry_str) if expiry_str else None
cookies.append(Cookie(
name=data["name"],
value=data["value"],
expiry=expiry,
domain=data.get("domain"),
path=data.get("path"),
secure=data["secure"],
httponly=data["httponly"]
))
return cookies
def serialize_cookies_pickle(cookies, filename):
"""Serializes a list of Cookie objects to a pickle file."""
with open(filename, 'wb') as f:
pickle.dump(cookies, f)
def deserialize_cookies_pickle(filename):
"""Deserializes a list of Cookie objects from a pickle file."""
with open(filename, 'rb') as f:
return pickle.load(f)
if __name__ == '__main__':
# Example Usage
cookies = [
Cookie("sessionid", "1234567890", datetime.datetime(2024, 12, 31, 23, 59, 59)),
Cookie("user_id", "9876543210", domain="example.com", secure=True)
]
# Serialize to JSON
json_string = serialize_cookies_json(cookies)
print("JSON Serialization:\n", json_string)
# Deserialize from JSON
deserialized_cookies = deserialize_cookies_json(json_string)
print("\nDeserialized Cookies:\n", deserialized_cookies)
# Serialize to Pickle
serialize_cookies_pickle(cookies, "cookies.pickle")
# Deserialize from Pickle
loaded_cookies = deserialize_cookies_pickle("cookies.pickle")
print("\nDeserialized from Pickle:\n", loaded_cookies)
Add your comment