Skip to content

Commit cba4aa9

Browse files
Refactor close_channel to use centralized parsing helpers
Move parsing logic into dedicated helper functions in the api module and update close_channel handling to use them.
1 parent 7338685 commit cba4aa9

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

ldk-server/src/api/close_channel.rs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,15 @@
1-
use crate::api::error::LdkServerError;
2-
use crate::api::error::LdkServerErrorCode::InvalidRequestError;
1+
use crate::api::{error::LdkServerError, parse_counterparty_node_id, parse_user_channel_id};
32
use crate::service::Context;
4-
use ldk_node::bitcoin::secp256k1::PublicKey;
5-
use ldk_node::UserChannelId;
63
use ldk_server_protos::api::{CloseChannelRequest, CloseChannelResponse};
7-
use std::str::FromStr;
84

95
pub(crate) const CLOSE_CHANNEL_PATH: &str = "CloseChannel";
106

117
pub(crate) fn handle_close_channel_request(
128
context: Context, request: CloseChannelRequest,
139
) -> Result<CloseChannelResponse, LdkServerError> {
14-
let user_channel_id =
15-
UserChannelId((&request.user_channel_id).parse::<u128>().map_err(|_| {
16-
LdkServerError::new(InvalidRequestError, "Invalid UserChannelId.".to_string())
17-
})?);
18-
let counterparty_node_id = PublicKey::from_str(&request.counterparty_node_id).map_err(|e| {
19-
LdkServerError::new(
20-
InvalidRequestError,
21-
format!("Invalid counterparty node ID, error: {}", e),
22-
)
23-
})?;
10+
let user_channel_id = parse_user_channel_id(&request.user_channel_id)?;
11+
let counterparty_node_id = parse_counterparty_node_id(&request.counterparty_node_id)?;
12+
2413
context.node.close_channel(&user_channel_id, counterparty_node_id)?;
2514

2615
let response = CloseChannelResponse {};

ldk-server/src/api/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,23 @@ pub(crate) mod onchain_receive;
1414
pub(crate) mod onchain_send;
1515
pub(crate) mod open_channel;
1616
pub(crate) mod update_channel_config;
17+
18+
use crate::api::error::{LdkServerError, LdkServerErrorCode::InvalidRequestError};
19+
use ldk_node::bitcoin::secp256k1::PublicKey;
20+
use ldk_node::UserChannelId;
21+
use std::str::FromStr;
22+
23+
pub fn parse_user_channel_id(id: &str) -> Result<UserChannelId, LdkServerError> {
24+
Ok(UserChannelId(id.parse::<u128>().map_err(|_| {
25+
LdkServerError::new(InvalidRequestError, "Invalid UserChannelId.".to_string())
26+
})?))
27+
}
28+
29+
pub fn parse_counterparty_node_id(id: &str) -> Result<PublicKey, LdkServerError> {
30+
PublicKey::from_str(id).map_err(|e| {
31+
LdkServerError::new(
32+
InvalidRequestError,
33+
format!("Invalid counterparty node ID, error: {}", e),
34+
)
35+
})
36+
}

0 commit comments

Comments
 (0)