Index: sitescripts/extensions/utils.py |
=================================================================== |
--- a/sitescripts/extensions/utils.py |
+++ b/sitescripts/extensions/utils.py |
@@ -23,12 +23,19 @@ |
import time |
import urlparse |
import urllib |
-import urllib2 |
import xml.dom.minidom as dom |
from ConfigParser import SafeConfigParser, NoOptionError |
from StringIO import StringIO |
from sitescripts.utils import get_config |
+PACKAGE_SUFFIXES = { |
+ 'gecko': '.xpi', |
+ 'chrome': '.crx', |
+ 'safari': '.safariextz', |
+ 'ie': '.exe', |
+ 'android': '.apk' |
+} |
+ |
def compareVersionParts(part1, part2): |
def convertInt(value, default): |
try: |
@@ -163,17 +170,7 @@ |
self.type = self.config.get('extensions', self.repositoryName + '_type') |
else: |
self.type = 'gecko' |
- |
- if self.type == 'gecko': |
- self.packageSuffix = '.xpi' |
- elif self.type == 'chrome' or self.type == 'opera': |
- self.packageSuffix = '.crx' |
- elif self.type == 'safari': |
- self.packageSuffix = '.safariextz' |
- elif self.type == 'ie': |
- self.packageSuffix = '.exe' |
- elif self.type == 'android': |
- self.packageSuffix = '.apk' |
+ self.packageSuffix = PACKAGE_SUFFIXES[self.type] |
if self.nightlyConfig and not self.nightlyConfig.has_section(self.repositoryName): |
self.nightlyConfig.add_section(self.repositoryName) |
@@ -267,44 +264,6 @@ |
else: |
return (None, None) |
-def _getGoogleDownloadLink(galleryID): |
Sebastian Noack
2016/03/08 17:23:05
For reference, the web store URLs are hard-coded o
|
- """ |
- gets download link for a Chrome add-on from the Chrome Gallery site |
- """ |
- galleryID = _urlencode(galleryID) |
- |
- url = 'https://clients2.google.com/service/update2/crx?x=%s' % _urlencode('id=%s&uc' % galleryID) |
- document = dom.parse(_urlopen(url)) |
- updateTags = document.getElementsByTagName('updatecheck') |
- version = updateTags and updateTags[0].getAttribute('version') |
- |
- if not version: |
- return (None, None) |
- |
- request = urllib2.Request('https://chrome.google.com/webstore/detail/_/' + galleryID) |
- request.get_method = lambda : 'HEAD' |
- url = urllib2.urlopen(request).geturl() |
- |
- return (url, version) |
- |
-def _getOperaDownloadLink(galleryID): |
- """ |
- gets download link for an Opera add-on from the Opera Addons site |
- """ |
- galleryID = _urlencode(galleryID) |
- |
- request = urllib2.Request('https://addons.opera.com/extensions/download/%s/' % galleryID) |
- request.get_method = lambda : 'HEAD' |
- response = urllib2.urlopen(request) |
- |
- content_disposition = response.info().getheader('Content-Disposition') |
- if content_disposition: |
- match = re.search(r'filename=\S+-([\d.]+)-\d+\.crx$', content_disposition) |
- if match: |
- return ('https://addons.opera.com/extensions/details/%s/' % galleryID , match.group(1)) |
- |
- return (None, None) |
- |
def _getLocalLink(repo): |
""" |
gets the link for the newest download of an add-on in the local downloads |
@@ -324,14 +283,8 @@ |
""" |
gets the download link to the most current version of an extension |
""" |
- if repo.galleryID: |
- if repo.type == "chrome": |
- return _getGoogleDownloadLink(repo.galleryID) |
- elif repo.type == "opera": |
- return _getOperaDownloadLink(repo.galleryID) |
- elif repo.type == "gecko": |
- return _getMozillaDownloadLink(repo.galleryID) |
- |
+ if repo.galleryID and repo.type == "gecko": |
+ return _getMozillaDownloadLink(repo.galleryID) |
return _getLocalLink(repo) |
def _getQRCode(text): |