in core/src/services/webhdfs/pager.rs [99:128]
fn webhdfs_get_next_list_statuses(&mut self) -> Result<Option<Vec<oio::Entry>>> {
let mut entries = Vec::with_capacity(self.statuses.len());
while let Some(status) = self.statuses.pop() {
let mut path = if self.path.is_empty() {
status.path_suffix.to_string()
} else {
format!("{}/{}", self.path, status.path_suffix)
};
let meta = match status.ty {
FileStatusType::Directory => Metadata::new(EntryMode::DIR),
FileStatusType::File => Metadata::new(EntryMode::FILE)
.with_content_length(status.length)
.with_last_modified(parse_datetime_from_from_timestamp_millis(
status.modification_time,
)?),
};
if meta.mode().is_file() {
path = path.trim_end_matches('/').to_string();
}
if meta.mode().is_dir() {
path += "/"
}
let entry = oio::Entry::new(&path, meta);
entries.push(entry);
}
Ok(Some(entries))
}