Skip to content

Commit 7a3e05e

Browse files
add force close channel in the cli
1 parent c8c3322 commit 7a3e05e

File tree

2 files changed

+41
-7
lines changed

2 files changed

+41
-7
lines changed

ldk-server-cli/src/main.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ use ldk_server_client::error::LdkServerErrorCode::{
66
};
77
use ldk_server_client::ldk_server_protos::api::{
88
Bolt11ReceiveRequest, Bolt11SendRequest, Bolt12ReceiveRequest, Bolt12SendRequest,
9-
CloseChannelRequest, GetBalancesRequest, GetNodeInfoRequest, ListChannelsRequest,
10-
ListPaymentsRequest, OnchainReceiveRequest, OnchainSendRequest, OpenChannelRequest,
9+
CloseChannelRequest, ForceCloseChannelRequest, GetBalancesRequest, GetNodeInfoRequest,
10+
ListChannelsRequest, ListPaymentsRequest, OnchainReceiveRequest, OnchainSendRequest,
11+
OpenChannelRequest,
1112
};
1213
use ldk_server_client::ldk_server_protos::types::{
1314
bolt11_invoice_description, Bolt11InvoiceDescription, PageToken, Payment,
@@ -81,7 +82,14 @@ enum Commands {
8182
#[arg(short, long)]
8283
counterparty_node_id: String,
8384
},
84-
85+
ForceCloseChannel {
86+
#[arg(short, long)]
87+
user_channel_id: String,
88+
#[arg(short, long)]
89+
counterparty_node_id: String,
90+
#[arg(long)]
91+
force_close_reason: Option<String>,
92+
},
8593
OpenChannel {
8694
#[arg(short, long)]
8795
node_pubkey: String,
@@ -184,6 +192,21 @@ async fn main() {
184192
.await,
185193
);
186194
},
195+
Commands::ForceCloseChannel {
196+
user_channel_id,
197+
counterparty_node_id,
198+
force_close_reason,
199+
} => {
200+
handle_response_result(
201+
client
202+
.force_close_channel(ForceCloseChannelRequest {
203+
user_channel_id,
204+
counterparty_node_id,
205+
force_close_reason,
206+
})
207+
.await,
208+
);
209+
},
187210
Commands::OpenChannel {
188211
node_pubkey,
189212
address,

ldk-server-client/src/client.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ use crate::error::LdkServerErrorCode::{
77
use ldk_server_protos::api::{
88
Bolt11ReceiveRequest, Bolt11ReceiveResponse, Bolt11SendRequest, Bolt11SendResponse,
99
Bolt12ReceiveRequest, Bolt12ReceiveResponse, Bolt12SendRequest, Bolt12SendResponse,
10-
CloseChannelRequest, CloseChannelResponse, GetBalancesRequest, GetBalancesResponse,
11-
GetNodeInfoRequest, GetNodeInfoResponse, ListChannelsRequest, ListChannelsResponse,
12-
ListPaymentsRequest, ListPaymentsResponse, OnchainReceiveRequest, OnchainReceiveResponse,
13-
OnchainSendRequest, OnchainSendResponse, OpenChannelRequest, OpenChannelResponse,
10+
CloseChannelRequest, CloseChannelResponse, ForceCloseChannelRequest, ForceCloseChannelResponse,
11+
GetBalancesRequest, GetBalancesResponse, GetNodeInfoRequest, GetNodeInfoResponse,
12+
ListChannelsRequest, ListChannelsResponse, ListPaymentsRequest, ListPaymentsResponse,
13+
OnchainReceiveRequest, OnchainReceiveResponse, OnchainSendRequest, OnchainSendResponse,
14+
OpenChannelRequest, OpenChannelResponse,
1415
};
1516
use ldk_server_protos::error::{ErrorCode, ErrorResponse};
1617
use reqwest::header::CONTENT_TYPE;
@@ -28,6 +29,7 @@ const BOLT12_RECEIVE_PATH: &str = "Bolt12Receive";
2829
const BOLT12_SEND_PATH: &str = "Bolt12Send";
2930
const OPEN_CHANNEL_PATH: &str = "OpenChannel";
3031
const CLOSE_CHANNEL_PATH: &str = "CloseChannel";
32+
const FORCE_CLOSE_CHANNEL_PATH: &str = "ForceCloseChannel";
3133
const LIST_CHANNELS_PATH: &str = "ListChannels";
3234
const LIST_PAYMENTS_PATH: &str = "ListPayments";
3335

@@ -134,6 +136,15 @@ impl LdkServerClient {
134136
self.post_request(&request, &url).await
135137
}
136138

139+
/// Force closes the channel specified by given request.
140+
/// For API contract/usage, refer to docs for [`ForceCloseChannelRequest`] and [`ForceCloseChannelResponse`].
141+
pub async fn force_close_channel(
142+
&self, request: ForceCloseChannelRequest,
143+
) -> Result<ForceCloseChannelResponse, LdkServerError> {
144+
let url = format!("http://{}/{FORCE_CLOSE_CHANNEL_PATH}", self.base_url);
145+
self.post_request(&request, &url).await
146+
}
147+
137148
/// Retrieves list of known channels.
138149
/// For API contract/usage, refer to docs for [`ListChannelsRequest`] and [`ListChannelsResponse`].
139150
pub async fn list_channels(

0 commit comments

Comments
 (0)