mirror of
https://github.com/aljazceru/cdk.git
synced 2026-02-05 21:26:13 +01:00
feat: remove paid field
This commit is contained in:
@@ -126,8 +126,6 @@ impl Mint {
|
||||
.await?
|
||||
.ok_or(Error::UnknownQuote)?;
|
||||
|
||||
let paid = quote.state == MintQuoteState::Paid;
|
||||
|
||||
// Since the pending state is not part of the NUT it should not be part of the
|
||||
// response. In practice the wallet should not be checking the state of
|
||||
// a quote while waiting for the mint response.
|
||||
@@ -139,7 +137,6 @@ impl Mint {
|
||||
Ok(MintQuoteBolt11Response {
|
||||
quote: quote.id,
|
||||
request: quote.request,
|
||||
paid: Some(paid),
|
||||
state,
|
||||
expiry: Some(quote.expiry),
|
||||
})
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
|
||||
use serde::{Deserialize, Deserializer, Serialize};
|
||||
use serde_json::Value;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use thiserror::Error;
|
||||
|
||||
use super::nut00::{BlindSignature, BlindedMessage, CurrencyUnit, PaymentMethod};
|
||||
@@ -80,96 +79,25 @@ impl FromStr for QuoteState {
|
||||
}
|
||||
|
||||
/// Mint quote response [NUT-04]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[cfg_attr(feature = "swagger", derive(utoipa::ToSchema))]
|
||||
pub struct MintQuoteBolt11Response {
|
||||
/// Quote Id
|
||||
pub quote: String,
|
||||
/// Payment request to fulfil
|
||||
pub request: String,
|
||||
// TODO: To be deprecated
|
||||
/// Whether the the request haas be paid
|
||||
/// Deprecated
|
||||
pub paid: Option<bool>,
|
||||
/// Quote State
|
||||
pub state: MintQuoteState,
|
||||
/// Unix timestamp until the quote is valid
|
||||
pub expiry: Option<u64>,
|
||||
}
|
||||
|
||||
// A custom deserializer is needed until all mints
|
||||
// update some will return without the required state.
|
||||
impl<'de> Deserialize<'de> for MintQuoteBolt11Response {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let value = Value::deserialize(deserializer)?;
|
||||
|
||||
let quote: String = serde_json::from_value(
|
||||
value
|
||||
.get("quote")
|
||||
.ok_or(serde::de::Error::missing_field("quote"))?
|
||||
.clone(),
|
||||
)
|
||||
.map_err(|_| serde::de::Error::custom("Invalid quote id string"))?;
|
||||
|
||||
let request: String = serde_json::from_value(
|
||||
value
|
||||
.get("request")
|
||||
.ok_or(serde::de::Error::missing_field("request"))?
|
||||
.clone(),
|
||||
)
|
||||
.map_err(|_| serde::de::Error::custom("Invalid request string"))?;
|
||||
|
||||
let paid: Option<bool> = value.get("paid").and_then(|p| p.as_bool());
|
||||
|
||||
let state: Option<String> = value
|
||||
.get("state")
|
||||
.and_then(|s| serde_json::from_value(s.clone()).ok());
|
||||
|
||||
let (state, paid) = match (state, paid) {
|
||||
(None, None) => return Err(serde::de::Error::custom("State or paid must be defined")),
|
||||
(Some(state), _) => {
|
||||
let state: QuoteState = QuoteState::from_str(&state)
|
||||
.map_err(|_| serde::de::Error::custom("Unknown state"))?;
|
||||
let paid = state == QuoteState::Paid;
|
||||
|
||||
(state, paid)
|
||||
}
|
||||
(None, Some(paid)) => {
|
||||
let state = if paid {
|
||||
QuoteState::Paid
|
||||
} else {
|
||||
QuoteState::Unpaid
|
||||
};
|
||||
(state, paid)
|
||||
}
|
||||
};
|
||||
|
||||
let expiry = value
|
||||
.get("expiry")
|
||||
.ok_or(serde::de::Error::missing_field("expiry"))?
|
||||
.as_u64();
|
||||
|
||||
Ok(Self {
|
||||
quote,
|
||||
request,
|
||||
paid: Some(paid),
|
||||
state,
|
||||
expiry,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "mint")]
|
||||
impl From<crate::mint::MintQuote> for MintQuoteBolt11Response {
|
||||
fn from(mint_quote: crate::mint::MintQuote) -> MintQuoteBolt11Response {
|
||||
let paid = mint_quote.state == QuoteState::Paid;
|
||||
MintQuoteBolt11Response {
|
||||
quote: mint_quote.id,
|
||||
request: mint_quote.request,
|
||||
paid: Some(paid),
|
||||
state: mint_quote.state,
|
||||
expiry: Some(mint_quote.expiry),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user