Fix case for URL schemes, better error message (bug 276)
Allow URL schemes like "Http://" and show better error messages when adding URLs with unknown schemes. Thanks to R. Bell for reporting this error on garage.maemo.org.
This commit is contained in:
parent
3e342347a8
commit
6cead6d94d
|
@ -1413,22 +1413,13 @@ class gPodder(GladeWidget):
|
|||
self.add_new_channel(result)
|
||||
|
||||
def add_new_channel(self, result=None, ask_download_new=True, quiet=False, block=False, authentication_tokens=None):
|
||||
result = util.normalize_feed_url( result)
|
||||
|
||||
waitdlg = gtk.MessageDialog(self.gPodder, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE)
|
||||
waitdlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
|
||||
waitdlg.set_title(_('Downloading episode list'))
|
||||
waitdlg.set_markup('<b><big>%s</big></b>' % waitdlg.get_title())
|
||||
waitdlg.format_secondary_text(_('Please wait while I am downloading episode information for %s') % result)
|
||||
waitpb = gtk.ProgressBar()
|
||||
if block:
|
||||
waitdlg.vbox.add(waitpb)
|
||||
waitdlg.show_all()
|
||||
waitdlg.set_response_sensitive(gtk.RESPONSE_CANCEL, False)
|
||||
(scheme, rest) = result.split('://', 1)
|
||||
result = util.normalize_feed_url(result)
|
||||
|
||||
if not result:
|
||||
title = _('URL scheme not supported')
|
||||
message = _('gPodder currently only supports URLs starting with <b>http://</b>, <b>feed://</b> or <b>ftp://</b>.')
|
||||
cute_scheme = saxutils.escape(scheme)+'://'
|
||||
title = _('%s URLs are not supported') % cute_scheme
|
||||
message = _('gPodder does not understand the URL you supplied.')
|
||||
self.show_message( message, title)
|
||||
return
|
||||
|
||||
|
@ -1446,6 +1437,17 @@ class gPodder(GladeWidget):
|
|||
waitdlg.destroy()
|
||||
return
|
||||
|
||||
waitdlg = gtk.MessageDialog(self.gPodder, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE)
|
||||
waitdlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
|
||||
waitdlg.set_title(_('Downloading episode list'))
|
||||
waitdlg.set_markup('<b><big>%s</big></b>' % waitdlg.get_title())
|
||||
waitdlg.format_secondary_text(_('Please wait while I am downloading episode information for %s') % result)
|
||||
waitpb = gtk.ProgressBar()
|
||||
if block:
|
||||
waitdlg.vbox.add(waitpb)
|
||||
waitdlg.show_all()
|
||||
waitdlg.set_response_sensitive(gtk.RESPONSE_CANCEL, False)
|
||||
|
||||
self.entryAddChannel.set_text(_('Downloading feed...'))
|
||||
self.entryAddChannel.set_sensitive(False)
|
||||
self.btnAddChannel.set_sensitive(False)
|
||||
|
|
|
@ -103,7 +103,7 @@ def make_directory( path):
|
|||
return True
|
||||
|
||||
|
||||
def normalize_feed_url( url):
|
||||
def normalize_feed_url(url):
|
||||
"""
|
||||
Converts any URL to http:// or ftp:// so that it can be
|
||||
used with "wget". If the URL cannot be converted (invalid
|
||||
|
@ -117,26 +117,37 @@ def normalize_feed_url( url):
|
|||
simply assume the user intends to add a http:// feed.
|
||||
"""
|
||||
|
||||
if not url or len( url) < 8:
|
||||
if not url or len(url) < 8:
|
||||
return None
|
||||
|
||||
# Assume HTTP for URLs without scheme
|
||||
if not '://' in url:
|
||||
url = 'http://' + url
|
||||
|
||||
if url.startswith('itms://'):
|
||||
# The scheme of the URL should be all-lowercase
|
||||
(scheme, rest) = url.split('://', 1)
|
||||
scheme = scheme.lower()
|
||||
|
||||
# Remember to parse iTunes XML for itms:// URLs
|
||||
do_parse_itunes_xml = (scheme == 'itms')
|
||||
|
||||
# feed://, itpc:// and itms:// are really http://
|
||||
if scheme in ('feed', 'itpc', 'itms'):
|
||||
scheme = 'http'
|
||||
|
||||
# Re-assemble our URL
|
||||
url = scheme + '://' + rest
|
||||
|
||||
# If we had an itms:// URL, parse XML
|
||||
if do_parse_itunes_xml:
|
||||
url = parse_itunes_xml(url)
|
||||
|
||||
# Links to "phobos.apple.com"
|
||||
url = itunes_discover_rss(url)
|
||||
if url is None:
|
||||
return None
|
||||
|
||||
if url.startswith( 'http://') or url.startswith( 'https://') or url.startswith( 'ftp://'):
|
||||
if scheme in ('http', 'https', 'ftp'):
|
||||
return url
|
||||
|
||||
if url.startswith('feed://') or url.startswith('itpc://'):
|
||||
return 'http://' + url[7:]
|
||||
|
||||
return None
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue