mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 17:08:13 +00:00
set generation provider in tauri
This commit is contained in:
1 parent
8fc4eb800f
commit
01463e5a42
18 files changed
+141
-182
No files matched your search
+7
-4
@@ -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);
|
||||
|
||||
+8
@@ -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);
|
||||
|
||||
+7
-4
@@ -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);
|
||||
|
||||
+7
-1
@@ -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);
|
||||
|
||||
+7
-3
@@ -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);
|
||||
|
||||
+4
-2
@@ -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 {
|
||||
|
||||
+1
@@ -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);
|
||||
|
||||
+1
@@ -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);
|
||||
|
||||
+1
@@ -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);
|
||||
|
||||
+3
@@ -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
|
||||
}
|
||||
|
||||
+1
@@ -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)
|
||||
|
||||
+1
@@ -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)
|
||||
|
||||
+1
@@ -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 {
|
||||
|
||||
+1
@@ -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 {
|
||||
|
||||
+1
@@ -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 {
|
||||
|
||||
+3
@@ -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);
|
||||
|
||||
+1
@@ -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 {
|
||||
|
||||
Generated
+86
-168
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user