in mozdownload/scraper.py [0:0]
def get_latest_build_date(self):
"""Return date of latest available nightly build."""
if self.application not in ('fenix'):
url = urljoin(self.base_url, 'nightly', 'latest-%s/' % self.branch)
elif self.application == 'fenix':
years = self._create_directory_parser(urljoin(self.base_url, 'nightly/'))
years.entries.sort()
months = self._create_directory_parser(urljoin(self.base_url, 'nightly',
years.entries[-1] + '/'))
months.entries.sort()
url = urljoin(self.base_url, 'nightly', years.entries[-1],
months.entries[-1] + '/')
parser = self._create_directory_parser(url)
parser.entries = parser.filter(r'.*%s' % self.platform_regex)
if not parser.entries:
raise errors.NotFoundError('No builds have been found', url)
parser.entries.sort()
date = ''.join(parser.entries[-1].split('-')[:6])
return datetime.strptime(date, '%Y%m%d%H%M%S')
else:
url = urljoin(self.base_url, 'nightly', 'latest-%s-%s/' %
(self.branch, self.platform))
self.logger.info('Retrieving the build status file from %s' % url)
parser = self._create_directory_parser(url)
parser.entries = parser.filter(r'.*%s\.txt' % self.platform_regex)
if not parser.entries:
message = 'Status file for %s build cannot be found' % \
self.platform_regex
raise errors.NotFoundError(message, url)
# Read status file for the platform, retrieve build id,
# and convert to a date
headers = {'Cache-Control': 'max-age=0'}
r = self.session.get(url + parser.entries[-1], headers=headers)
try:
r.raise_for_status()
return datetime.strptime(r.text.replace('\r\n', '\n').split('\n')[0], '%Y%m%d%H%M%S')
finally:
r.close()