10个版本
0.1.9 | 2024年6月5日 |
---|---|
0.1.8 | 2024年3月8日 |
0.1.7 | 2023年11月22日 |
0.1.3 | 2023年5月30日 |
0.1.0 | 2022年4月20日 |
#2 in #cln
3,612 每月下载量
在11个crate中使用了7 直接
400KB
11K SLoC
cln-rpc
:与Core Lightning通信
lib.rs
:
Core Lightning的RPC客户端
Core Lightning通过Unix域套接字公开JSON-RPC接口。Unix域套接字看起来像文件,默认位于~/.lightning/<network>/lightning-rpc
。
此crate包含一个名为[ClnRpc]的RPC客户端以及大多数请求和响应的模型。
以下示例显示了如何启动客户端并调用getinfo
-rpc方法。
use std::path::Path;
use tokio_test;
use cln_rpc::{ClnRpc, TypedRequest};
use cln_rpc::model::requests::GetinfoRequest;
use cln_rpc::model::responses::GetinfoResponse;
tokio_test::block_on( async {
let path = Path::new("path_to_lightning_dir");
let mut rpc = ClnRpc::new(path).await.unwrap();
let request = GetinfoRequest {};
let response : GetinfoResponse = rpc.call_typed(&request).await.unwrap();
});
如果所需的模型不可用,您可以实现TypedRequest
并使用ClnRpc::call_typed
而不会出现问题。
use std::path::Path;
use tokio_test;
use cln_rpc::{ClnRpc, TypedRequest};
use serde::{Serialize, Deserialize};
#[derive(Serialize, Debug)]
struct CustomMethodRequest {
param_a : String
};
#[derive(Deserialize, Debug)]
struct CustomMethodResponse {
field_a : String
};
impl TypedRequest for CustomMethodRequest {
type Response = CustomMethodResponse;
fn method(&self) -> &str {
"custommethod"
}
}
tokio_test::block_on( async {
let path = Path::new("path_to_lightning_dir");
let mut rpc = ClnRpc::new(path).await.unwrap();
let request = CustomMethodRequest { param_a : String::from("example")};
let response = rpc.call_typed(&request).await.unwrap();
})
另一种选择是使用ClnRpc::call_raw
。
use std::path::Path;
use tokio_test;
use cln_rpc::{ClnRpc, TypedRequest};
tokio_test::block_on( async {
let path = Path::new("path_to_lightning_dir");
let mut rpc = ClnRpc::new(path).await.unwrap();
let method = "custommethod";
let request = serde_json::json!({"param_a" : "example"});
let response : serde_json::Value = rpc.call_raw(method, &request).await.unwrap();
})
依赖项
~11–20MB
~227K SLoC