Skip to content

Commit ac90b8f

Browse files
committed
Add Impl for Bolt12Receive Api
1 parent 41eaa1b commit ac90b8f

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

server/src/api/bolt12_receive.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use ldk_node::Node;
2+
use protos::{Bolt12ReceiveRequest, Bolt12ReceiveResponse};
3+
use std::sync::Arc;
4+
5+
pub(crate) const BOLT12_RECEIVE_PATH: &str = "Bolt12Receive";
6+
7+
pub(crate) fn handle_bolt12_receive_request(
8+
node: Arc<Node>, request: Bolt12ReceiveRequest,
9+
) -> Result<Bolt12ReceiveResponse, ldk_node::NodeError> {
10+
let offer = match request.amount_msat {
11+
Some(amount_msat) => node.bolt12_payment().receive(amount_msat, &request.description)?,
12+
None => node.bolt12_payment().receive_variable_amount(&request.description)?,
13+
};
14+
15+
let response = Bolt12ReceiveResponse { offer: offer.to_string() };
16+
Ok(response)
17+
}

server/src/api/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
pub(crate) mod bolt11_receive;
22
pub(crate) mod bolt11_send;
3+
pub(crate) mod bolt12_receive;
34
pub(crate) mod onchain_receive;
45
pub(crate) mod onchain_send;
56
pub(crate) mod open_channel;

server/src/service.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ use crate::api::open_channel::handle_open_channel;
2121
use crate::api::open_channel::OPEN_CHANNEL_PATH;
2222
use crate::api::bolt11_send::handle_bolt11_send_request;
2323
use crate::api::bolt11_send::BOLT11_SEND_PATH;
24+
use crate::api::bolt12_receive::handle_bolt12_receive_request;
25+
use crate::api::bolt12_receive::BOLT12_RECEIVE_PATH;
2426

2527
#[derive(Clone)]
2628
pub struct NodeService {
@@ -49,6 +51,9 @@ impl Service<Request<Incoming>> for NodeService {
4951
Box::pin(handle_request(node, req, handle_bolt11_receive_request))
5052
},
5153
BOLT11_SEND_PATH => Box::pin(handle_request(node, req, handle_bolt11_send_request)),
54+
BOLT12_RECEIVE_PATH => {
55+
Box::pin(handle_request(node, req, handle_bolt12_receive_request))
56+
},
5257
OPEN_CHANNEL_PATH => Box::pin(handle_request(node, req, handle_open_channel)),
5358
path => {
5459
let error = format!("Unknown request: {}", path).into_bytes();

0 commit comments

Comments
 (0)