2 releases
new 0.1.1 | Nov 1, 2024 |
---|---|
0.1.0 | Nov 1, 2024 |
#2 in #lotus
130 downloads per month
170KB
5K
SLoC
Lotus Rust Client Schema
A Rust client library for interacting with the Lotus JSON-RPC API. This library provides a type-safe, async interface for communicating with Lotus nodes.
This has not been rigorously tested! Contributions and feedback are welcome.
Features
- Async/await support using Tokio runtime
- Type-safe JSON-RPC interactions
- Comprehensive error handling
- Support for authentication tokens
- Generated API bindings for all Lotus APIs:
- Full Node API
- Storage Miner API
- Gateway API
- Wallet API
- Worker API
- Common API
Installation
Add this to your Cargo.toml
:
[dependencies]
lotus-client = "0.1.1"
Usage
use lotus_client::LotusClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a new client
let client = LotusClient::new(
"http://127.0.0.1:1234/rpc/v0",
Some("YOUR_AUTH_TOKEN".to_string())
).await?;
// Use the client to make API calls
let version = client.version(serde_json::Value::Null).await?;
println!("Lotus version: {:?}", version
);
Ok(())
}
API Coverage
The client provides comprehensive coverage of the Lotus JSON-RPC API through generated code:
CommonApi
- Common methods shared across different APIsFullNodeApi
- Full node API methodsStorageMinerApi
- Storage miner specific methodsGatewayApi
- Gateway API methodsWalletApi
- Wallet management methodsWorkerApi
- Worker API methods
Codegen
The API bindings are generated from the Lotus JSON-RPC API schema using a custom code generator. To regenerate the bindings:
- Ensure you have Go installed
- Run the schema generator script:
chmod +x ./go-schemagen/generate-schema-for-api.sh
./go-schemagen/generate-schema-for-api.sh
Error Handling
The library uses custom error types for better error handling:
ClientError
- Errors from the JSON-RPC clientSerializationError
- JSON serialization/deserialization errorsJsonRpcError
- Errors returned by the Lotus JSON-RPC API
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- js-lotus-client-schema - The schema generator used to generate Rust API code
Dependencies
~10–20MB
~287K SLoC