mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
cln_rpc : use call_typed
with external structs
One limitation of the `call_typed`-method was that it could not be used with types defined outside of this crate. (See dependency on `IntoRequest`) This is useful for types that are not (yet) defined in this crate. A possible case is an rpc-method that is defined in a plug-in that is external to core-lightning or any method which isn't yet a part of the `msggen`-script. I've implemented a `TypedRequest` trait to make it work. PS: This change is breaking. Users of `call_typed` must import `cln_rpc::models::TypedRequest` instead of `cln_rpc::models::IntoRequest`
This commit is contained in:
parent
ce41aa4ccc
commit
4b5dade87f
3 changed files with 486 additions and 27 deletions
|
@ -19,14 +19,14 @@ pub mod model;
|
||||||
pub mod notifications;
|
pub mod notifications;
|
||||||
pub mod primitives;
|
pub mod primitives;
|
||||||
|
|
||||||
use crate::model::IntoRequest;
|
use crate::model::TypedRequest;
|
||||||
pub use crate::{
|
pub use crate::{
|
||||||
model::{Request, Response},
|
model::{Request, Response},
|
||||||
notifications::Notification,
|
notifications::Notification,
|
||||||
primitives::RpcError,
|
primitives::RpcError,
|
||||||
};
|
};
|
||||||
|
|
||||||
///
|
///
|
||||||
pub struct ClnRpc {
|
pub struct ClnRpc {
|
||||||
next_id: AtomicUsize,
|
next_id: AtomicUsize,
|
||||||
|
|
||||||
|
@ -57,10 +57,15 @@ impl ClnRpc {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Low-level API to call the rpc
|
/// Low-level API to call the rpc.
|
||||||
///
|
|
||||||
/// It is the resposnbility of the caller to pick valid types `R` and `P`.
|
|
||||||
///
|
///
|
||||||
|
/// It is the responsibility of the caller to pick valid types `R` and `P`.
|
||||||
|
/// It's useful for ad-hoc calls to methods that are not present in [`crate::model`].
|
||||||
|
/// Users can use [`serde_json::Value`] and don't have to implement any custom structs.
|
||||||
|
///
|
||||||
|
/// Most users would prefer to use [call_typed](crate::ClnRpc::call_typed) instead.
|
||||||
|
///
|
||||||
|
/// Example:
|
||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// use cln_rpc::ClnRpc;
|
/// use cln_rpc::ClnRpc;
|
||||||
/// use cln_rpc::model::{requests::GetinfoRequest, responses::GetinfoResponse, responses::ListfundsResponse};
|
/// use cln_rpc::model::{requests::GetinfoRequest, responses::GetinfoResponse, responses::ListfundsResponse};
|
||||||
|
@ -77,15 +82,7 @@ impl ClnRpc {
|
||||||
/// // Prefer to use call_typed instead
|
/// // Prefer to use call_typed instead
|
||||||
/// let request = GetinfoRequest {};
|
/// let request = GetinfoRequest {};
|
||||||
/// let response : GetinfoResponse = cln.call_raw("getinfo", request.clone()).await.unwrap();
|
/// let response : GetinfoResponse = cln.call_raw("getinfo", request.clone()).await.unwrap();
|
||||||
/// // `call_typed` is more ergonomic because you don't have to specify the method name and return type
|
/// })
|
||||||
/// let response = cln.call_typed(request).await.unwrap();
|
|
||||||
///
|
|
||||||
/// // `call_typed` can catch issues at compile_time
|
|
||||||
/// let request = GetinfoRequest {};
|
|
||||||
/// let response : ListfundsResponse = cln.call_raw("get_info", request).await.unwrap(); // Runtime error
|
|
||||||
/// // The next line would not compile
|
|
||||||
/// // let response : ListfundsResponse = cln.call_typed(request).await.unwrap();
|
|
||||||
/// })
|
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn call_raw<R, P>(&mut self, method: &str, params: P) -> Result<R, RpcError>
|
pub async fn call_raw<R, P>(&mut self, method: &str, params: P) -> Result<R, RpcError>
|
||||||
where
|
where
|
||||||
|
@ -190,6 +187,11 @@ impl ClnRpc {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn call(&mut self, req: Request) -> Result<Response, RpcError> {
|
pub async fn call(&mut self, req: Request) -> Result<Response, RpcError> {
|
||||||
|
self.call_enum(req).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs an rpc-call
|
||||||
|
pub async fn call_enum(&mut self, req: Request) -> Result<Response, RpcError> {
|
||||||
trace!("call : Serialize and deserialize request {:?}", req);
|
trace!("call : Serialize and deserialize request {:?}", req);
|
||||||
// Construct the full JsonRpcRequest
|
// Construct the full JsonRpcRequest
|
||||||
let id = self.next_id.fetch_add(1, Ordering::SeqCst);
|
let id = self.next_id.fetch_add(1, Ordering::SeqCst);
|
||||||
|
@ -215,15 +217,26 @@ impl ClnRpc {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn call_typed<R: IntoRequest>(
|
/// Performs an rpc-call and performs type-checking.
|
||||||
&mut self,
|
///
|
||||||
request: R,
|
/// ```no_run
|
||||||
) -> Result<R::Response, RpcError> {
|
/// use cln_rpc::ClnRpc;
|
||||||
Ok(self
|
/// use cln_rpc::model::requests::GetinfoRequest;
|
||||||
.call(request.into())
|
/// use std::path::Path;
|
||||||
.await?
|
/// use tokio_test;
|
||||||
.try_into()
|
/// tokio_test::block_on( async {
|
||||||
.expect("CLN will reply correctly"))
|
/// let mut rpc = ClnRpc::new(Path::new("path_to_rpc")).await.unwrap();
|
||||||
|
/// let request = GetinfoRequest {};
|
||||||
|
/// let response = rpc.call_typed(request);
|
||||||
|
/// })
|
||||||
|
/// ```
|
||||||
|
pub async fn call_typed<R>(&mut self, request: R) -> Result<R::Response, RpcError>
|
||||||
|
where
|
||||||
|
R: TypedRequest + Serialize + std::fmt::Debug,
|
||||||
|
R::Response: DeserializeOwned + std::fmt::Debug,
|
||||||
|
{
|
||||||
|
let method = request.method();
|
||||||
|
self.call_raw(method, &request).await?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
437
cln-rpc/src/model.rs
generated
437
cln-rpc/src/model.rs
generated
|
@ -149,6 +149,12 @@ pub trait IntoRequest: Into<Request> {
|
||||||
type Response: TryFrom<Response, Error = TryFromResponseError>;
|
type Response: TryFrom<Response, Error = TryFromResponseError>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait TypedRequest {
|
||||||
|
type Response;
|
||||||
|
|
||||||
|
fn method(&self) -> &str;
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct TryFromResponseError;
|
pub struct TryFromResponseError;
|
||||||
|
|
||||||
|
@ -157,8 +163,8 @@ pub mod requests {
|
||||||
use crate::primitives::*;
|
use crate::primitives::*;
|
||||||
#[allow(unused_imports)]
|
#[allow(unused_imports)]
|
||||||
use serde::{{Deserialize, Serialize}};
|
use serde::{{Deserialize, Serialize}};
|
||||||
use super::{IntoRequest, Request};
|
use core::fmt::Debug;
|
||||||
|
use super::{IntoRequest, Request, TypedRequest};
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct GetinfoRequest {
|
pub struct GetinfoRequest {
|
||||||
}
|
}
|
||||||
|
@ -173,6 +179,13 @@ pub mod requests {
|
||||||
type Response = super::responses::GetinfoResponse;
|
type Response = super::responses::GetinfoResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for GetinfoRequest {
|
||||||
|
type Response = super::responses::GetinfoResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"getinfo"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListpeersRequest {
|
pub struct ListpeersRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -191,6 +204,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListpeersResponse;
|
type Response = super::responses::ListpeersResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListpeersRequest {
|
||||||
|
type Response = super::responses::ListpeersResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listpeers"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListfundsRequest {
|
pub struct ListfundsRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -207,6 +227,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListfundsResponse;
|
type Response = super::responses::ListfundsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListfundsRequest {
|
||||||
|
type Response = super::responses::ListfundsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listfunds"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SendpayRoute {
|
pub struct SendpayRoute {
|
||||||
pub amount_msat: Amount,
|
pub amount_msat: Amount,
|
||||||
|
@ -245,6 +272,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SendpayResponse;
|
type Response = super::responses::SendpayResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SendpayRequest {
|
||||||
|
type Response = super::responses::SendpayResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"sendpay"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListchannelsRequest {
|
pub struct ListchannelsRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -265,6 +299,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListchannelsResponse;
|
type Response = super::responses::ListchannelsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListchannelsRequest {
|
||||||
|
type Response = super::responses::ListchannelsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listchannels"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct AddgossipRequest {
|
pub struct AddgossipRequest {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
|
@ -280,6 +321,13 @@ pub mod requests {
|
||||||
type Response = super::responses::AddgossipResponse;
|
type Response = super::responses::AddgossipResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for AddgossipRequest {
|
||||||
|
type Response = super::responses::AddgossipResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"addgossip"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct AutocleaninvoiceRequest {
|
pub struct AutocleaninvoiceRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -298,6 +346,13 @@ pub mod requests {
|
||||||
type Response = super::responses::AutocleaninvoiceResponse;
|
type Response = super::responses::AutocleaninvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for AutocleaninvoiceRequest {
|
||||||
|
type Response = super::responses::AutocleaninvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"autocleaninvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct CheckmessageRequest {
|
pub struct CheckmessageRequest {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
|
@ -316,6 +371,13 @@ pub mod requests {
|
||||||
type Response = super::responses::CheckmessageResponse;
|
type Response = super::responses::CheckmessageResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for CheckmessageRequest {
|
||||||
|
type Response = super::responses::CheckmessageResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"checkmessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct CloseRequest {
|
pub struct CloseRequest {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -343,6 +405,13 @@ pub mod requests {
|
||||||
type Response = super::responses::CloseResponse;
|
type Response = super::responses::CloseResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for CloseRequest {
|
||||||
|
type Response = super::responses::CloseResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"close"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ConnectRequest {
|
pub struct ConnectRequest {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -362,6 +431,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ConnectResponse;
|
type Response = super::responses::ConnectResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ConnectRequest {
|
||||||
|
type Response = super::responses::ConnectResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"connect"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct CreateinvoiceRequest {
|
pub struct CreateinvoiceRequest {
|
||||||
pub invstring: String,
|
pub invstring: String,
|
||||||
|
@ -379,6 +455,13 @@ pub mod requests {
|
||||||
type Response = super::responses::CreateinvoiceResponse;
|
type Response = super::responses::CreateinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for CreateinvoiceRequest {
|
||||||
|
type Response = super::responses::CreateinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"createinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum DatastoreMode {
|
pub enum DatastoreMode {
|
||||||
#[serde(rename = "must-create")]
|
#[serde(rename = "must-create")]
|
||||||
|
@ -442,6 +525,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DatastoreResponse;
|
type Response = super::responses::DatastoreResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DatastoreRequest {
|
||||||
|
type Response = super::responses::DatastoreResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"datastore"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DatastoreusageRequest {
|
pub struct DatastoreusageRequest {
|
||||||
}
|
}
|
||||||
|
@ -456,6 +546,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DatastoreusageResponse;
|
type Response = super::responses::DatastoreusageResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DatastoreusageRequest {
|
||||||
|
type Response = super::responses::DatastoreusageResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"datastoreusage"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct CreateonionHops {
|
pub struct CreateonionHops {
|
||||||
pub pubkey: PublicKey,
|
pub pubkey: PublicKey,
|
||||||
|
@ -482,6 +579,13 @@ pub mod requests {
|
||||||
type Response = super::responses::CreateonionResponse;
|
type Response = super::responses::CreateonionResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for CreateonionRequest {
|
||||||
|
type Response = super::responses::CreateonionResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"createonion"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DeldatastoreRequest {
|
pub struct DeldatastoreRequest {
|
||||||
pub key: Vec<String>,
|
pub key: Vec<String>,
|
||||||
|
@ -499,6 +603,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DeldatastoreResponse;
|
type Response = super::responses::DeldatastoreResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DeldatastoreRequest {
|
||||||
|
type Response = super::responses::DeldatastoreResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"deldatastore"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DelexpiredinvoiceRequest {
|
pub struct DelexpiredinvoiceRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -515,6 +626,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DelexpiredinvoiceResponse;
|
type Response = super::responses::DelexpiredinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DelexpiredinvoiceRequest {
|
||||||
|
type Response = super::responses::DelexpiredinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"delexpiredinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum DelinvoiceStatus {
|
pub enum DelinvoiceStatus {
|
||||||
#[serde(rename = "paid")]
|
#[serde(rename = "paid")]
|
||||||
|
@ -566,6 +684,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DelinvoiceResponse;
|
type Response = super::responses::DelinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DelinvoiceRequest {
|
||||||
|
type Response = super::responses::DelinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"delinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct InvoiceRequest {
|
pub struct InvoiceRequest {
|
||||||
pub amount_msat: AmountOrAny,
|
pub amount_msat: AmountOrAny,
|
||||||
|
@ -593,6 +718,13 @@ pub mod requests {
|
||||||
type Response = super::responses::InvoiceResponse;
|
type Response = super::responses::InvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for InvoiceRequest {
|
||||||
|
type Response = super::responses::InvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"invoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListdatastoreRequest {
|
pub struct ListdatastoreRequest {
|
||||||
#[serde(skip_serializing_if = "crate::is_none_or_empty")]
|
#[serde(skip_serializing_if = "crate::is_none_or_empty")]
|
||||||
|
@ -609,6 +741,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListdatastoreResponse;
|
type Response = super::responses::ListdatastoreResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListdatastoreRequest {
|
||||||
|
type Response = super::responses::ListdatastoreResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listdatastore"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum ListinvoicesIndex {
|
pub enum ListinvoicesIndex {
|
||||||
#[serde(rename = "created")]
|
#[serde(rename = "created")]
|
||||||
|
@ -665,6 +804,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListinvoicesResponse;
|
type Response = super::responses::ListinvoicesResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListinvoicesRequest {
|
||||||
|
type Response = super::responses::ListinvoicesResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listinvoices"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SendonionFirst_hop {
|
pub struct SendonionFirst_hop {
|
||||||
pub id: PublicKey,
|
pub id: PublicKey,
|
||||||
|
@ -705,6 +851,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SendonionResponse;
|
type Response = super::responses::SendonionResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SendonionRequest {
|
||||||
|
type Response = super::responses::SendonionResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"sendonion"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum ListsendpaysStatus {
|
pub enum ListsendpaysStatus {
|
||||||
#[serde(rename = "pending")]
|
#[serde(rename = "pending")]
|
||||||
|
@ -791,6 +944,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListsendpaysResponse;
|
type Response = super::responses::ListsendpaysResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListsendpaysRequest {
|
||||||
|
type Response = super::responses::ListsendpaysResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listsendpays"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListtransactionsRequest {
|
pub struct ListtransactionsRequest {
|
||||||
}
|
}
|
||||||
|
@ -805,6 +965,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListtransactionsResponse;
|
type Response = super::responses::ListtransactionsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListtransactionsRequest {
|
||||||
|
type Response = super::responses::ListtransactionsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listtransactions"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct PayRequest {
|
pub struct PayRequest {
|
||||||
pub bolt11: String,
|
pub bolt11: String,
|
||||||
|
@ -842,6 +1009,13 @@ pub mod requests {
|
||||||
type Response = super::responses::PayResponse;
|
type Response = super::responses::PayResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for PayRequest {
|
||||||
|
type Response = super::responses::PayResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"pay"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListnodesRequest {
|
pub struct ListnodesRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -858,6 +1032,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListnodesResponse;
|
type Response = super::responses::ListnodesResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListnodesRequest {
|
||||||
|
type Response = super::responses::ListnodesResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listnodes"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct WaitanyinvoiceRequest {
|
pub struct WaitanyinvoiceRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -876,6 +1057,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WaitanyinvoiceResponse;
|
type Response = super::responses::WaitanyinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WaitanyinvoiceRequest {
|
||||||
|
type Response = super::responses::WaitanyinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"waitanyinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct WaitinvoiceRequest {
|
pub struct WaitinvoiceRequest {
|
||||||
pub label: String,
|
pub label: String,
|
||||||
|
@ -891,6 +1079,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WaitinvoiceResponse;
|
type Response = super::responses::WaitinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WaitinvoiceRequest {
|
||||||
|
type Response = super::responses::WaitinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"waitinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct WaitsendpayRequest {
|
pub struct WaitsendpayRequest {
|
||||||
pub payment_hash: Sha256,
|
pub payment_hash: Sha256,
|
||||||
|
@ -912,6 +1107,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WaitsendpayResponse;
|
type Response = super::responses::WaitsendpayResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WaitsendpayRequest {
|
||||||
|
type Response = super::responses::WaitsendpayResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"waitsendpay"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum NewaddrAddresstype {
|
pub enum NewaddrAddresstype {
|
||||||
#[serde(rename = "bech32")]
|
#[serde(rename = "bech32")]
|
||||||
|
@ -960,6 +1162,13 @@ pub mod requests {
|
||||||
type Response = super::responses::NewaddrResponse;
|
type Response = super::responses::NewaddrResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for NewaddrRequest {
|
||||||
|
type Response = super::responses::NewaddrResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"newaddr"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct WithdrawRequest {
|
pub struct WithdrawRequest {
|
||||||
pub destination: String,
|
pub destination: String,
|
||||||
|
@ -983,6 +1192,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WithdrawResponse;
|
type Response = super::responses::WithdrawResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WithdrawRequest {
|
||||||
|
type Response = super::responses::WithdrawResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"withdraw"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct KeysendRequest {
|
pub struct KeysendRequest {
|
||||||
pub destination: PublicKey,
|
pub destination: PublicKey,
|
||||||
|
@ -1013,6 +1229,13 @@ pub mod requests {
|
||||||
type Response = super::responses::KeysendResponse;
|
type Response = super::responses::KeysendResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for KeysendRequest {
|
||||||
|
type Response = super::responses::KeysendResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"keysend"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct FundpsbtRequest {
|
pub struct FundpsbtRequest {
|
||||||
pub satoshi: AmountOrAll,
|
pub satoshi: AmountOrAll,
|
||||||
|
@ -1044,6 +1267,13 @@ pub mod requests {
|
||||||
type Response = super::responses::FundpsbtResponse;
|
type Response = super::responses::FundpsbtResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for FundpsbtRequest {
|
||||||
|
type Response = super::responses::FundpsbtResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"fundpsbt"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SendpsbtRequest {
|
pub struct SendpsbtRequest {
|
||||||
pub psbt: String,
|
pub psbt: String,
|
||||||
|
@ -1061,6 +1291,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SendpsbtResponse;
|
type Response = super::responses::SendpsbtResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SendpsbtRequest {
|
||||||
|
type Response = super::responses::SendpsbtResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"sendpsbt"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SignpsbtRequest {
|
pub struct SignpsbtRequest {
|
||||||
pub psbt: String,
|
pub psbt: String,
|
||||||
|
@ -1078,6 +1315,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SignpsbtResponse;
|
type Response = super::responses::SignpsbtResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SignpsbtRequest {
|
||||||
|
type Response = super::responses::SignpsbtResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"signpsbt"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct UtxopsbtRequest {
|
pub struct UtxopsbtRequest {
|
||||||
pub satoshi: Amount,
|
pub satoshi: Amount,
|
||||||
|
@ -1108,6 +1352,13 @@ pub mod requests {
|
||||||
type Response = super::responses::UtxopsbtResponse;
|
type Response = super::responses::UtxopsbtResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for UtxopsbtRequest {
|
||||||
|
type Response = super::responses::UtxopsbtResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"utxopsbt"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct TxdiscardRequest {
|
pub struct TxdiscardRequest {
|
||||||
pub txid: String,
|
pub txid: String,
|
||||||
|
@ -1123,6 +1374,13 @@ pub mod requests {
|
||||||
type Response = super::responses::TxdiscardResponse;
|
type Response = super::responses::TxdiscardResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for TxdiscardRequest {
|
||||||
|
type Response = super::responses::TxdiscardResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"txdiscard"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct TxprepareRequest {
|
pub struct TxprepareRequest {
|
||||||
pub outputs: Vec<OutputDesc>,
|
pub outputs: Vec<OutputDesc>,
|
||||||
|
@ -1144,6 +1402,13 @@ pub mod requests {
|
||||||
type Response = super::responses::TxprepareResponse;
|
type Response = super::responses::TxprepareResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for TxprepareRequest {
|
||||||
|
type Response = super::responses::TxprepareResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"txprepare"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct TxsendRequest {
|
pub struct TxsendRequest {
|
||||||
pub txid: String,
|
pub txid: String,
|
||||||
|
@ -1159,6 +1424,13 @@ pub mod requests {
|
||||||
type Response = super::responses::TxsendResponse;
|
type Response = super::responses::TxsendResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for TxsendRequest {
|
||||||
|
type Response = super::responses::TxsendResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"txsend"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListpeerchannelsRequest {
|
pub struct ListpeerchannelsRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -1175,6 +1447,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListpeerchannelsResponse;
|
type Response = super::responses::ListpeerchannelsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListpeerchannelsRequest {
|
||||||
|
type Response = super::responses::ListpeerchannelsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listpeerchannels"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListclosedchannelsRequest {
|
pub struct ListclosedchannelsRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -1191,6 +1470,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListclosedchannelsResponse;
|
type Response = super::responses::ListclosedchannelsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListclosedchannelsRequest {
|
||||||
|
type Response = super::responses::ListclosedchannelsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listclosedchannels"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DecodepayRequest {
|
pub struct DecodepayRequest {
|
||||||
pub bolt11: String,
|
pub bolt11: String,
|
||||||
|
@ -1208,6 +1494,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DecodepayResponse;
|
type Response = super::responses::DecodepayResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DecodepayRequest {
|
||||||
|
type Response = super::responses::DecodepayResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"decodepay"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DecodeRequest {
|
pub struct DecodeRequest {
|
||||||
pub string: String,
|
pub string: String,
|
||||||
|
@ -1223,6 +1516,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DecodeResponse;
|
type Response = super::responses::DecodeResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DecodeRequest {
|
||||||
|
type Response = super::responses::DecodeResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"decode"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct DisconnectRequest {
|
pub struct DisconnectRequest {
|
||||||
pub id: PublicKey,
|
pub id: PublicKey,
|
||||||
|
@ -1240,6 +1540,13 @@ pub mod requests {
|
||||||
type Response = super::responses::DisconnectResponse;
|
type Response = super::responses::DisconnectResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for DisconnectRequest {
|
||||||
|
type Response = super::responses::DisconnectResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"disconnect"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum FeeratesStyle {
|
pub enum FeeratesStyle {
|
||||||
#[serde(rename = "perkb")]
|
#[serde(rename = "perkb")]
|
||||||
|
@ -1284,6 +1591,13 @@ pub mod requests {
|
||||||
type Response = super::responses::FeeratesResponse;
|
type Response = super::responses::FeeratesResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for FeeratesRequest {
|
||||||
|
type Response = super::responses::FeeratesResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"feerates"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct FetchinvoiceRequest {
|
pub struct FetchinvoiceRequest {
|
||||||
pub offer: String,
|
pub offer: String,
|
||||||
|
@ -1313,6 +1627,13 @@ pub mod requests {
|
||||||
type Response = super::responses::FetchinvoiceResponse;
|
type Response = super::responses::FetchinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for FetchinvoiceRequest {
|
||||||
|
type Response = super::responses::FetchinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"fetchinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct FundchannelRequest {
|
pub struct FundchannelRequest {
|
||||||
pub id: PublicKey,
|
pub id: PublicKey,
|
||||||
|
@ -1349,6 +1670,13 @@ pub mod requests {
|
||||||
type Response = super::responses::FundchannelResponse;
|
type Response = super::responses::FundchannelResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for FundchannelRequest {
|
||||||
|
type Response = super::responses::FundchannelResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"fundchannel"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct GetrouteRequest {
|
pub struct GetrouteRequest {
|
||||||
pub id: PublicKey,
|
pub id: PublicKey,
|
||||||
|
@ -1376,6 +1704,13 @@ pub mod requests {
|
||||||
type Response = super::responses::GetrouteResponse;
|
type Response = super::responses::GetrouteResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for GetrouteRequest {
|
||||||
|
type Response = super::responses::GetrouteResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"getroute"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum ListforwardsStatus {
|
pub enum ListforwardsStatus {
|
||||||
#[serde(rename = "offered")]
|
#[serde(rename = "offered")]
|
||||||
|
@ -1466,6 +1801,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListforwardsResponse;
|
type Response = super::responses::ListforwardsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListforwardsRequest {
|
||||||
|
type Response = super::responses::ListforwardsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listforwards"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum ListpaysStatus {
|
pub enum ListpaysStatus {
|
||||||
#[serde(rename = "pending")]
|
#[serde(rename = "pending")]
|
||||||
|
@ -1518,6 +1860,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListpaysResponse;
|
type Response = super::responses::ListpaysResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListpaysRequest {
|
||||||
|
type Response = super::responses::ListpaysResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listpays"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct ListhtlcsRequest {
|
pub struct ListhtlcsRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -1534,6 +1883,13 @@ pub mod requests {
|
||||||
type Response = super::responses::ListhtlcsResponse;
|
type Response = super::responses::ListhtlcsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for ListhtlcsRequest {
|
||||||
|
type Response = super::responses::ListhtlcsResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"listhtlcs"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct PingRequest {
|
pub struct PingRequest {
|
||||||
pub id: PublicKey,
|
pub id: PublicKey,
|
||||||
|
@ -1553,6 +1909,13 @@ pub mod requests {
|
||||||
type Response = super::responses::PingResponse;
|
type Response = super::responses::PingResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for PingRequest {
|
||||||
|
type Response = super::responses::PingResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"ping"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SendcustommsgRequest {
|
pub struct SendcustommsgRequest {
|
||||||
pub node_id: PublicKey,
|
pub node_id: PublicKey,
|
||||||
|
@ -1569,6 +1932,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SendcustommsgResponse;
|
type Response = super::responses::SendcustommsgResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SendcustommsgRequest {
|
||||||
|
type Response = super::responses::SendcustommsgResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"sendcustommsg"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SetchannelRequest {
|
pub struct SetchannelRequest {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -1596,6 +1966,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SetchannelResponse;
|
type Response = super::responses::SetchannelResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SetchannelRequest {
|
||||||
|
type Response = super::responses::SetchannelResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"setchannel"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SigninvoiceRequest {
|
pub struct SigninvoiceRequest {
|
||||||
pub invstring: String,
|
pub invstring: String,
|
||||||
|
@ -1611,6 +1988,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SigninvoiceResponse;
|
type Response = super::responses::SigninvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SigninvoiceRequest {
|
||||||
|
type Response = super::responses::SigninvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"signinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct SignmessageRequest {
|
pub struct SignmessageRequest {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
|
@ -1626,6 +2010,13 @@ pub mod requests {
|
||||||
type Response = super::responses::SignmessageResponse;
|
type Response = super::responses::SignmessageResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for SignmessageRequest {
|
||||||
|
type Response = super::responses::SignmessageResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"signmessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct WaitblockheightRequest {
|
pub struct WaitblockheightRequest {
|
||||||
pub blockheight: u32,
|
pub blockheight: u32,
|
||||||
|
@ -1643,6 +2034,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WaitblockheightResponse;
|
type Response = super::responses::WaitblockheightResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WaitblockheightRequest {
|
||||||
|
type Response = super::responses::WaitblockheightResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"waitblockheight"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||||
pub enum WaitSubsystem {
|
pub enum WaitSubsystem {
|
||||||
#[serde(rename = "invoices")]
|
#[serde(rename = "invoices")]
|
||||||
|
@ -1726,6 +2124,13 @@ pub mod requests {
|
||||||
type Response = super::responses::WaitResponse;
|
type Response = super::responses::WaitResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for WaitRequest {
|
||||||
|
type Response = super::responses::WaitResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"wait"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct StopRequest {
|
pub struct StopRequest {
|
||||||
}
|
}
|
||||||
|
@ -1740,6 +2145,13 @@ pub mod requests {
|
||||||
type Response = super::responses::StopResponse;
|
type Response = super::responses::StopResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for StopRequest {
|
||||||
|
type Response = super::responses::StopResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"stop"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct PreapprovekeysendRequest {
|
pub struct PreapprovekeysendRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -1760,6 +2172,13 @@ pub mod requests {
|
||||||
type Response = super::responses::PreapprovekeysendResponse;
|
type Response = super::responses::PreapprovekeysendResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for PreapprovekeysendRequest {
|
||||||
|
type Response = super::responses::PreapprovekeysendResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"preapprovekeysend"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct PreapproveinvoiceRequest {
|
pub struct PreapproveinvoiceRequest {
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -1776,6 +2195,13 @@ pub mod requests {
|
||||||
type Response = super::responses::PreapproveinvoiceResponse;
|
type Response = super::responses::PreapproveinvoiceResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for PreapproveinvoiceRequest {
|
||||||
|
type Response = super::responses::PreapproveinvoiceResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"preapproveinvoice"
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct StaticbackupRequest {
|
pub struct StaticbackupRequest {
|
||||||
}
|
}
|
||||||
|
@ -1790,6 +2216,13 @@ pub mod requests {
|
||||||
type Response = super::responses::StaticbackupResponse;
|
type Response = super::responses::StaticbackupResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TypedRequest for StaticbackupRequest {
|
||||||
|
type Response = super::responses::StaticbackupResponse;
|
||||||
|
|
||||||
|
fn method(&self) -> &str {
|
||||||
|
"staticbackup"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -247,8 +247,8 @@ class RustGenerator(IGenerator):
|
||||||
use crate::primitives::*;
|
use crate::primitives::*;
|
||||||
#[allow(unused_imports)]
|
#[allow(unused_imports)]
|
||||||
use serde::{{Deserialize, Serialize}};
|
use serde::{{Deserialize, Serialize}};
|
||||||
use super::{IntoRequest, Request};
|
use core::fmt::Debug;
|
||||||
|
use super::{IntoRequest, Request, TypedRequest};
|
||||||
""")
|
""")
|
||||||
|
|
||||||
for meth in service.methods:
|
for meth in service.methods:
|
||||||
|
@ -271,6 +271,13 @@ class RustGenerator(IGenerator):
|
||||||
type Response = super::responses::{method.response.typename};
|
type Response = super::responses::{method.response.typename};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
impl TypedRequest for {method.request.typename} {{
|
||||||
|
type Response = super::responses::{method.response.typename};
|
||||||
|
|
||||||
|
fn method(&self) -> &str {{
|
||||||
|
"{method.name.lower()}"
|
||||||
|
}}
|
||||||
|
}}
|
||||||
"""), numindent=1)
|
"""), numindent=1)
|
||||||
|
|
||||||
def generate_responses(self, service: Service):
|
def generate_responses(self, service: Service):
|
||||||
|
@ -345,6 +352,12 @@ class RustGenerator(IGenerator):
|
||||||
type Response: TryFrom<Response, Error = TryFromResponseError>;
|
type Response: TryFrom<Response, Error = TryFromResponseError>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait TypedRequest {
|
||||||
|
type Response;
|
||||||
|
|
||||||
|
fn method(&self) -> &str;
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct TryFromResponseError;
|
pub struct TryFromResponseError;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue