lightspark 0.10.2

Lightspark Rust SDK
Documentation
use lightspark::{
    client::LightsparkClient, key::RSASigningKey, request::auth_provider::AccountAuthProvider,
};

async fn create_invoice() {
    let api_id = std::env::var("LIGHTSPARK_API_CLIENT_ID").unwrap();
    let api_token = std::env::var("LIGHTSPARK_API_CLIENT_SECRET").unwrap();
    let endpoint = std::env::var("LIGHTSPARK_API_ENDPOINT").unwrap();

    let auth = AccountAuthProvider::new(api_id.to_string(), api_token.to_string());
    let mut client = LightsparkClient::<RSASigningKey>::new(auth).unwrap();
    client.requester.set_base_url(Some(endpoint));

    let node_id = std::env::var("LIGHTSPARK_NODE_ID").unwrap();

    let password = std::env::var("LIGHTSPARK_NODE_PASSWORD").unwrap();
    let _ = client.recover_node_signing_key(&node_id, &password).await;

    println!("API ID: {:?}", api_id);
    println!("API Token: {:?}", api_token);
    println!("Node ID: {:?}", node_id);

    let account = client.get_current_account().await.unwrap();
    println!("Account: {:?}", account.name);

    let invoice = client.create_invoice(&node_id, 10000, None, None).await;
    let payment_request = invoice.unwrap().data.encoded_payment_request;
    println!("Invoice created: {:?}", payment_request);

    let response = client
        .create_test_mode_payment(&node_id, &payment_request, None)
        .await;
    println!("Payment response: {:?}", response.unwrap().id);
}

async fn test_payment() {
    let api_id = std::env::var("LIGHTSPARK_API_CLIENT_ID").unwrap();
    let api_token = std::env::var("LIGHTSPARK_API_CLIENT_SECRET").unwrap();
    let endpoint = std::env::var("LIGHTSPARK_API_ENDPOINT").unwrap();

    let auth = AccountAuthProvider::new(api_id.to_string(), api_token.to_string());
    let mut client = LightsparkClient::<RSASigningKey>::new(auth).unwrap();
    client.requester.set_base_url(Some(endpoint));

    let node_id = std::env::var("LIGHTSPARK_NODE_ID").unwrap();

    let password = std::env::var("LIGHTSPARK_NODE_PASSWORD").unwrap();
    let _ = client.recover_node_signing_key(&node_id, &password).await;

    println!("API ID: {:?}", api_id);
    println!("API Token: {:?}", api_token);
    println!("Node ID: {:?}", node_id);

    let account = client.get_current_account().await.unwrap();
    println!("Account: {:?}", account.name);

    let invoice = client
        .create_test_mode_invoice(&node_id, 10000, Some("test"), None)
        .await;
    let payment_request = invoice.unwrap().replace('\"', "");
    println!("Invoice created: {:?}", payment_request);

    let response = client
        .pay_invoice(&node_id, &payment_request, 100, None, 1000)
        .await;
    println!("Payment response: {:?}", response.unwrap().id);
}

#[tokio::main]
async fn main() {
    create_invoice().await;
    test_payment().await;
}