use amp_rs::ApiClient;
use dotenvy;
use std::env;
fn print_usage() {
println!("Usage:");
println!(" cargo run --example register_asset -- <ASSET_UUID>");
println!();
println!("Arguments:");
println!(
" ASSET_UUID The UUID of the asset to register with the Blockstream Asset Registry"
);
println!();
println!("Examples:");
println!(" cargo run --example register_asset -- 9bcd9987-9544-439f-80b3-6d76b072fd9b");
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = env::args().collect();
if args.len() > 1 && (args[1] == "--help" || args[1] == "-h") {
print_usage();
return Ok(());
}
if args.len() < 2 {
eprintln!("❌ Error: Asset UUID is required");
eprintln!();
print_usage();
std::process::exit(1);
}
let asset_uuid = &args[1];
println!("🚀 Starting Asset Registration Example");
println!();
println!("Configuration:");
println!(" - Asset UUID: {}", asset_uuid);
println!();
println!("📁 Loading environment variables");
dotenvy::dotenv().ok();
let amp_username =
env::var("AMP_USERNAME").map_err(|_| "AMP_USERNAME environment variable not set")?;
let _amp_password =
env::var("AMP_PASSWORD").map_err(|_| "AMP_PASSWORD environment variable not set")?;
println!("✅ Environment variables loaded");
println!(" - AMP Username: {}", amp_username);
env::set_var("AMP_TESTS", "live");
println!("🌐 Creating ApiClient");
let api_client = ApiClient::new()
.await
.map_err(|e| format!("Failed to create ApiClient: {}", e))?;
println!("✅ ApiClient created successfully");
println!("🔍 Verifying asset exists");
match api_client.get_asset(asset_uuid).await {
Ok(asset_details) => {
println!("✅ Asset verified successfully");
println!(" - Name: {}", asset_details.name);
println!(" - Ticker: {:?}", asset_details.ticker);
println!(" - Domain: {:?}", asset_details.domain);
}
Err(e) => {
eprintln!("❌ Failed to verify asset: {}", e);
eprintln!(" Please check that the asset UUID is correct");
return Err(e.into());
}
}
println!();
println!("📝 Registering asset with Blockstream Asset Registry");
match api_client.register_asset(asset_uuid).await {
Ok(response) => {
println!("🎉 Asset registration successful!");
println!();
if let Some(message) = &response.message {
println!("Message: {}", message);
}
if let Some(asset) = &response.asset_data {
println!();
println!("Asset Details:");
println!(" - Name: {}", asset.name);
println!(" - Asset UUID: {}", asset.asset_uuid);
println!(" - Asset ID: {}", asset.asset_id);
if let Some(ticker) = &asset.ticker {
println!(" - Ticker: {}", ticker);
}
if let Some(domain) = &asset.domain {
println!(" - Domain: {}", domain);
}
println!(" - Is Registered: {}", asset.is_registered);
println!(" - Is Authorized: {}", asset.is_authorized);
println!(" - Precision: {}", asset.precision);
}
}
Err(e) => {
eprintln!("❌ Failed to register asset: {}", e);
return Err(e.into());
}
}
println!();
println!("✅ Asset registration example completed successfully!");
Ok(())
}