allow downloading individual files from bundle

This commit is contained in:
xenofem 2022-05-24 15:14:31 -04:00
parent 43d03869ab
commit 007289ffe5
15 changed files with 499 additions and 69 deletions

View file

@ -93,9 +93,11 @@ impl Actor for Uploader {
type Context = <Uploader as Actor>::Context;
#[derive(Clone, Deserialize, Serialize)]
pub struct UploadedFile {
pub name: String,
pub size: u64,
#[serde(with = "crate::timestamp")]
pub modtime: OffsetDateTime,
}
@ -273,7 +275,7 @@ impl Uploader {
let (writer, name, size, modtime): (Box<dyn Write>, _, _, _) = if files.len() > 1 {
info!("Wrapping in zipfile generator");
let now = OffsetDateTime::now_utc();
let zip_writer = super::zip::ZipGenerator::new(files, writer);
let zip_writer = super::zip::ZipGenerator::new(files.clone(), writer);
let size = zip_writer.total_size();
let download_filename = super::APP_NAME.to_owned()
+ &now.format(FILENAME_DATE_FORMAT).unwrap()
@ -293,6 +295,7 @@ impl Uploader {
size,
modtime,
expiry: OffsetDateTime::now_utc() + lifetime * time::Duration::DAY,
contents: if files.len() > 1 { Some(files) } else { None },
};
let state = self.app_state.clone();
let storage_filename = self.storage_filename.clone();