mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-01-19 05:43:55 +01:00
Merge pull request #2125 from benthecarman/invoice-expire-time
Add helper functions for invoice expiry
This commit is contained in:
commit
3c02e507d6
@ -1225,6 +1225,12 @@ impl Invoice {
|
||||
self.signed_invoice.recover_payee_pub_key().expect("was checked by constructor").0
|
||||
}
|
||||
|
||||
/// Returns the Duration since the Unix epoch at which the invoice expires.
|
||||
/// Returning None if overflow occurred.
|
||||
pub fn expires_at(&self) -> Option<Duration> {
|
||||
self.duration_since_epoch().checked_add(self.expiry_time())
|
||||
}
|
||||
|
||||
/// Returns the invoice's expiry time, if present, otherwise [`DEFAULT_EXPIRY_TIME`].
|
||||
pub fn expiry_time(&self) -> Duration {
|
||||
self.signed_invoice.expiry_time()
|
||||
@ -1247,6 +1253,20 @@ impl Invoice {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the Duration remaining until the invoice expires.
|
||||
#[cfg(feature = "std")]
|
||||
pub fn duration_until_expiry(&self) -> Duration {
|
||||
SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)
|
||||
.map(|now| self.expiration_remaining_from_epoch(now))
|
||||
.unwrap_or(Duration::from_nanos(0))
|
||||
}
|
||||
|
||||
/// Returns the Duration remaining until the invoice expires given the current time.
|
||||
/// `time` is the timestamp as a duration since the Unix epoch.
|
||||
pub fn expiration_remaining_from_epoch(&self, time: Duration) -> Duration {
|
||||
self.expires_at().map(|x| x.checked_sub(time)).flatten().unwrap_or(Duration::from_nanos(0))
|
||||
}
|
||||
|
||||
/// Returns whether the expiry time would pass at the given point in time.
|
||||
/// `at_time` is the timestamp as a duration since the Unix epoch.
|
||||
pub fn would_expire(&self, at_time: Duration) -> bool {
|
||||
|
Loading…
Reference in New Issue
Block a user