diff --git a/crates/api_clients/world_labs_client/src/api/requests/worlds/poll_world_status.rs b/crates/api_clients/world_labs_client/src/api/requests/worlds/poll_world_status.rs index b896b46233..ec28151493 100644 --- a/crates/api_clients/world_labs_client/src/api/requests/worlds/poll_world_status.rs +++ b/crates/api_clients/world_labs_client/src/api/requests/worlds/poll_world_status.rs @@ -26,7 +26,10 @@ use wreq::header::{ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, AUTHORIZATION, CACH use wreq::Client; use wreq_util::Emulation; -const BASE_URL : &str = "https://marble2-kgw-prod-iac1.wlt-ai.art/api/v1/worlds"; +const BASE_URL : &str = "https://api.worldlabs.ai/api/v1/worlds"; + +// Note: WorldLabs is phasing out the old URL scheme: +// const BASE_URL : &str = "https://marble2-kgw-prod-iac1.wlt-ai.art/api/v1/worlds"; fn get_url(world_id: &WorldObjectId) -> String { format!("{}/{}", BASE_URL, world_id.0) @@ -183,4 +186,27 @@ mod tests { assert_eq!(1, 2); } + + #[tokio::test] + #[ignore] // Client side tests only + async fn test_request_2() { + setup_test_logging(LevelFilter::Debug); + + let cookies = get_typed_test_cookies().unwrap(); + let bearer_token = get_test_bearer_token().unwrap(); + + let world_id = WorldObjectId("e739b11e-6039-49c7-b73d-b79e1b28e295".to_string()); + + let response = poll_world_status(PollWorldStatusArgs { + cookies: &cookies, + bearer_token: &bearer_token, + world_id: &world_id, + request_timeout: None, + }).await.unwrap(); + + println!("Is complete: {}", response.is_complete); + println!("Spz Url: {}", response.spz_splat_url.unwrap_or_else(|| "incomplete".to_string())); + + assert_eq!(1, 2); + } } diff --git a/crates/api_clients/world_labs_client/src/recipes/upload_image_and_create_world_with_retry.rs b/crates/api_clients/world_labs_client/src/recipes/upload_image_and_create_world_with_retry.rs index 96c0593f74..47fd48badb 100644 --- a/crates/api_clients/world_labs_client/src/recipes/upload_image_and_create_world_with_retry.rs +++ b/crates/api_clients/world_labs_client/src/recipes/upload_image_and_create_world_with_retry.rs @@ -277,12 +277,10 @@ pub async fn upload_image_and_create_world_with_retry(args: UploadImageAndCreate #[cfg(test)] mod tests { - use crate::credentials::world_labs_bearer_token::WorldLabsBearerToken; - use crate::credentials::world_labs_cookies::WorldLabsCookies; - use crate::credentials::worldlabs_refresh_token::WorldLabsRefreshToken; use crate::recipes::upload_image_and_create_world_with_retry::{upload_image_and_create_world_with_retry, FileBytesOrPath, UploadImageAndCreateWorldWithRetryArgs}; use crate::test_utils::get_test_bearer_token::get_test_bearer_token; use crate::test_utils::get_test_cookies::get_typed_test_cookies; + use crate::test_utils::get_test_refresh_token::get_typed_test_refresh_token; use crate::test_utils::setup_test_logging::setup_test_logging; use filesys::file_read_bytes::file_read_bytes; use log::LevelFilter; @@ -294,10 +292,10 @@ mod tests { let cookies = get_typed_test_cookies().unwrap(); let bearer_token = get_test_bearer_token().unwrap(); - let refresh_token = WorldLabsRefreshToken::new("AMf-vBy91tuAOoeCwbXV3zNcFAM79ayEKb_cRmTBhVLAIRB1kDzswDgenVnxHfgbmUP95YTlJkpSwJUK3eTZv0iV1An-rZUVII8tOoyLNpV-O1dhytsMXFjR5Mc_hRxUhwuRphUZT6Zub9T1Twd8OL88twFnN-qlwq12W_eRZnEC_IExX0-j6vhfRbVXY0Bf9F1jddeaN7FMgagVzlIt7c7hbboR3XRlU61oBhuEw90ynHWPhDrnTVBtT9xI_TrNFr-v6mMh3M1DGFN9iaHVl74fEwbV6VanUGua55uxdVgia-SyOkYboKRGanWof2g69vZNvREdlMiNFYfWDtsHgcd_DaS6oemS5CVoSbK8sRREUAXHRCmwO5OyZehacnKstyy0TnNwZuvtn_KMzpk3ZmLM-Q-yERlJvpd9rHU-d-uV2R-yZIWgT3rshE9WyK9i4p731RgXfEC6".to_string()); + let refresh_token = get_typed_test_refresh_token().unwrap(); //let file_path = "/home/bt/Pictures/locations/island.jpg"; - let file_path = "/Users/bt/Pictures/Midjourney/dusk_house.jpeg"; + let file_path = "/Users/bt/Pictures/Midjourney/rocks.jpeg"; let file_bytes = file_read_bytes(file_path).unwrap(); println!("File bytes len: {}", file_bytes.len()); @@ -310,8 +308,12 @@ mod tests { file: FileBytesOrPath::Bytes(file_bytes), }).await.unwrap(); - println!("Upload URL: {}", results.image_upload_url); println!("Object ID: {}", results.run_id.0); + println!("World ID: {}", results.world_id.0); + println!("Upload URL: {}", results.image_upload_url); + println!("Has new access tokens: {}", results.maybe_new_access_tokens.is_some()); + + assert_eq!(1, 2); } @@ -320,16 +322,9 @@ mod tests { async fn test_requests_2() { setup_test_logging(LevelFilter::Debug); - // bt@brand.io - let cookies = ""; - let bearer_token = "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijk4OGQ1YTM3OWI3OGJkZjFlNTBhNDA5MTEzZjJiMGM3NWU0NTJlNDciLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiQnJhbmRvbiBUaG9tYXMiLCJwaWN0dXJlIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jS0lucl8yWGJ2Z1VERUxNOEpCTGdfa2tKbVpxWl9WcTlzZkI2bVR4VmQzc1NJRk4tST1zOTYtYyIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS93bHQtdHJhaW5pbmctZ3NjIiwiYXVkIjoid2x0LXRyYWluaW5nLWdzYyIsImF1dGhfdGltZSI6MTc2MDE3Nzk3OCwidXNlcl9pZCI6IjA1c0dhaHRySWdVMjVMaXR5NjhoZjRpMmV4SjIiLCJzdWIiOiIwNXNHYWh0cklnVTI1TGl0eTY4aGY0aTJleEoyIiwiaWF0IjoxNzY2MTI2ODg4LCJleHAiOjE3NjYxMzA0ODgsImVtYWlsIjoiYnRAYnJhbmQuaW8iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJnb29nbGUuY29tIjpbIjEwNjEwODI2NzgzNTYyOTEwMTc1OSJdLCJlbWFpbCI6WyJidEBicmFuZC5pbyJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.YLXZHg0rzMzyhhyJsO3DSMhU8GjnxtQtg1GiDwaxZjuybmabqOcR_b4C2lE2XwESg_dDYnIkmdas9wsHshy2bGPCAAtrinQpxTHWhIDxy0bsF8yW0BCOszwVseiTkXd6vveaGYH06EvH-nM4Q5AB_oKbsgRyMEbXhepvX7SlrmeaXxqldCLRalDj6gcEIY_TSwMmjnZ6-sFMPe92YjLY1ITPRx7S3YyWNwBG6mVpgoHcHudNAJ4TFxborZlhC1zpF0NDgtIhN5ITg0I1P0A-JTaBTJHukQwCPKhifFRA1kfcxzbAoZyPiPw2DdgXpDDnNzXUYgnaOOVyGs96Tx8hOQ"; - let refresh_token = "AMf-vByUgA0J9S93vULECe-sD50cbR85AFVYF60gKAmLFF1MBYwXlKRJCsv7z3oSpLtP0ApyOU5fAl52qHWM2U0yKgEu5gQ5UCUDt5SEG4UBRHWvHEmLLcu-Zl04Fq4ljocSEO3qJzuX1wyshmptZxlDPRkjdLYgyn-Kp03woI2yRPKLuQF5hQtABHabsNUh9Zhs129sgxuUlOuw4zsFI4L8UdE3bEuF3k6Mic7KlE3440YwyQ8Qtmk9zHtXIx2ob56N-1WTGSqwMUuQ1mX4OOvLve9bw2zDW3UzchomTWkh732886RPrP-DNRkPbO3FejUEMxuYQFWYX3EEeIEdfNGXFNGPL1dNniSXlSaKadpX699Ishjviv-x9o-pPQa3zoAj3NzWLyd8mn5rDBh9qAO_iDETaeo01Sjhb4mGYfAWZ-g4S6nW778"; - - //let cookies = get_typed_test_cookies().unwrap(); - - let bearer_token = WorldLabsBearerToken::new(bearer_token.to_string()); - let refresh_token = WorldLabsRefreshToken::new(refresh_token.to_string()); - let cookies = WorldLabsCookies::new(cookies.to_string()); + let cookies = get_typed_test_cookies().unwrap(); + let bearer_token = get_test_bearer_token().unwrap(); + let refresh_token = get_typed_test_refresh_token().unwrap(); //let file_path = "/home/bt/Pictures/locations/island.jpg"; let file_path = "/Users/bt/Pictures/Midjourney/train_ghibli.jpeg"; diff --git a/crates/api_clients/world_labs_client/src/test_utils/get_test_bearer_token.rs b/crates/api_clients/world_labs_client/src/test_utils/get_test_bearer_token.rs index 5a55d3fa75..93aabc641e 100644 --- a/crates/api_clients/world_labs_client/src/test_utils/get_test_bearer_token.rs +++ b/crates/api_clients/world_labs_client/src/test_utils/get_test_bearer_token.rs @@ -4,7 +4,7 @@ use std::fs::read_to_string; #[cfg(test)] pub (crate) fn get_test_bearer_token_raw() -> AnyhowResult { - let cookies = read_to_string("/Users/bt/Artcraft/credentials/world_labs_bearer.txt")?; + let cookies = read_to_string("/Users/bt/Artcraft/credentials/worldlabs_bearer.txt")?; //let cookies = read_to_string("/home/bt/Artcraft/credentials/world_labs_bearer.txt")?; let cookies = cookies.trim().to_string(); Ok(cookies) diff --git a/crates/api_clients/world_labs_client/src/test_utils/get_test_cookies.rs b/crates/api_clients/world_labs_client/src/test_utils/get_test_cookies.rs index 0299e4d2fe..3fd53c1a9c 100644 --- a/crates/api_clients/world_labs_client/src/test_utils/get_test_cookies.rs +++ b/crates/api_clients/world_labs_client/src/test_utils/get_test_cookies.rs @@ -4,8 +4,8 @@ use std::fs::read_to_string; #[cfg(test)] pub (crate) fn get_test_cookies() -> AnyhowResult { - //let cookies = read_to_string("/home/bt/Artcraft/credentials/world_labs_cookies.txt")?; - let cookies = read_to_string("/Users/bt/Artcraft/credentials/world_labs_cookies.txt")?; + //let cookies = read_to_string("/home/bt/Artcraft/credentials/worldlabs_cookies.txt")?; + let cookies = read_to_string("/Users/bt/Artcraft/credentials/worldlabs_cookies.txt")?; let cookies = cookies.trim().to_string(); Ok(cookies) } diff --git a/crates/api_clients/world_labs_client/src/test_utils/get_test_refresh_token.rs b/crates/api_clients/world_labs_client/src/test_utils/get_test_refresh_token.rs new file mode 100644 index 0000000000..385a868a17 --- /dev/null +++ b/crates/api_clients/world_labs_client/src/test_utils/get_test_refresh_token.rs @@ -0,0 +1,17 @@ +use crate::credentials::worldlabs_refresh_token::WorldLabsRefreshToken; +use errors::AnyhowResult; +use std::fs::read_to_string; + +#[cfg(test)] +pub (crate) fn get_test_refresh_token() -> AnyhowResult { + //let cookies = read_to_string("/home/bt/Artcraft/credentials/worldlabs_cookies.txt")?; + let token = read_to_string("/Users/bt/Artcraft/credentials/worldlabs_refresh.txt")?; + let token = token.trim().to_string(); + Ok(token) +} + +#[cfg(test)] +pub (crate) fn get_typed_test_refresh_token() -> AnyhowResult { + let token = get_test_refresh_token()?; + Ok(WorldLabsRefreshToken::new(token)) +} diff --git a/crates/api_clients/world_labs_client/src/test_utils/mod.rs b/crates/api_clients/world_labs_client/src/test_utils/mod.rs index 634f310033..ef9d0b8e3c 100644 --- a/crates/api_clients/world_labs_client/src/test_utils/mod.rs +++ b/crates/api_clients/world_labs_client/src/test_utils/mod.rs @@ -1,3 +1,4 @@ pub mod get_test_cookies; pub mod get_test_bearer_token; -pub mod setup_test_logging; \ No newline at end of file +pub mod setup_test_logging; +pub mod get_test_refresh_token; \ No newline at end of file diff --git a/crates/desktop/artcraft/src/core/state/data_dir/app_credentials_dir.rs b/crates/desktop/artcraft/src/core/state/data_dir/app_credentials_dir.rs index b7fe13b1af..31f4ba8f77 100644 --- a/crates/desktop/artcraft/src/core/state/data_dir/app_credentials_dir.rs +++ b/crates/desktop/artcraft/src/core/state/data_dir/app_credentials_dir.rs @@ -69,4 +69,12 @@ impl AppCredentialsDir { pub fn get_worldlabs_cookies_path(&self) -> PathBuf { self.path.join("worldlabs_cookies.txt") } + + pub fn get_worldlabs_bearer_path(&self) -> PathBuf { + self.path.join("worldlabs_bearer.txt") + } + + pub fn get_worldlabs_refresh_path(&self) -> PathBuf { + self.path.join("worldlabs_refresh.txt") + } } diff --git a/crates/desktop/artcraft/src/services/worldlabs/state/worldlabs_credential_manager.rs b/crates/desktop/artcraft/src/services/worldlabs/state/worldlabs_credential_manager.rs index a1ba67c277..778bed612d 100644 --- a/crates/desktop/artcraft/src/services/worldlabs/state/worldlabs_credential_manager.rs +++ b/crates/desktop/artcraft/src/services/worldlabs/state/worldlabs_credential_manager.rs @@ -192,8 +192,12 @@ impl WorldlabsCredentialManager { .map(|cookies| cookies.to_serializable()), user_id: None, // TODO user_email: None, // TODO - bearer_token: creds.world_labs_bearer_token.map(|token| token.to_raw_string()), - refresh_token: creds.world_labs_refresh_token.map(|token| token.to_raw_string()), + bearer_token: creds.world_labs_bearer_token + .as_ref() + .map(|token| token.to_raw_string()), + refresh_token: creds.world_labs_refresh_token + .as_ref() + .map(|token| token.to_raw_string()), }; let path = self.app_data_root.credentials_dir().get_worldlabs_state_path(); @@ -202,10 +206,25 @@ impl WorldlabsCredentialManager { std::fs::write(path, serialized)?; // TODO: This is just for building the client and testing. - if let Some(cookies) = creds.browser_cookies.as_ref() { - let cookies_header = cookies.to_cookie_string(); - let path = self.app_data_root.credentials_dir().get_worldlabs_cookies_path(); - std::fs::write(path, cookies_header)?; + { + if let Some(cookies) = creds.browser_cookies.as_ref() { + let cookies_header = cookies.to_cookie_string(); + let path = self.app_data_root.credentials_dir().get_worldlabs_cookies_path(); + std::fs::write(path, cookies_header)?; + } + + // TODO: This is just for building the client and testing. + if let Some(bearer) = creds.world_labs_bearer_token.as_ref() { + let value = bearer.to_raw_string(); + let path = self.app_data_root.credentials_dir().get_worldlabs_bearer_path(); + std::fs::write(path, value)?; + } + + if let Some(refresh) = creds.world_labs_refresh_token.as_ref() { + let value = refresh.to_raw_string(); + let path = self.app_data_root.credentials_dir().get_worldlabs_refresh_path(); + std::fs::write(path, value)?; + } } Ok(())