mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 09:48:44 +00:00
title in multipart media upload APIs
This commit is contained in:
1 parent
527d980d16
commit
d0a1e0192a
10 files changed
+63
-1
No files matched your search
+6
@@ -44,6 +44,8 @@ pub struct InsertMediaFileFromUploadArgs<'a> {
|
||||
// TODO: Media duration.
|
||||
//pub duration_millis: u64,
|
||||
|
||||
pub maybe_title: Option<&'a str>,
|
||||
|
||||
pub public_bucket_directory_hash: &'a str,
|
||||
pub maybe_public_bucket_prefix: Option<&'a str>,
|
||||
pub maybe_public_bucket_extension: Option<&'a str>,
|
||||
@@ -109,6 +111,8 @@ SET
|
||||
|
||||
checksum_sha2 = ?,
|
||||
|
||||
maybe_title = ?,
|
||||
|
||||
public_bucket_directory_hash = ?,
|
||||
maybe_public_bucket_prefix = ?,
|
||||
maybe_public_bucket_extension = ?,
|
||||
@@ -136,6 +140,8 @@ SET
|
||||
|
||||
args.sha256_checksum,
|
||||
|
||||
args.maybe_title,
|
||||
|
||||
args.public_bucket_directory_hash,
|
||||
args.maybe_public_bucket_prefix,
|
||||
args.maybe_public_bucket_extension,
|
||||
|
||||
+1
@@ -206,6 +206,7 @@ pub async fn create_scene_handler(
|
||||
file_size_bytes: file_size_bytes as u64,
|
||||
duration_millis: 0, // None
|
||||
sha256_checksum: &hash,
|
||||
maybe_title: upload_media_request.title.as_deref(),
|
||||
public_bucket_directory_hash: public_upload_path.get_object_hash(),
|
||||
maybe_public_bucket_prefix: PREFIX,
|
||||
maybe_public_bucket_extension: SUFFIX,
|
||||
|
||||
+16
-1
@@ -9,9 +9,15 @@ use tokens::tokens::zs_voice_datasets::ZsVoiceDatasetToken;
|
||||
use crate::http_server::web_utils::read_multipart_field_bytes::{checked_read_multipart_bytes, read_multipart_field_as_text};
|
||||
|
||||
pub struct MediaFileUploadData {
|
||||
// Required
|
||||
pub uuid_idempotency_token: Option<String>,
|
||||
pub file_name: Option<String>,
|
||||
pub file_bytes: Option<BytesMut>,
|
||||
|
||||
// Optional: name of the file in the File() object
|
||||
pub file_name: Option<String>,
|
||||
|
||||
// Optional: title of the scene (media_files' maybe_title)
|
||||
pub title: Option<String>,
|
||||
}
|
||||
|
||||
/// Pull common parts out of multipart media HTTP requests, typically for handling file uploads.
|
||||
@@ -19,6 +25,7 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
let mut uuid_idempotency_token = None;
|
||||
let mut file_bytes = None;
|
||||
let mut file_name = None;
|
||||
let mut title = None;
|
||||
|
||||
while let Ok(Some(mut field)) = multipart_payload.try_next().await {
|
||||
let mut field_name = None;
|
||||
@@ -47,6 +54,13 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
e
|
||||
})?;
|
||||
},
|
||||
Some("title") => {
|
||||
title = read_multipart_field_as_text(&mut field).await
|
||||
.map_err(|e| {
|
||||
warn!("Error reading title: {:}", &e);
|
||||
e
|
||||
})?;
|
||||
},
|
||||
_ => continue,
|
||||
}
|
||||
}
|
||||
@@ -55,5 +69,6 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
uuid_idempotency_token,
|
||||
file_name,
|
||||
file_bytes,
|
||||
title,
|
||||
})
|
||||
}
|
||||
+1
@@ -336,6 +336,7 @@ pub async fn process_upload_media_file(
|
||||
file_size_bytes: file_size_bytes as u64,
|
||||
duration_millis: 0, // TODO
|
||||
sha256_checksum: &hash,
|
||||
maybe_title: upload_media_request.title.as_deref(),
|
||||
public_bucket_directory_hash: public_upload_path.get_object_hash(),
|
||||
maybe_public_bucket_prefix: PREFIX,
|
||||
maybe_public_bucket_extension: extension.as_deref(),
|
||||
|
||||
+12
@@ -17,6 +17,9 @@ pub struct MediaFileUploadData {
|
||||
pub file_bytes: Option<BytesMut>,
|
||||
pub media_file_subtype: Option<MediaFileSubtype>,
|
||||
pub media_file_class: Option<MediaFileClass>,
|
||||
|
||||
// Optional: title of the scene (media_files' maybe_title)
|
||||
pub title: Option<String>,
|
||||
}
|
||||
|
||||
/// Pull common parts out of multipart media HTTP requests, typically for handling file uploads.
|
||||
@@ -26,6 +29,7 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
let mut file_name = None;
|
||||
let mut media_file_class = None;
|
||||
let mut media_file_subtype = None;
|
||||
let mut title = None;
|
||||
|
||||
while let Ok(Some(mut field)) = multipart_payload.try_next().await {
|
||||
let mut field_name = None;
|
||||
@@ -80,6 +84,13 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
anyhow!("Wrong MediaFileClass: {:?}", &err)
|
||||
})?;
|
||||
},
|
||||
Some("title") => {
|
||||
title = read_multipart_field_as_text(&mut field).await
|
||||
.map_err(|e| {
|
||||
warn!("Error reading title: {:}", &e);
|
||||
e
|
||||
})?;
|
||||
},
|
||||
_ => continue,
|
||||
}
|
||||
}
|
||||
@@ -90,5 +101,6 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
file_bytes,
|
||||
media_file_class,
|
||||
media_file_subtype,
|
||||
title,
|
||||
})
|
||||
}
|
||||
+1
@@ -205,6 +205,7 @@ pub async fn upload_engine_asset_media_file_handler(
|
||||
file_size_bytes: file_size_bytes as u64,
|
||||
duration_millis: 0,
|
||||
sha256_checksum: &hash,
|
||||
maybe_title: upload_media_request.title.as_deref(),
|
||||
public_bucket_directory_hash: public_upload_path.get_object_hash(),
|
||||
maybe_public_bucket_prefix: PREFIX,
|
||||
maybe_public_bucket_extension: Some(suffix),
|
||||
|
||||
+12
@@ -13,6 +13,9 @@ pub struct MediaFileUploadData {
|
||||
pub file_name: Option<String>,
|
||||
pub file_bytes: Option<BytesMut>,
|
||||
pub media_source: MediaFileUploadSource,
|
||||
|
||||
// Optional: title of the scene (media_files' maybe_title)
|
||||
pub title: Option<String>,
|
||||
}
|
||||
|
||||
/// Where the frontend tells us the file came from.
|
||||
@@ -31,6 +34,7 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
let mut file_bytes = None;
|
||||
let mut file_name = None;
|
||||
let mut media_source = None;
|
||||
let mut title = None;
|
||||
|
||||
while let Ok(Some(mut field)) = multipart_payload.try_next().await {
|
||||
let mut field_name = None;
|
||||
@@ -66,6 +70,13 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
e
|
||||
})?;
|
||||
},
|
||||
Some("title") => {
|
||||
title = read_multipart_field_as_text(&mut field).await
|
||||
.map_err(|e| {
|
||||
warn!("Error reading title: {:}", &e);
|
||||
e
|
||||
})?;
|
||||
},
|
||||
_ => continue,
|
||||
}
|
||||
}
|
||||
@@ -87,5 +98,6 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
file_name,
|
||||
file_bytes,
|
||||
media_source,
|
||||
title,
|
||||
})
|
||||
}
|
||||
+1
@@ -336,6 +336,7 @@ pub async fn process_upload_media_file(
|
||||
file_size_bytes: file_size_bytes as u64,
|
||||
duration_millis: 0, // TODO
|
||||
sha256_checksum: &hash,
|
||||
maybe_title: upload_media_request.title.as_deref(),
|
||||
public_bucket_directory_hash: public_upload_path.get_object_hash(),
|
||||
maybe_public_bucket_prefix: PREFIX,
|
||||
maybe_public_bucket_extension: extension.as_deref(),
|
||||
|
||||
+12
@@ -13,6 +13,9 @@ pub struct MediaFileUploadData {
|
||||
pub file_name: Option<String>,
|
||||
pub file_bytes: Option<BytesMut>,
|
||||
pub media_source: MediaFileUploadSource,
|
||||
|
||||
// Optional: title of the scene (media_files' maybe_title)
|
||||
pub title: Option<String>,
|
||||
}
|
||||
|
||||
/// Where the frontend tells us the file came from.
|
||||
@@ -31,6 +34,7 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
let mut file_bytes = None;
|
||||
let mut file_name = None;
|
||||
let mut media_source = None;
|
||||
let mut title = None;
|
||||
|
||||
while let Ok(Some(mut field)) = multipart_payload.try_next().await {
|
||||
let mut field_name = None;
|
||||
@@ -66,6 +70,13 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
e
|
||||
})?;
|
||||
},
|
||||
Some("title") => {
|
||||
title = read_multipart_field_as_text(&mut field).await
|
||||
.map_err(|e| {
|
||||
warn!("Error reading title: {:}", &e);
|
||||
e
|
||||
})?;
|
||||
},
|
||||
_ => continue,
|
||||
}
|
||||
}
|
||||
@@ -87,5 +98,6 @@ pub async fn drain_multipart_request(mut multipart_payload: Multipart) -> Anyhow
|
||||
file_name,
|
||||
file_bytes,
|
||||
media_source,
|
||||
title,
|
||||
})
|
||||
}
|
||||
+1
@@ -219,6 +219,7 @@ pub async fn upload_video_media_file_handler(
|
||||
file_size_bytes: file_size_bytes as u64,
|
||||
duration_millis: mp4_info.duration_millis as u64,
|
||||
sha256_checksum: &hash,
|
||||
maybe_title: upload_media_request.title.as_deref(),
|
||||
public_bucket_directory_hash: public_upload_path.get_object_hash(),
|
||||
maybe_public_bucket_prefix: PREFIX,
|
||||
maybe_public_bucket_extension: Some(&extension),
|
||||
|
||||
Reference in new issue
Block a user