File: httpauth.py

package info (click to toggle)
democracyplayer 0.9.1-1.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 20,876 kB
  • ctags: 6,313
  • sloc: python: 36,830; cpp: 1,038; ansic: 286; xml: 257; sh: 71; makefile: 30
file content (36 lines) | stat: -rw-r--r-- 1,303 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from download_utils import parseURL
import dialogs
import eventloop
import views

def formatAuthString(auth):
    return "%s %s" % (auth.getAuthScheme(), auth.getAuthToken())

def findHTTPAuth(callback, host, path):
    """Find an HTTPAuthPassword object stored in the database.  Callback will
    be called with a string to use for the Authorization header or None if we
    can't find anything in the DB.
    """
    import downloader

    auth = downloader.findHTTPAuth(host, path)
    if auth is not None:
        auth = formatAuthString(auth)
    eventloop.addIdle(callback, "http auth callback", args=(auth,))

def askForHTTPAuth(callback, url, realm, authScheme):
    """Ask the user for a username and password to login to a site.  Callback
    will be called with a string to use for the Authorization header or None
    if the user clicks cancel.
    """

    scheme, host, port, path = parseURL(url)
    def handleLoginResponse(dialog):
        import downloader
        if dialog.choice == dialogs.BUTTON_OK:
            auth = downloader.HTTPAuthPassword(dialog.username,
                    dialog.password, host, realm, path, authScheme)
            callback(formatAuthString(auth))
        else:
            callback(None)
    dialogs.HTTPAuthDialog(url, realm).run(handleLoginResponse)