fix download episodes requiring authentication
This commit is contained in:
parent
f51ef5a88e
commit
ad86c35b9a
|
@ -198,7 +198,22 @@ class DownloadURLOpener(urllib.request.FancyURLopener):
|
|||
def __init__(self, channel):
|
||||
self.channel = channel
|
||||
self._auth_retry_counter = 0
|
||||
urllib.request.FancyURLopener.__init__(self, None)
|
||||
super().__init__()
|
||||
|
||||
def http_error(self, url, fp, errcode, errmsg, headers, data=None):
|
||||
"""Handle http errors.
|
||||
Overriden to give retry=True to http_error_40{1,7}.
|
||||
See https://github.com/python/cpython/commit/80f1b059714aeb1c6fc9f6ce1173bc8a51af7dd9
|
||||
See python issue https://bugs.python.org/issue1368368
|
||||
"""
|
||||
result = False
|
||||
if errcode == 401:
|
||||
result = self.http_error_401(url, fp, errcode, errmsg, headers, data=data, retry=True)
|
||||
elif errcode == 407:
|
||||
result = self.http_error_407(url, fp, errcode, errmsg, headers, data=data, retry=True)
|
||||
if result:
|
||||
return result
|
||||
return super().http_error(url, fp, errcode, errmsg, headers, data=data)
|
||||
|
||||
def http_error_default(self, url, fp, errcode, errmsg, headers):
|
||||
"""
|
||||
|
|
|
@ -54,6 +54,16 @@ def mkrss(items=EP_COUNT):
|
|||
</item>
|
||||
""" % dict(list(locals().items()) + list(globals().items()))
|
||||
for INDEX, PUBDATE in enumerate(mkpubdates(items)))
|
||||
ITEMS += """
|
||||
<item>
|
||||
<title>Missing Episode</title>
|
||||
<guid>tag:test.gpodder.org,2012:missing</guid>
|
||||
<pubDate>Sun, 25 Nov 2018 17:28:03 +0000</pubDate>
|
||||
<enclosure
|
||||
url="%(URL)s/not_there%(EPISODES_EXT)s"
|
||||
type="%(EPISODES_MIME)s"
|
||||
length="%(SIZE)s"/>
|
||||
</item>""" % dict(list(locals().items()) + list(globals().items()))
|
||||
|
||||
return """
|
||||
<rss>
|
||||
|
@ -111,6 +121,11 @@ class AuthRequestHandler(http.server.BaseHTTPRequestHandler):
|
|||
'Basic realm="%s"' % sys.argv[0])
|
||||
self.end_headers()
|
||||
return
|
||||
if not is_feed and not is_episode:
|
||||
print('Not there episode - sending 404.')
|
||||
self.send_response(404)
|
||||
self.end_headers()
|
||||
return
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type',
|
||||
|
|
Loading…
Reference in New Issue