Skip to content

Commit 79dd7e7

Browse files
committed
Merge similar InvoiceRequestBuilder impl blocks
This avoids needing to create additional macros when adding c_bindings support.
1 parent 22261df commit 79dd7e7

File tree

1 file changed

+23
-27
lines changed

1 file changed

+23
-27
lines changed

lightning/src/offers/invoice_request.rs

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,14 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, ExplicitPayerI
144144
secp_ctx: None,
145145
}
146146
}
147+
148+
/// Builds an unsigned [`InvoiceRequest`] after checking for valid semantics. It can be signed
149+
/// by [`UnsignedInvoiceRequest::sign`].
150+
pub fn build(self) -> Result<UnsignedInvoiceRequest, Bolt12SemanticError> {
151+
let (unsigned_invoice_request, keys, _) = self.build_with_checks()?;
152+
debug_assert!(keys.is_none());
153+
Ok(unsigned_invoice_request)
154+
}
147155
}
148156

149157
impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId, T> {
@@ -163,6 +171,21 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId
163171
secp_ctx: Some(secp_ctx),
164172
}
165173
}
174+
175+
/// Builds a signed [`InvoiceRequest`] after checking for valid semantics.
176+
pub fn build_and_sign(self) -> Result<InvoiceRequest, Bolt12SemanticError> {
177+
let (unsigned_invoice_request, keys, secp_ctx) = self.build_with_checks()?;
178+
debug_assert!(keys.is_some());
179+
180+
let secp_ctx = secp_ctx.unwrap();
181+
let keys = keys.unwrap();
182+
let invoice_request = unsigned_invoice_request
183+
.sign::<_, Infallible>(
184+
|message| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys))
185+
)
186+
.unwrap();
187+
Ok(invoice_request)
188+
}
166189
}
167190

168191
impl<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, P, T> {
@@ -301,33 +324,6 @@ impl<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signing> InvoiceRequestBuilder<'a
301324
}
302325
}
303326

304-
impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, ExplicitPayerId, T> {
305-
/// Builds an unsigned [`InvoiceRequest`] after checking for valid semantics. It can be signed
306-
/// by [`UnsignedInvoiceRequest::sign`].
307-
pub fn build(self) -> Result<UnsignedInvoiceRequest, Bolt12SemanticError> {
308-
let (unsigned_invoice_request, keys, _) = self.build_with_checks()?;
309-
debug_assert!(keys.is_none());
310-
Ok(unsigned_invoice_request)
311-
}
312-
}
313-
314-
impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId, T> {
315-
/// Builds a signed [`InvoiceRequest`] after checking for valid semantics.
316-
pub fn build_and_sign(self) -> Result<InvoiceRequest, Bolt12SemanticError> {
317-
let (unsigned_invoice_request, keys, secp_ctx) = self.build_with_checks()?;
318-
debug_assert!(keys.is_some());
319-
320-
let secp_ctx = secp_ctx.unwrap();
321-
let keys = keys.unwrap();
322-
let invoice_request = unsigned_invoice_request
323-
.sign::<_, Infallible>(
324-
|message| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys))
325-
)
326-
.unwrap();
327-
Ok(invoice_request)
328-
}
329-
}
330-
331327
#[cfg(test)]
332328
impl<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, P, T> {
333329
fn chain_unchecked(mut self, network: Network) -> Self {

0 commit comments

Comments
 (0)