manage_settings.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //! Settings management example for the `NpubCash` SDK
  2. //!
  3. //! This example demonstrates:
  4. //! - Setting the mint URL
  5. //! - Handling API responses
  6. //!
  7. //! Note: Quote locking is always enabled by default on the NPubCash server.
  8. //! The ability to toggle quote locking has been removed from the SDK.
  9. use std::sync::Arc;
  10. use cdk_npubcash::{JwtAuthProvider, NpubCashClient};
  11. use nostr_sdk::Keys;
  12. #[tokio::main]
  13. async fn main() -> Result<(), Box<dyn std::error::Error>> {
  14. tracing_subscriber::fmt::init();
  15. let base_url =
  16. std::env::var("NPUBCASH_URL").unwrap_or_else(|_| "https://npubx.cash".to_string());
  17. let keys = if let Ok(nsec) = std::env::var("NOSTR_NSEC") {
  18. Keys::parse(&nsec)?
  19. } else {
  20. println!("No NOSTR_NSEC found, generating new keys");
  21. Keys::generate()
  22. };
  23. println!("Public key: {}", keys.public_key());
  24. let auth_provider = Arc::new(JwtAuthProvider::new(base_url.clone(), keys));
  25. let client = NpubCashClient::new(base_url, auth_provider);
  26. println!("\n=== Setting Mint URL ===");
  27. let mint_url = "https://testnut.cashu.space";
  28. match client.set_mint_url(mint_url).await {
  29. Ok(response) => {
  30. println!("✓ Successfully set mint URL");
  31. println!(
  32. " Current mint URL: {}",
  33. response.data.user.mint_url.as_deref().unwrap_or("None")
  34. );
  35. println!(" Lock quotes: {}", response.data.user.lock_quote);
  36. println!("\nNote: Quotes are always locked by default for security.");
  37. }
  38. Err(e) => {
  39. eprintln!("✗ Error setting mint URL: {e}");
  40. }
  41. }
  42. Ok(())
  43. }