use std::{env, str::FromStr as _, sync::Arc};
use earthmc::{client::ClientBuilder, retry_strategy::NeverRetry};
use parking_lot::Mutex;
use uuid::Uuid;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv()?;
let api_key = env::var("API_KEY")?;
let player_uuid = Uuid::from_str(&env::var("PLAYER_UUID")?)?;
eprintln!(
"querying shops for {player_uuid}; API_KEY length={}",
api_key.len()
);
let mut client_builder = ClientBuilder::default();
client_builder.retry_strategy(Arc::new(Mutex::new(NeverRetry)));
if let Ok(user_agent) = env::var("USER_AGENT") {
eprintln!("using USER_AGENT={user_agent:?}");
client_builder.reqwest_client(
reqwest::ClientBuilder::new()
.user_agent(user_agent)
.build()?,
);
}
let client = client_builder.api_key(api_key).build();
let query = [player_uuid].to_vec();
let results = match client.shops(query, None).await {
Ok(results) => results,
Err(error) => {
eprintln!("shop query failed: {error:?}");
return Err(error.into());
}
};
for result in results {
println!("{:?}", result);
}
Ok(())
}