From 5d8f35c053d888d3497c277bc4b962679c3343b1 Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Sun, 17 Dec 2023 22:45:38 +0000 Subject: [PATCH] refactor: add PaymentType enum --- crates/cashu/src/nuts/mod.rs | 2 +- crates/cashu/src/nuts/nut00.rs | 11 ++++++++++- crates/cashu/src/nuts/nut04.rs | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/crates/cashu/src/nuts/mod.rs b/crates/cashu/src/nuts/mod.rs index c59a0e1b..42249dba 100644 --- a/crates/cashu/src/nuts/mod.rs +++ b/crates/cashu/src/nuts/mod.rs @@ -12,7 +12,7 @@ pub mod nut08; #[cfg(feature = "wallet")] pub use nut00::wallet::{PreMint, PreMintSecrets, Token}; -pub use nut00::{BlindedMessage, BlindedSignature, CurrencyUnit, Proof}; +pub use nut00::{BlindedMessage, BlindedSignature, CurrencyUnit, PaymentMethod, Proof}; pub use nut01::{Keys, KeysResponse, PublicKey, SecretKey}; pub use nut02::mint::KeySet as MintKeySet; pub use nut02::{Id, KeySet, KeySetInfo, KeysetResponse}; diff --git a/crates/cashu/src/nuts/nut00.rs b/crates/cashu/src/nuts/nut00.rs index efe43c55..67d25587 100644 --- a/crates/cashu/src/nuts/nut00.rs +++ b/crates/cashu/src/nuts/nut00.rs @@ -25,19 +25,27 @@ pub struct BlindedMessage { } #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] pub enum CurrencyUnit { #[default] - #[serde(rename = "sat")] Sat, + Usd, Custom(String), } +#[derive(Deserialize, Serialize, Debug, PartialEq, Eq, Clone, Hash)] +#[serde(rename_all = "lowercase")] +pub enum PaymentMethod { + Bolt11, +} + impl FromStr for CurrencyUnit { type Err = Error; fn from_str(s: &str) -> Result { match s { "sat" => Ok(Self::Sat), + "usd" => Ok(Self::Usd), _ => Ok(Self::Custom(s.to_string())), } } @@ -47,6 +55,7 @@ impl fmt::Display for CurrencyUnit { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { CurrencyUnit::Sat => write!(f, "sat"), + CurrencyUnit::Usd => write!(f, "usd"), CurrencyUnit::Custom(unit) => write!(f, "{}", unit), } } diff --git a/crates/cashu/src/nuts/nut04.rs b/crates/cashu/src/nuts/nut04.rs index 098ed589..bf204ab0 100644 --- a/crates/cashu/src/nuts/nut04.rs +++ b/crates/cashu/src/nuts/nut04.rs @@ -2,7 +2,7 @@ // https://github.com/cashubtc/nuts/blob/main/04.md use serde::{Deserialize, Serialize}; -use super::{BlindedMessage, BlindedSignature, CurrencyUnit}; +use super::{BlindedMessage, BlindedSignature, CurrencyUnit, PaymentMethod}; use crate::Amount; /// Mint quote request [NUT-04] @@ -55,6 +55,6 @@ pub struct MintBolt11Response { /// Mint Settings #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Settings { - methods: Vec<(String, CurrencyUnit)>, + methods: Vec<(PaymentMethod, CurrencyUnit)>, disabled: bool, }