~ubuntu-branches/debian/wheezy/calibre/wheezy

« back to all changes in this revision

Viewing changes to src/calibre/web/jsbrowser/login.py

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-10-04 10:29:28 UTC
  • mfrom: (29.3.5 sid)
  • Revision ID: james.westby@ubuntu.com-20111004102928-lbwg8cyjscq1tiz7
Tags: 0.8.21+dfsg-1
* New upstream release. (Closes: #642517)
* debian/control: Revert accidental X-Ubuntu-Original-Maintainer change.
  (Closes: #644029)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
 
3
from __future__ import (unicode_literals, division, absolute_import,
 
4
                        print_function)
 
5
 
 
6
__license__   = 'GPL v3'
 
7
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
 
8
__docformat__ = 'restructuredtext en'
 
9
 
 
10
from calibre import USER_AGENT
 
11
from calibre.web.jsbrowser.browser import Browser
 
12
 
 
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):
 
17
    ua = USER_AGENT
 
18
    for key, val in calibre_browser.addheaders:
 
19
        if key.lower() == 'user-agent':
 
20
            ua = val
 
21
            break
 
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)
 
25
 
 
26
    if callable(post_visit_callback):
 
27
        post_visit_callback(br)
 
28
 
 
29
    f = br.select_form(form_selector)
 
30
    for key, val in controls.iteritems():
 
31
        f[key] = val
 
32
 
 
33
    # br.show_browser()
 
34
 
 
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)
 
38
    else:
 
39
        br.submit(timeout=timeout,
 
40
                submit_control_selector=submit_control_selector)
 
41
 
 
42
    # Give any javascript some time to run
 
43
    br.run_for_a_time(pause_time)
 
44
 
 
45
    if callable(post_submit_callback):
 
46
        post_submit_callback(br)
 
47
 
 
48
    br.show_browser()
 
49
 
 
50
    cj = calibre_browser.cookiejar
 
51
    for cookie in br.cookies:
 
52
        cj.set_cookie(cookie)
 
53
    html = br.html
 
54
    br.close()
 
55
    return html
 
56