| 45 | } |
| 46 | |
| 47 | async fn enumerate(&self) -> io::Result<DriveFiles> { |
| 48 | let response = self.service.borrow_mut().get_files(&self.username).await?; |
| 49 | let mut entries = BTreeMap::default(); |
| 50 | for e in response.files { |
| 51 | let date = match time::OffsetDateTime::from_unix_timestamp(e.mtime as i64) { |
| 52 | Ok(date) => date, |
| 53 | Err(e) => return Err(io::Error::new(io::ErrorKind::InvalidData, format!("{}", e))), |
| 54 | }; |
| 55 | entries.insert(e.filename, Metadata { date, length: e.length }); |
| 56 | } |
| 57 | Ok(DriveFiles::new( |
| 58 | entries, |
| 59 | response.disk_quota.map(|x| x.into()), |
| 60 | response.disk_free.map(|x| x.into()), |
| 61 | )) |
| 62 | } |
| 63 | |
| 64 | async fn get(&self, filename: &str) -> io::Result<Vec<u8>> { |
| 65 | self.service.borrow_mut().get_file(&self.username, filename).await |