From c30308d43c486b7d69afc6f1a84eb61d885d8dee Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 1 Oct 2025 23:40:15 -0400 Subject: [PATCH] internal utils package --- .../openai_sora_client/src/creds/sora_jwt_bearer_token.rs | 2 +- crates/api_clients/openai_sora_client/src/lib.rs | 2 +- .../src/recipes/maybe_upgrade_or_renew_session.rs | 2 +- .../src/requests/bearer/generate_bearer_with_cookie.rs | 4 ++-- .../src/requests/image_gen/image_gen_status.rs | 2 +- .../openai_sora_client/src/requests/list_media/list_media.rs | 2 +- .../src/requests/sentinel_refresh/generate/token.rs | 4 ++-- .../src/requests/upload/upload_media_http_request.rs | 2 +- crates/api_clients/openai_sora_client/src/utils/mod.rs | 5 +---- .../{utils => utils_internal}/classify_general_http_error.rs | 2 +- .../classify_general_http_status_code_and_body.rs | 0 .../{utils => utils_internal}/lightweight_sora_jwt_parse.rs | 2 +- .../api_clients/openai_sora_client/src/utils_internal/mod.rs | 3 +++ .../storyteller/windows/storyteller_billing_window_thread.rs | 1 - 14 files changed, 16 insertions(+), 17 deletions(-) rename crates/api_clients/openai_sora_client/src/{utils => utils_internal}/classify_general_http_error.rs (82%) rename crates/api_clients/openai_sora_client/src/{utils => utils_internal}/classify_general_http_status_code_and_body.rs (100%) rename crates/api_clients/openai_sora_client/src/{utils => utils_internal}/lightweight_sora_jwt_parse.rs (98%) create mode 100644 crates/api_clients/openai_sora_client/src/utils_internal/mod.rs diff --git a/crates/api_clients/openai_sora_client/src/creds/sora_jwt_bearer_token.rs b/crates/api_clients/openai_sora_client/src/creds/sora_jwt_bearer_token.rs index 39cc77aadd..b062a41414 100644 --- a/crates/api_clients/openai_sora_client/src/creds/sora_jwt_bearer_token.rs +++ b/crates/api_clients/openai_sora_client/src/creds/sora_jwt_bearer_token.rs @@ -1,5 +1,5 @@ use crate::error::sora_error::SoraError; -use crate::utils::lightweight_sora_jwt_parse::{lightweight_sora_jwt_parse, SoraJwtClaims}; +use crate::utils_internal::lightweight_sora_jwt_parse::{lightweight_sora_jwt_parse, SoraJwtClaims}; /// Sora bearer tokens are JWT tokens that can be minted with a valid cookie/session. #[derive(Clone)] diff --git a/crates/api_clients/openai_sora_client/src/lib.rs b/crates/api_clients/openai_sora_client/src/lib.rs index af59c35e8a..200769bbdb 100644 --- a/crates/api_clients/openai_sora_client/src/lib.rs +++ b/crates/api_clients/openai_sora_client/src/lib.rs @@ -1,5 +1,5 @@ pub (crate) mod constants; - +pub (crate) mod utils_internal; pub mod creds; pub mod error; pub mod recipes; diff --git a/crates/api_clients/openai_sora_client/src/recipes/maybe_upgrade_or_renew_session.rs b/crates/api_clients/openai_sora_client/src/recipes/maybe_upgrade_or_renew_session.rs index fed78d23a4..6e658d5fc5 100644 --- a/crates/api_clients/openai_sora_client/src/recipes/maybe_upgrade_or_renew_session.rs +++ b/crates/api_clients/openai_sora_client/src/recipes/maybe_upgrade_or_renew_session.rs @@ -1,13 +1,13 @@ use crate::creds::sora_credential_set::SoraCredentialSet; use crate::creds::sora_jwt_bearer_token::SoraJwtBearerToken; use crate::creds::sora_sentinel::SoraSentinel; +use crate::error::sora_error::SoraError; use crate::requests::bearer::generate_bearer_with_cookie::generate_bearer_with_cookie; use crate::requests::sentinel_refresh::generate::token::generate_token; use chrono::{DateTime, TimeDelta, Utc}; use errors::AnyhowResult; use log::info; use std::ops::Sub; -use crate::error::sora_error::SoraError; const EXPIRATION_DEADLINE : TimeDelta = TimeDelta::hours(12); diff --git a/crates/api_clients/openai_sora_client/src/requests/bearer/generate_bearer_with_cookie.rs b/crates/api_clients/openai_sora_client/src/requests/bearer/generate_bearer_with_cookie.rs index 76c8accc58..d9455ec9eb 100644 --- a/crates/api_clients/openai_sora_client/src/requests/bearer/generate_bearer_with_cookie.rs +++ b/crates/api_clients/openai_sora_client/src/requests/bearer/generate_bearer_with_cookie.rs @@ -2,8 +2,8 @@ use crate::error::sora_client_error::SoraClientError; use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; use crate::error::sora_specific_api_error::SoraSpecificApiError; -use crate::utils::classify_general_http_error::classify_general_http_error; -use crate::utils::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; +use crate::utils_internal::classify_general_http_error::classify_general_http_error; +use crate::utils_internal::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; use errors::AnyhowResult; use log::{debug, error, info}; use serde_derive::Deserialize; diff --git a/crates/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs b/crates/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs index 29505b9a4a..7b1f1726ea 100644 --- a/crates/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs +++ b/crates/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs @@ -4,7 +4,7 @@ use crate::creds::sora_jwt_bearer_token::SoraJwtBearerToken; use crate::error::sora_client_error::SoraClientError; use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; -use crate::utils::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; +use crate::utils_internal::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; use anyhow::anyhow; use errors::AnyhowResult; use log::{debug, error, warn}; diff --git a/crates/api_clients/openai_sora_client/src/requests/list_media/list_media.rs b/crates/api_clients/openai_sora_client/src/requests/list_media/list_media.rs index d29079feb8..1fcab99d55 100644 --- a/crates/api_clients/openai_sora_client/src/requests/list_media/list_media.rs +++ b/crates/api_clients/openai_sora_client/src/requests/list_media/list_media.rs @@ -4,7 +4,7 @@ use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; use crate::requests::image_gen::image_gen_status::VideoGenStatusResponse; use crate::requests::upload::upload_media_http_request::SoraMediaUploadResponse; -use crate::utils::classify_general_http_error::classify_general_http_error; +use crate::utils_internal::classify_general_http_error::classify_general_http_error; use log::{error, info}; use once_cell::sync::Lazy; use serde_derive::Deserialize; diff --git a/crates/api_clients/openai_sora_client/src/requests/sentinel_refresh/generate/token.rs b/crates/api_clients/openai_sora_client/src/requests/sentinel_refresh/generate/token.rs index 3a9798ef4e..3405b45641 100644 --- a/crates/api_clients/openai_sora_client/src/requests/sentinel_refresh/generate/token.rs +++ b/crates/api_clients/openai_sora_client/src/requests/sentinel_refresh/generate/token.rs @@ -1,15 +1,15 @@ use super::request::GenerateSentinelRefreshRequest; +use crate::constants::user_agent::USER_AGENT; use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; use crate::requests::list_media::list_media::ListMediaResponse; -use crate::utils::classify_general_http_error::classify_general_http_error; +use crate::utils_internal::classify_general_http_error::classify_general_http_error; use errors::AnyhowResult; use idempotency::uuid::generate_random_uuid; use log::error; use serde_derive::{Deserialize, Serialize}; use thiserror::Error; use wreq::Client; -use crate::constants::user_agent::USER_AGENT; const SORA_IMAGE_GEN_URL: &str = "https://chatgpt.com/backend-api/sentinel/req"; diff --git a/crates/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs b/crates/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs index 0fb703ad7d..005a0ae892 100644 --- a/crates/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs +++ b/crates/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs @@ -4,7 +4,7 @@ use crate::error::sora_client_error::SoraClientError; use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; use crate::requests::bearer::generate_bearer_with_cookie::SoraAuthResponse; -use crate::utils::classify_general_http_error::classify_general_http_error; +use crate::utils_internal::classify_general_http_error::classify_general_http_error; use log::{error, info}; use serde::Deserialize; use std::io::empty; diff --git a/crates/api_clients/openai_sora_client/src/utils/mod.rs b/crates/api_clients/openai_sora_client/src/utils/mod.rs index a7a6b5a501..d86421b410 100644 --- a/crates/api_clients/openai_sora_client/src/utils/mod.rs +++ b/crates/api_clients/openai_sora_client/src/utils/mod.rs @@ -1,4 +1 @@ -pub mod classify_general_http_error; -pub mod classify_general_http_status_code_and_body; -pub mod has_session_cookie; -pub mod lightweight_sora_jwt_parse; \ No newline at end of file +pub mod has_session_cookie; \ No newline at end of file diff --git a/crates/api_clients/openai_sora_client/src/utils/classify_general_http_error.rs b/crates/api_clients/openai_sora_client/src/utils_internal/classify_general_http_error.rs similarity index 82% rename from crates/api_clients/openai_sora_client/src/utils/classify_general_http_error.rs rename to crates/api_clients/openai_sora_client/src/utils_internal/classify_general_http_error.rs index 797437f41f..7f39bbdf78 100644 --- a/crates/api_clients/openai_sora_client/src/utils/classify_general_http_error.rs +++ b/crates/api_clients/openai_sora_client/src/utils_internal/classify_general_http_error.rs @@ -1,6 +1,6 @@ use crate::error::sora_error::SoraError; use crate::error::sora_generic_api_error::SoraGenericApiError; -use crate::utils::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; +use crate::utils_internal::classify_general_http_status_code_and_body::classify_general_http_status_code_and_body; /// This assumes the request failed and returned a non-200. /// The caller should check. diff --git a/crates/api_clients/openai_sora_client/src/utils/classify_general_http_status_code_and_body.rs b/crates/api_clients/openai_sora_client/src/utils_internal/classify_general_http_status_code_and_body.rs similarity index 100% rename from crates/api_clients/openai_sora_client/src/utils/classify_general_http_status_code_and_body.rs rename to crates/api_clients/openai_sora_client/src/utils_internal/classify_general_http_status_code_and_body.rs diff --git a/crates/api_clients/openai_sora_client/src/utils/lightweight_sora_jwt_parse.rs b/crates/api_clients/openai_sora_client/src/utils_internal/lightweight_sora_jwt_parse.rs similarity index 98% rename from crates/api_clients/openai_sora_client/src/utils/lightweight_sora_jwt_parse.rs rename to crates/api_clients/openai_sora_client/src/utils_internal/lightweight_sora_jwt_parse.rs index a393500b61..fa324fe6d9 100644 --- a/crates/api_clients/openai_sora_client/src/utils/lightweight_sora_jwt_parse.rs +++ b/crates/api_clients/openai_sora_client/src/utils_internal/lightweight_sora_jwt_parse.rs @@ -118,7 +118,7 @@ fn as_jwt_error(reason: String) -> SoraError { #[cfg(test)] mod tests { - use crate::utils::lightweight_sora_jwt_parse::lightweight_sora_jwt_parse; + use crate::utils_internal::lightweight_sora_jwt_parse::lightweight_sora_jwt_parse; #[test] fn test_sora_jwt_bearer_token() { diff --git a/crates/api_clients/openai_sora_client/src/utils_internal/mod.rs b/crates/api_clients/openai_sora_client/src/utils_internal/mod.rs new file mode 100644 index 0000000000..73261e81d8 --- /dev/null +++ b/crates/api_clients/openai_sora_client/src/utils_internal/mod.rs @@ -0,0 +1,3 @@ +pub mod classify_general_http_error; +pub mod classify_general_http_status_code_and_body; +pub mod lightweight_sora_jwt_parse; diff --git a/crates/desktop/artcraft/src/services/storyteller/windows/storyteller_billing_window_thread.rs b/crates/desktop/artcraft/src/services/storyteller/windows/storyteller_billing_window_thread.rs index 98af0b49e4..2f44f0b68f 100644 --- a/crates/desktop/artcraft/src/services/storyteller/windows/storyteller_billing_window_thread.rs +++ b/crates/desktop/artcraft/src/services/storyteller/windows/storyteller_billing_window_thread.rs @@ -24,7 +24,6 @@ use midjourney_client::credentials::cookie_store_has_auth_cookies::cookie_store_ use midjourney_client::recipes::get_user_info::{get_user_info, GetUserInfoRequest}; use openai_sora_client::creds::sora_credential_set::SoraCredentialSet; use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session; -use openai_sora_client::utils::has_session_cookie::{has_session_cookie, SessionCookiePresence}; use tauri::{AppHandle, Manager, WebviewWindow}; pub async fn storyteller_billing_window_thread(