mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-14 13:52:11 +00:00
save worldlabs tokens; update API url for world polling
This commit is contained in:
1 parent
6f9b637da0
commit
8732da452e
8 files changed
+93
-27
No files matched your search
@@ -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);
|
||||
}
|
||||
}
|
||||
+11
-16
@@ -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";
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::fs::read_to_string;
|
||||
|
||||
#[cfg(test)]
|
||||
pub (crate) fn get_test_bearer_token_raw() -> AnyhowResult<String> {
|
||||
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)
|
||||
|
||||
@@ -4,8 +4,8 @@ use std::fs::read_to_string;
|
||||
|
||||
#[cfg(test)]
|
||||
pub (crate) fn get_test_cookies() -> AnyhowResult<String> {
|
||||
//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)
|
||||
}
|
||||
|
||||
@@ -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<String> {
|
||||
//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<WorldLabsRefreshToken> {
|
||||
let token = get_test_refresh_token()?;
|
||||
Ok(WorldLabsRefreshToken::new(token))
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
pub mod get_test_cookies;
|
||||
pub mod get_test_bearer_token;
|
||||
pub mod setup_test_logging;
|
||||
pub mod setup_test_logging;
|
||||
pub mod get_test_refresh_token;
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
+25
-6
@@ -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(())
|
||||
|
||||
Reference in new issue
Block a user