diff --git a/Cargo.lock b/Cargo.lock index 47e7ca4634..10cbe3ac44 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10633,6 +10633,7 @@ dependencies = [ "log", "openai_sora_client", "r2d2_redis", + "reqwest 0.12.15", "workspace-build-acceleration", ] diff --git a/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs b/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs index 2390df9ba2..bbf6aa29bc 100644 --- a/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs +++ b/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs @@ -11,9 +11,9 @@ use image::codecs::png::{CompressionType, FilterType, PngEncoder}; use image::{DynamicImage, ImageReader}; use log::{debug, error, info}; use openai_sora_client::credentials::SoraCredentials; +use openai_sora_client::creds::credential_migration::CredentialMigrationRef; use openai_sora_client::requests::image_gen::common::{ImageSize, NumImages}; use openai_sora_client::requests::image_gen::sora_image_gen_remix::{sora_image_gen_remix, SoraImageGenRemixRequest}; -use openai_sora_client::requests::sentinel_refresh::refresh_sentinel; use openai_sora_client::requests::upload::upload_media_from_bytes::sora_media_upload_from_bytes; use openai_sora_client::requests::upload::upload_media_from_file::{sora_media_upload_from_file, SoraMediaUploadRequest}; use serde_derive::Deserialize; @@ -22,7 +22,6 @@ use std::io::Cursor; use storyteller_client::media_files::get_media_file::get_media_file; use storyteller_client::utils::api_host::ApiHost; use tauri::{AppHandle, Manager, State}; -use openai_sora_client::creds::credential_migration::CredentialMigrationRef; use tokens::tokens::media_files::MediaFileToken; #[derive(Deserialize)] diff --git a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs index a88160daa7..985fbf6b87 100644 --- a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs +++ b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs @@ -5,12 +5,11 @@ use anyhow::anyhow; use errors::AnyhowResult; use log::{error, info, warn}; use openai_sora_client::credentials::SoraCredentials; -use openai_sora_client::requests::sentinel_refresh::generate::token::generate_token; -use openai_sora_client::requests::sentinel_refresh::refresh_sentinel; -use std::fs::OpenOptions; -use std::io::Write; use openai_sora_client::creds::sora_credential_set::SoraCredentialSet; use openai_sora_client::creds::sora_sentinel::SoraSentinel; +use openai_sora_client::requests::sentinel_refresh::generate::token::generate_token; +use std::fs::OpenOptions; +use std::io::Write; #[derive(Clone)] pub struct SoraCredentialManager { diff --git a/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/mod.rs b/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/mod.rs index 869169304e..118c66d72d 100644 --- a/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/mod.rs +++ b/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/mod.rs @@ -1,4 +1 @@ -pub use refresh::refresh_sentinel; -pub mod refresh; - pub mod generate; \ No newline at end of file diff --git a/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_from_file.rs b/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_from_file.rs index df6c8981aa..2114ea12d0 100644 --- a/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_from_file.rs +++ b/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_from_file.rs @@ -1,10 +1,10 @@ use crate::credentials::SoraCredentials; +use crate::creds::credential_migration::CredentialMigrationRef; use crate::requests::upload::upload_media_http_request::{upload_media_http_request, SoraMediaUploadResponse}; use errors::AnyhowResult; use std::path::Path; use tokio::fs::File; use tokio::io::AsyncReadExt; -use crate::creds::credential_migration::CredentialMigrationRef; /// Try to prevent buffer reallocations. /// There's a better way to implement this. @@ -43,11 +43,11 @@ pub async fn sora_media_upload_from_file>(file_path: P, creds: Cr #[cfg(test)] mod tests { use crate::credentials::SoraCredentials; + use crate::creds::credential_migration::CredentialMigrationRef; use crate::requests::upload::upload_media_from_file::sora_media_upload_from_file; use errors::AnyhowResult; use std::fs::read_to_string; use testing::test_file_path::test_file_path; - use crate::creds::credential_migration::CredentialMigrationRef; #[ignore] // You can manually run "ignore" tests in the IDE, but they won't run in CI. #[tokio::test] diff --git a/crates/lib/shared_service_components/Cargo.toml b/crates/lib/shared_service_components/Cargo.toml index 573d84ffed..72b4116d5d 100644 --- a/crates/lib/shared_service_components/Cargo.toml +++ b/crates/lib/shared_service_components/Cargo.toml @@ -27,6 +27,7 @@ errors = { workspace = true } anyhow = { workspace = true } log = { workspace = true } r2d2_redis = "0.14.0" +reqwest = { workspace = true, features = ["multipart", "gzip"] } [dev-dependencies] # None yet diff --git a/crates/lib/shared_service_components/src/lib.rs b/crates/lib/shared_service_components/src/lib.rs index 8cf4364139..c93113bb58 100644 --- a/crates/lib/shared_service_components/src/lib.rs +++ b/crates/lib/shared_service_components/src/lib.rs @@ -1,3 +1,4 @@ //! This library contains code shared between `storyteller-web` and jobs. pub mod sora_redis_credentials; +pub mod sora_redis_sentinel_refresh; diff --git a/crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/mod.rs b/crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/mod.rs new file mode 100644 index 0000000000..54c5907c22 --- /dev/null +++ b/crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/mod.rs @@ -0,0 +1 @@ +pub mod refresh; \ No newline at end of file diff --git a/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/refresh.rs b/crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/refresh.rs similarity index 62% rename from crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/refresh.rs rename to crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/refresh.rs index 2cf98be0bc..2280d097d1 100644 --- a/crates/lib/api_clients/openai_sora_client/src/requests/sentinel_refresh/refresh.rs +++ b/crates/lib/shared_service_components/src/sora_redis_sentinel_refresh/refresh.rs @@ -1,24 +1,19 @@ -// Send a POST request to env variable SORA_SENTINEL_REFRESH_URL +/// Send a POST request to env variable SORA_SENTINEL_REFRESH_URL +use errors::AnyhowResult; use reqwest::Client; use std::env; -use errors::AnyhowResult; - const SORA_SENTINEL_REFRESH_URL: &str = "http://oai-token-server/refresh_token"; - -// Refresh the Sora sentinel -// The response body does _not_ contain the new sentinel -// We should read it again from redis or generate a new one here -// For now we refresh in the server handler +/// Refresh the Sora sentinel +/// The response body does _not_ contain the new sentinel +/// We should read it again from redis or generate a new one here +/// For now we refresh in the server handler pub async fn refresh_sentinel() -> AnyhowResult { let client = Client::new(); let url = env::var("SORA_SENTINEL_REFRESH_URL").unwrap_or(SORA_SENTINEL_REFRESH_URL.to_string()); - let response = client.post(url).send().await?; - let body = response.text().await?; - Ok(body) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/prompt/enqueue_studio_image_generation_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/prompt/enqueue_studio_image_generation_handler.rs index 11b02197aa..5462eb74a2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/prompt/enqueue_studio_image_generation_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/prompt/enqueue_studio_image_generation_handler.rs @@ -17,7 +17,7 @@ use mysql_queries::queries::media_files::get::get_media_file::get_media_file; use openai_sora_client::credentials::SoraCredentials; use openai_sora_client::requests::image_gen::SoraError; use openai_sora_client::requests::sentinel_refresh::generate::token::generate_token; -use openai_sora_client::requests::sentinel_refresh::refresh_sentinel; +use shared_service_components::sora_redis_sentinel_refresh::refresh::refresh_sentinel; use serde::Deserialize; use serde::Serialize; use shared_service_components::sora_redis_credentials::keys::RedisSoraCredentialSubkey;