| Index: sitescripts/extensions/utils.py |
| =================================================================== |
| --- a/sitescripts/extensions/utils.py |
| +++ b/sitescripts/extensions/utils.py |
| @@ -23,9 +23,11 @@ |
| import urlparse |
| import urllib |
| import xml.dom.minidom as dom |
| +import sys |
| from ConfigParser import SafeConfigParser, NoOptionError |
| from StringIO import StringIO |
| from sitescripts.utils import get_config |
| +from xml.parsers.expat import ExpatError |
| PACKAGE_SUFFIXES = { |
| 'gecko': '.xpi', |
| @@ -259,16 +261,24 @@ |
| """ |
| gets download link for a Gecko add-on from the Mozilla Addons site |
| """ |
| - url = 'https://services.addons.mozilla.org/en-US/firefox/api/1/addon/%s' % _urlencode(galleryID) |
| - document = dom.parse(_urlopen(url)) |
| - linkTags = document.getElementsByTagName('install') |
| - linkTag = linkTags[0] if len(linkTags) > 0 else None |
| - versionTags = document.getElementsByTagName('version') |
| - versionTag = versionTags[0] if len(versionTags) > 0 else None |
| - if linkTag and versionTag and linkTag.firstChild and versionTag.firstChild: |
| - return (linkTag.firstChild.data, versionTag.firstChild.data) |
| - else: |
| - return (None, None) |
| + try: |
| + url = 'https://services.addons.mozilla.org/en-US/firefox/api/1/addon/%s' % _urlencode(galleryID) |
| + document = dom.parse(_urlopen(url)) |
|
Vasily Kuznetsov
2017/01/12 11:12:32
Actually we don't need to put the whole block into
|
| + linkTags = document.getElementsByTagName('install') |
| + linkTag = linkTags[0] if len(linkTags) > 0 else None |
| + versionTags = document.getElementsByTagName('version') |
| + versionTag = versionTags[0] if len(versionTags) > 0 else None |
| + if linkTag and versionTag and linkTag.firstChild and versionTag.firstChild: |
| + return (linkTag.firstChild.data, versionTag.firstChild.data) |
| + else: |
| + return (None, None) |
| + except ExpatError: |
| + page = _urlopen(url) |
|
Vasily Kuznetsov
2017/01/12 11:12:32
This is not a good idea. You're downloading the pa
|
| + content = document.open() |
| + page.close() |
| + raise Exception('Error found while parsing xml:\n{0}\nfrom {1} link' |
| + .format(content, galleryID)) |
| + |
| def _getLocalLink(repo): |