Source code for nerodia.cookies

import time
from json import dump, load


[docs]class Cookies(object): def __init__(self, driver): self.driver = driver def __iter__(self): """ Yields each cookie in cookie collection :rtype: iter :Example: list(browser.cookies) #=> [{name: 'my_session', value: 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', domain: 'mysite.com'}] """ cookies = self.driver.get_cookies() for cookie in cookies: expire = cookie.get('expires') cookie['expires'] = self._to_time(expire) if expire else None yield cookie @property def to_list(self): import nerodia nerodia.logger.deprecate('Cookies.to_list', 'list(self)') return list(self) def __getitem__(self, name): """ Returns a cookie by name :param name: name of cookie :rtype: dict :Example: browser.cookies['my_session'] #=> {name: 'my_session', value: 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', domain: 'mysite.com'} """ return next((c for c in self if c.get('name') == name), None)
[docs] def add(self, name, value, **kwargs): """ Adds new cookie :Example: browser.cookies.add('my_session', 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', domain='mysite.com') """ cookie = {'name': name, 'value': value} keys = list(kwargs) if 'secure' in keys: cookie['secure'] = kwargs.get('secure') if 'path' in keys: cookie['path'] = kwargs.get('path') if 'expires' in keys: cookie['expires'] = kwargs.get('expires') if 'domain' in keys: cookie['domain'] = kwargs.get('domain') self.driver.add_cookie(cookie)
[docs] def delete(self, name): """ Deletes cookie by given name """ self.driver.delete_cookie(name)
[docs] def clear(self): """ Deletes all cookies """ self.driver.delete_all_cookies()
[docs] def save(self, file='.cookies'): """ Save cookies to file :param file: file path :Example: browser.cookies.save('.cookies') """ with open(file, 'w') as f: dump(list(self), f, indent=4)
[docs] def load(self, file='.cookies'): """ Loads cookies from file :param file: file path :Example: browser.cookies.load('.cookies') """ with open(file, 'r') as f: for cookie in load(f): self.add(cookie.pop('name'), cookie.pop('value'), **cookie)
# private def _to_time(self, dt): return time.strftime('%Y-%m-%d %H:%M:%S %z', time.localtime(time.mktime(dt.timetuple())))