SAL Mycelium (sal-mycelium)
A Rust client library for interacting with Mycelium node's HTTP API, with Rhai scripting support.
Installation
Add this to your Cargo.toml:
[]
= "0.1.0"
Overview
SAL Mycelium provides async HTTP client functionality for managing Mycelium nodes, including:
- Node information retrieval
- Peer management (list, add, remove)
- Route inspection (selected and fallback routes)
- Message operations (send and receive)
Usage
Rust API
use *;
async
Rhai Scripting
// Get node information
let api_url = "http://localhost:8989";
let node_info = mycelium_get_node_info(api_url);
print(`Node subnet: ${node_info.nodeSubnet}`);
// List peers
let peers = mycelium_list_peers(api_url);
print(`Found ${peers.len()} peers`);
// Send message (timeout in seconds, -1 for no timeout)
let result = mycelium_send_message(api_url, "dest_ip", "topic", "message", 30);
API Functions
Core Functions
get_node_info(api_url)- Get node informationlist_peers(api_url)- List connected peersadd_peer(api_url, peer_address)- Add a new peerremove_peer(api_url, peer_id)- Remove a peerlist_selected_routes(api_url)- List selected routeslist_fallback_routes(api_url)- List fallback routessend_message(api_url, destination, topic, message, timeout)- Send messagereceive_messages(api_url, topic, timeout)- Receive messages
Rhai Functions
All functions are available in Rhai with mycelium_ prefix:
mycelium_get_node_info(api_url)mycelium_list_peers(api_url)mycelium_add_peer(api_url, peer_address)mycelium_remove_peer(api_url, peer_id)mycelium_list_selected_routes(api_url)mycelium_list_fallback_routes(api_url)mycelium_send_message(api_url, destination, topic, message, timeout_secs)mycelium_receive_messages(api_url, topic, timeout_secs)
Requirements
- A running Mycelium node with HTTP API enabled
- Default API endpoint:
http://localhost:8989
Testing
# Run all tests
# Run with a live Mycelium node for integration tests
# (tests will skip if no node is available)
Dependencies
reqwest- HTTP clientserde_json- JSON handlingbase64- Message encodingtokio- Async runtimerhai- Scripting support