2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
3
from __future__ import (unicode_literals, division, absolute_import,
7
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
8
__docformat__ = 'restructuredtext en'
10
from calibre import USER_AGENT
11
from calibre.web.jsbrowser.browser import Browser
13
def do_login(login_url, calibre_browser, form_selector, controls={},
14
num_of_replies=0, timeout=60.0, verbosity=0, pause_time=5,
15
post_visit_callback=None, post_submit_callback=None,
16
submit_control_selector=None):
18
for key, val in calibre_browser.addheaders:
19
if key.lower() == 'user-agent':
22
br = Browser(user_agent=ua, verbosity=verbosity)
23
if not br.visit(login_url, timeout=timeout):
24
raise ValueError('Failed to load the login URL: %r'%login_url)
26
if callable(post_visit_callback):
27
post_visit_callback(br)
29
f = br.select_form(form_selector)
30
for key, val in controls.iteritems():
35
if num_of_replies > 0:
36
br.ajax_submit(num_of_replies=num_of_replies, timeout=timeout,
37
submit_control_selector=submit_control_selector)
39
br.submit(timeout=timeout,
40
submit_control_selector=submit_control_selector)
42
# Give any javascript some time to run
43
br.run_for_a_time(pause_time)
45
if callable(post_submit_callback):
46
post_submit_callback(br)
50
cj = calibre_browser.cookiejar
51
for cookie in br.cookies: