NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

_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()