[go: up one dir, main page]

Skip to content

0xtlt/lnbits_rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lnbits_rust

crates.io Documentation MIT/Apache-2 licensed CI Issues

An ergonomic, LNBits API Client for Rust.

Example

[dependencies]
tokio = { version = "1.0", features = ["full"] }
lnbits_rust = "0.1"

And then the code:

use lnbits_rust::{api::invoice::CreateInvoiceParams, LNBitsClient};

#[tokio::main]
async fn main() {
    let client = LNBitsClient::new(
        "wallet id",
        "admin_key",
        "invoice_read_key",
        "http://lnbits_url",
        None,
    )
    .unwrap();

    // OR with tor

    let client = LNBitsClient::new(
        "wallet id",
        "admin_key",
        "invoice_read_key",
        "http://lnbits_url.onion",
        Some("socks5h://127.0.0.1:9050"),
    )
    .unwrap();

    let wallet_details = client.get_wallet_details().await.unwrap();

    println!("wallet_details: {:?}", wallet_details);

    let invoice = client
        .create_invoice(&CreateInvoiceParams {
            amount: 1,
            unit: "sat".to_string(),
            memo: None,
            expiry: Some(10000),
            webhook: None,
            internal: None,
        })
        .await
        .unwrap();

    println!("invoice: {:?}", i);

    println!(
        "decoded invoice: {:?}",
        client.decode_invoice(&i.payment_request).await.unwrap()
    );

    while !client.is_invoice_paid(&i.payment_hash).await.unwrap() {
        println!("Waiting for payment");
        tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
    }

    println!("Payment received");
}

Key features

  • Create invoices
  • Decode invoices
  • Pay invoices
  • Get wallet details
  • Tor support

License

Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)