_MozillaCookieJar.py (3624B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\_MozillaCookieJar.py 2 import re, time 3 from cookielib import _warn_unhandled_exception, FileCookieJar, LoadError, Cookie, MISSING_FILENAME_TEXT 4 5 class MozillaCookieJar(FileCookieJar): 6 magic_re = '#( Netscape)? HTTP Cookie File' 7 header = '# Netscape HTTP Cookie File\n# http://www.netscape.com/newsref/std/cookie_spec.html\n# This is a generated file! Do not edit.\n\n' 8 9 def _really_load(self, f, filename, ignore_discard, ignore_expires): 10 now = time.time() 11 magic = f.readline() 12 if not re.search(self.magic_re, magic): 13 f.close() 14 raise LoadError('%r does not look like a Netscape format cookies file' % filename) 15 try: 16 while 1: 17 line = f.readline() 18 if line == '': 19 break 20 if line.endswith('\n'): 21 line = line[:-1] 22 if line.strip().startswith(('#', '$')) or line.strip() == '': 23 continue 24 domain, domain_specified, path, secure, expires, name, value = line.split('\t') 25 secure = secure == 'TRUE' 26 domain_specified = domain_specified == 'TRUE' 27 if name == '': 28 name = value 29 value = None 30 initial_dot = domain.startswith('.') 31 discard = False 32 if expires == '': 33 expires = None 34 discard = True 35 c = Cookie(0, name, value, None, False, domain, domain_specified, initial_dot, path, False, secure, expires, discard, None, None, {}) 36 if not ignore_discard and c.discard: 37 continue 38 if not ignore_expires and c.is_expired(now): 39 continue 40 self.set_cookie(c) 41 42 except IOError: 43 raise 44 except Exception: 45 _warn_unhandled_exception() 46 raise LoadError('invalid Netscape format cookies file %r: %r' % (filename, line)) 47 48 def save(self, filename = None, ignore_discard = False, ignore_expires = False): 49 if filename is None: 50 if self.filename is not None: 51 filename = self.filename 52 else: 53 raise ValueError(MISSING_FILENAME_TEXT) 54 f = open(filename, 'w') 55 try: 56 f.write(self.header) 57 now = time.time() 58 for cookie in self: 59 if not ignore_discard and cookie.discard: 60 continue 61 if not ignore_expires and cookie.is_expired(now): 62 continue 63 if cookie.secure: 64 secure = 'TRUE' 65 else: 66 secure = 'FALSE' 67 if cookie.domain.startswith('.'): 68 initial_dot = 'TRUE' 69 else: 70 initial_dot = 'FALSE' 71 if cookie.expires is not None: 72 expires = str(cookie.expires) 73 else: 74 expires = '' 75 if cookie.value is None: 76 name = '' 77 value = cookie.name 78 else: 79 name = cookie.name 80 value = cookie.value 81 f.write('\t'.join([cookie.domain, 82 initial_dot, 83 cookie.path, 84 secure, 85 expires, 86 name, 87 value]) + '\n') 88 89 finally: 90 f.close()