def build(self, fileobj=None): if fileobj is None: fileobj = tempfile.TemporaryFile() for br in self.spans_to_br(): blob = self.con.get_blob(br) fileobj.write(blob.read()) fileobj.seek(0) if hasattr(fileobj, 'name'): apply_stat_info(fileobj.name, Schema(self.con, self.blob_ref).data) return fileobj
def _get_directory(con, br, base_path): # Load the directory schema directory = Directory(con, blob_ref=br) # Build the absolute path of the current directory/sub-directory. path = os.path.join(base_path, directory.fileName) if not os.path.isdir(path): os.mkdir(path) apply_stat_info(path, directory.data) # Load the directory static set. static_set = StaticSet(con, directory.entries) for member_br in static_set.members: blob_metadata = con.describe_blob(member_br) if blob_metadata['camliType'] == 'file': file_path = os.path.join(path, blob_metadata['file']['fileName']) with open(file_path, 'wb') as fh: con.get_file(member_br, fh) elif blob_metadata['camliType'] == 'directory': _get_directory(con, member_br, base_path=path)