# This file is part of Tautulli. # # Tautulli is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Tautulli is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Tautulli. If not, see . ######################################### ## Stolen from Sick-Beard's classes.py ## ######################################### import urllib from common import USER_AGENT class PlexPyURLopener(urllib.FancyURLopener): version = USER_AGENT class AuthURLOpener(PlexPyURLopener): """ URLOpener class that supports http auth without needing interactive password entry. If the provided username/password don't work it simply fails. user: username to use for HTTP auth pw: password to use for HTTP auth """ def __init__(self, user, pw): self.username = user self.password = pw # remember if we've tried the username/password before self.numTries = 0 # call the base class urllib.FancyURLopener.__init__(self) def prompt_user_passwd(self, host, realm): """ Override this function and instead of prompting just give the username/password that were provided when the class was instantiated. """ # if this is the first try then provide a username/password if self.numTries == 0: self.numTries = 1 return (self.username, self.password) # if we've tried before then return blank which cancels the request else: return ('', '') # this is pretty much just a hack for convenience def openit(self, url): self.numTries = 0 return PlexPyURLopener.open(self, url)