def _download_zip(self, zip_url, dest_dir): """Downloads a zip file at the given URL into the given directory. :param str zip_url: Full URL pointing to zip file. :param str dest_dir: Absolute path of directory into which the unzipped contents will be placed into, not including the zip directory itself. """ # TODO(jsirois): Wrap with workunits, progress meters, checksums. self.context.log.info('Downloading {}...'.format(zip_url)) sess = requests.session() sess.mount('file://', self.LocalFileAdapter()) res = sess.get(zip_url) if not res.status_code == requests.codes.ok: raise TaskError('Failed to download {} ({} error)'.format( zip_url, res.status_code)) with open_zip(BytesIO(res.content)) as zfile: safe_mkdir(dest_dir) for info in zfile.infolist(): if info.filename.endswith('/'): # Skip directories. continue # Strip zip directory name from files. filename = os.path.relpath(info.filename, get_basedir(info.filename)) f = safe_open(os.path.join(dest_dir, filename), 'w') f.write(zfile.read(info)) f.close()
def _download_zip(self, zip_url, dest_dir): """Downloads a zip file at the given URL into the given directory. :param str zip_url: Full URL pointing to zip file. :param str dest_dir: Absolute path of directory into which the unzipped contents will be placed into, not including the zip directory itself. """ # TODO(jsirois): Wrap with workunits, progress meters, checksums. self.context.log.info('Downloading {}...'.format(zip_url)) sess = requests.session() sess.mount('file://', self.LocalFileAdapter()) res = sess.get(zip_url) if not res.status_code == requests.codes.ok: raise TaskError('Failed to download {} ({} error)'.format(zip_url, res.status_code)) with open_zip(BytesIO(res.content)) as zfile: safe_mkdir(dest_dir) for info in zfile.infolist(): if info.filename.endswith('/'): # Skip directories. continue # Strip zip directory name from files. filename = os.path.relpath(info.filename, get_basedir(info.filename)) f = safe_open(os.path.join(dest_dir, filename), 'w') f.write(zfile.read(info)) f.close()
def test_get_basedir(self): self.assertEquals(get_basedir('foo/bar/baz'), 'foo') self.assertEquals(get_basedir('/foo/bar/baz'), '') self.assertEquals(get_basedir('foo'), 'foo')
def test_get_basedir(self): self.assertEquals(get_basedir("foo/bar/baz"), "foo") self.assertEquals(get_basedir("/foo/bar/baz"), "") self.assertEquals(get_basedir("foo"), "foo")
def test_get_basedir(self) -> None: self.assertEqual(get_basedir("foo/bar/baz"), "foo") self.assertEqual(get_basedir("/foo/bar/baz"), "") self.assertEqual(get_basedir("foo"), "foo")