set generation provider in tauri

This commit is contained in:
Brandon Thomas committed 2026-05-12 19:13:34 -04:00
1 parent 8fc4eb800f
commit 01463e5a42
18 files changed
+141 -182

No files matched your search

@@ -34,10 +34,9 @@ pub struct LegacyUploadMediaFileFromFileArgs<'a, P: AsRef<Path>> {
// /// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
// pub maybe_prompt_token: Option<&'a PromptToken>,
// /// If provided, this is the service provider that created the image.
// /// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
// pub maybe_generation_provider: Option<GenerationProvider>,
/// If provided, the third-party provider that generated this file.
pub maybe_generation_provider: Option<GenerationProvider>,
// /// If provided, this groups the file into a batch
// /// TODO: This shouldn't be set clientside without the backend generating the token
// /// and cryptographically securing it. But we need to go fast here.
@@ -82,6 +81,10 @@ pub async fn legacy_upload_media_file_from_file<P: AsRef<Path>>(
// form = form.text("maybe_batch_token", batch_token.to_string());
//}
if let Some(provider) = &args.maybe_generation_provider {
form = form.text("maybe_generation_provider", provider.to_str().to_string());
}
let mut request_builder = client.post(url)
.header("User-Agent", USER_AGENT)
.header("Accept", APPLICATION_JSON);
@@ -6,6 +6,7 @@ use crate::utils::api_host::ApiHost;
use crate::utils::constants::{APPLICATION_JSON, USER_AGENT};
use crate::utils::filter_bad_response::filter_bad_response;
use crate::utils::http_get_anonymous::http_get_anonymous;
use enums::common::generation_provider::GenerationProvider;
use chrono::{DateTime, Utc};
use uuid_utils::uuid::generate_random_uuid;
use log::debug;
@@ -31,6 +32,9 @@ pub struct UploadImageBytesArgs<'a> {
/// If true, we should hide the image from the user's gallery.
pub is_intermediate_system_file: bool,
/// If provided, the third-party provider that generated this file.
pub maybe_generation_provider: Option<GenerationProvider>,
}
#[derive(Clone, Copy, Debug)]
@@ -86,6 +90,10 @@ pub async fn upload_image_media_file_from_bytes(
form = form.text("is_intermediate_system_file", "true");
}
if let Some(provider) = &args.maybe_generation_provider {
form = form.text("maybe_generation_provider", provider.to_str().to_string());
}
let mut request_builder = client.post(url)
.header("User-Agent", USER_AGENT)
.header("Accept", APPLICATION_JSON);
@@ -34,10 +34,9 @@ pub struct UploadImageFromFileArgs<'a, P: AsRef<Path>> {
/// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
pub maybe_prompt_token: Option<&'a PromptToken>,
// /// If provided, this is the service provider that created the image.
// /// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
// pub maybe_generation_provider: Option<GenerationProvider>,
/// If provided, the third-party provider that generated this file.
pub maybe_generation_provider: Option<GenerationProvider>,
/// If provided, this groups the file into a batch
/// TODO: This shouldn't be set clientside without the backend generating the token
/// and cryptographically securing it. But we need to go fast here.
@@ -82,6 +81,10 @@ pub async fn upload_image_media_file_from_file<P: AsRef<Path>>(
form = form.text("maybe_batch_token", batch_token.to_string());
}
if let Some(provider) = &args.maybe_generation_provider {
form = form.text("maybe_generation_provider", provider.to_str().to_string());
}
let mut request_builder = client.post(url)
.header("User-Agent", USER_AGENT)
.header("Accept", APPLICATION_JSON);
@@ -4,6 +4,7 @@ use crate::utils::api_host::ApiHost;
use crate::utils::constants::{APPLICATION_JSON, USER_AGENT};
use crate::utils::filter_bad_response::filter_bad_response;
use crate::utils::http_get_anonymous::http_get_anonymous;
use enums::common::generation_provider::GenerationProvider;
use chrono::{DateTime, Utc};
use uuid_utils::uuid::generate_random_uuid;
use log::debug;
@@ -24,6 +25,7 @@ pub async fn upload_new_engine_asset_from_file<P: AsRef<Path>>(
api_host: &ApiHost,
maybe_creds: Option<&StorytellerCredentialSet>,
path: P,
maybe_generation_provider: Option<GenerationProvider>,
) -> Result<UploadImageMediaFileSuccessResponse, ApiError> {
let url = get_route(api_host);
@@ -37,11 +39,15 @@ pub async fn upload_new_engine_asset_from_file<P: AsRef<Path>>(
let file_bytes = std::fs::read(path.as_ref())?;
let file_name = path.as_ref().file_name()
.and_then(|n| n.to_str()).unwrap_or("file").to_string();
let form = Form::new()
let mut form = Form::new()
.text("uuid_idempotency_token", generate_random_uuid())
.text("engine_category", "object") // TODO: Which type should we use?
.part("file", Part::bytes(file_bytes).file_name(file_name));
if let Some(provider) = &maybe_generation_provider {
form = form.text("maybe_generation_provider", provider.to_str().to_string());
}
let mut request_builder = client.post(url)
.header("User-Agent", USER_AGENT)
.header("Accept", APPLICATION_JSON);
@@ -4,6 +4,7 @@ use crate::utils::api_host::ApiHost;
use crate::utils::constants::{APPLICATION_JSON, USER_AGENT};
use crate::utils::filter_bad_response::filter_bad_response;
use crate::utils::http_get_anonymous::http_get_anonymous;
use enums::common::generation_provider::GenerationProvider;
use chrono::{DateTime, Utc};
use uuid_utils::uuid::generate_random_uuid;
use log::debug;
@@ -31,9 +32,8 @@ pub struct UploadVideoFromFileArgs<'a, P: AsRef<Path>> {
/// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
pub maybe_prompt_token: Option<&'a PromptToken>,
// /// If provided, this is the service provider that created the image.
// /// NOTE: Cannot set `is_intermediate_system_file = true` if this is set.
// pub maybe_generation_provider: Option<GenerationProvider>,
/// If provided, the third-party provider that generated this file.
pub maybe_generation_provider: Option<GenerationProvider>,
// /// If provided, this groups the file into a batch
// /// TODO: This shouldn't be set clientside without the backend generating the token
@@ -73,6 +73,10 @@ pub async fn upload_video_media_file_from_file<P: AsRef<Path>>(
form = form.text("maybe_prompt_token", prompt_token.to_string());
}
if let Some(provider) = &args.maybe_generation_provider {
form = form.text("maybe_generation_provider", provider.to_str().to_string());
}
let mut request_builder = client.post(url)
.header("User-Agent", USER_AGENT)
.header("Accept", APPLICATION_JSON);
@@ -33,7 +33,7 @@ pub async fn upload_media_file_from_file<P: AsRef<Path>>(
match maybe_type {
Some(FileExtension::Glb) => {
match upload_new_engine_asset_from_file(api_host, maybe_creds, path).await {
match upload_new_engine_asset_from_file(api_host, maybe_creds, path, None).await {
Ok(result) => Ok(UploadMediaFileSuccessResponse {
success: result.success,
media_file_token: result.media_file_token,
@@ -46,7 +46,8 @@ pub async fn upload_media_file_from_file<P: AsRef<Path>>(
api_host,
maybe_creds,
path,
maybe_prompt_token
maybe_prompt_token,
maybe_generation_provider: None,
}).await {
Ok(result) => Ok(UploadMediaFileSuccessResponse {
success: result.success,
@@ -63,6 +64,7 @@ pub async fn upload_media_file_from_file<P: AsRef<Path>>(
is_intermediate_system_file: false,
maybe_prompt_token,
maybe_batch_token: None,
maybe_generation_provider: None,
}).await;
match result {
Ok(result) => Ok(UploadMediaFileSuccessResponse {
@@ -150,6 +150,7 @@ async fn get_mask(
image_bytes: image_bytes.0,
image_type: ImageType::Png,
is_intermediate_system_file: true,
maybe_generation_provider: None,
}).await
.map_err(|err| {
error!("Failed to upload image media file: {:?}", err);
@@ -149,6 +149,7 @@ async fn get_mask(
image_bytes: image_bytes.0,
image_type: ImageType::Png,
is_intermediate_system_file: true,
maybe_generation_provider: None,
}).await
.map_err(|err| {
error!("Failed to upload image media file: {:?}", err);
@@ -115,6 +115,7 @@ async fn upload_image_from_base64_bytes(
is_intermediate_system_file: true, // NB: Probably not essential to keep this.
maybe_prompt_token: None, // NB: Not used for bg removal.
maybe_batch_token: None, // NB: Not used for bg removal.
maybe_generation_provider: None,
}).await
.map_err(|err| {
error!("Failed to upload image media file: {:?}", err);
@@ -299,6 +299,7 @@ async fn try_upload(
maybe_creds: Some(creds),
path: download_path,
maybe_prompt_token,
maybe_generation_provider: Some(GenerationProvider::Fal),
}).await?;
result.media_file_token
}
@@ -307,6 +308,7 @@ async fn try_upload(
api_host: &app_env_configs.storyteller_host,
maybe_creds: Some(creds),
path: download_path,
maybe_generation_provider: Some(GenerationProvider::Fal),
}).await?;
result.media_file_token
}
@@ -318,6 +320,7 @@ async fn try_upload(
is_intermediate_system_file: false,
maybe_prompt_token,
maybe_batch_token,
maybe_generation_provider: Some(GenerationProvider::Fal),
}).await?;
result.media_file_token
}
@@ -26,6 +26,7 @@ pub async fn upload_image_bytes_as_media_file(
image_bytes,
image_type: ImageType::Png,
is_intermediate_system_file: false,
maybe_generation_provider: None,
}).await.map_err(|err| {
log::error!("Failed to upload image bytes as media file: {:?}", err);
GenerateError::from(err)
@@ -36,6 +36,7 @@ pub async fn upload_mask_image_bytes_as_media_file(
image_bytes: normalized.0,
image_type: ImageType::Png,
is_intermediate_system_file: true,
maybe_generation_provider: None,
}).await.map_err(|err| {
error!("Failed to upload mask image bytes: {:?}", err);
GenerateError::from(err)
@@ -219,6 +219,7 @@ async fn upload_images_to_storyteller(
is_intermediate_system_file: false,
maybe_prompt_token: Some(&prompt_response.prompt_token),
maybe_batch_token: Some(&batch_token),
maybe_generation_provider: Some(GenerationProvider::Grok),
}).await;
match result {
@@ -277,6 +277,7 @@ async fn upload_grok_video(
maybe_creds: Some(&storyteller_creds),
path: &download_path,
maybe_prompt_token: Some(&prompt_response.prompt_token),
maybe_generation_provider: Some(GenerationProvider::Grok),
}).await;
match result {
@@ -309,6 +309,7 @@ async fn upload_midjourney_batch(
is_intermediate_system_file: false,
maybe_prompt_token: Some(&prompt_response.prompt_token),
maybe_batch_token: Some(&batch_token),
maybe_generation_provider: Some(GenerationProvider::Midjourney),
}).await;
match result {
@@ -6,6 +6,7 @@ use artcraft_client::credentials::storyteller_credential_set::StorytellerCredent
use artcraft_client::endpoints::media_files::upload_image_media_file_from_file::{upload_image_media_file_from_file, UploadImageFromFileArgs};
use artcraft_client::endpoints::media_files::upload_video_media_file_from_file::{upload_video_media_file_from_file, UploadVideoFromFileArgs};
use artcraft_client::utils::api_host::ApiHost;
use enums::common::generation_provider::GenerationProvider;
use tokens::tokens::batch_generations::BatchGenerationToken;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::prompts::PromptToken;
@@ -47,6 +48,7 @@ pub(super) async fn upload_generation_to_backend<P: AsRef<Path>>(args: UploadGen
is_intermediate_system_file: false,
maybe_prompt_token: args.maybe_prompt_token,
maybe_batch_token: None, // TODO: This should be added soon.
maybe_generation_provider: Some(GenerationProvider::Sora),
}).await?;
info!("Uploaded image to API backend: {:?}", result.media_file_token);
@@ -58,6 +60,7 @@ pub(super) async fn upload_generation_to_backend<P: AsRef<Path>>(args: UploadGen
maybe_creds: Some(&args.storyteller_creds),
path: args.upload_path,
maybe_prompt_token: args.maybe_prompt_token,
maybe_generation_provider: Some(GenerationProvider::Sora),
}).await?;
info!("Uploaded video to API backend: {:?}", result.media_file_token);
@@ -266,6 +266,7 @@ async fn upload_spz_splat(
api_host: &app_env_configs.storyteller_host,
maybe_creds: Some(&storyteller_creds),
path: &spz_download_filename,
maybe_generation_provider: Some(GenerationProvider::WorldLabs),
}).await;
match result {
+86 -168
View File
File diff suppressed because it is too large. Load diff