Esempio n. 1
0
    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()
Esempio n. 2
0
  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()
Esempio n. 3
0
 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')
Esempio n. 4
0
 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')
Esempio n. 5
0
 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")
Esempio n. 6
0
 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")