#![allow(unused_doc_comments)]
macro_rules! generate_enum {
($name:ident, $($variant:ident => $str_val:expr),*) => {
#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
pub enum $name {
$(
$variant,
)*
}
impl $name {
pub fn as_str(&self) -> &'static str {
match self {
$(
$name::$variant => $str_val,
)*
}
}
pub fn to_string(&self) -> String {
self.as_str().to_string()
}
}
impl std::fmt::Display for $name {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.as_str())
}
}
};
}
generate_enum!(OrderType,
Buy => "buy",
Sell => "sell"
);
generate_enum!(TradingPair,
BTCEUR => "BTCEUR",
BCHEUR => "BCHEUR",
ETHBTC => "ETHBTC",
ETHEUR => "ETHEUR",
LTCEUR => "LTCEUR",
LTCBTC => "LTCBTC",
XRPEUR => "XRPEUR",
XRPBTC => "XRPBTC",
EOSEUR => "EOSEUR",
EOSBTC => "EOSBTC",
BNBEUR => "BNBEUR",
BNBBTC => "BNBBTC",
XMREUR => "XMREUR",
XMRBTC => "XMRBTC",
TRXEUR => "TRXEUR",
TRXBTC => "TRXBTC",
ETCBTC => "ETCBTC",
ETCEUR => "ETCEUR",
DASHEUR => "DASHEUR",
DASHBTC => "DASHBTC",
ZECEUR => "ZECEUR",
ZECBTC => "ZECBTC",
REPEUR => "REPEUR",
REPBTC => "REPBTC",
BATEUR => "BATEUR",
BATBTC => "BATBTC",
AIDUSDEUR => "AIDUSDEUR",
AIDUSDBTC => "AIDUSDBTC",
XLMEUR => "XLMEUR",
XLMBTC => "XLMBTC",
AVAXEUR => "AVAXEUR",
AVAXBTC => "AVAXBTC",
ADAEUR => "ADAEUR",
ADABTC => "ADABTC",
GRTEUR => "GRTEUR",
GRTBTC => "GRTBTC",
LINKEUR => "LINKEUR",
LINKBTC => "LINKBTC",
MATICBTC => "MATICBTC",
MATICEUR => "MATICEUR",
SOLEUR => "SOLEUR",
SOLBTC => "SOLBTC",
DOTEUR => "DOTEUR",
DOTBTC => "DOTBTC",
UNIEUR => "UNIEUR",
UNIBTC => "UNIBTC",
XMRETH => "XMRETH",
XRPETH => "XRPETH",
LTCETH => "LTCETH",
DASHETH => "DASHETH",
ZECETH => "ZECETH",
REPBCH => "REPBCH",
BATBCH => "BATBCH",
XLMBCH => "XLMBCH",
ADAETH => "ADAETH",
GRTETH => "GRTETH",
LINKETH => "LINKETH",
MATICETH => "MATICETH",
SOLETH => "SOLETH",
DOTETH => "DOTETH",
UNIBNB => "UNIBNB",
EURCHF => "EURCHF",
BTCCHF => "BTCCHF",
ETHCHF => "ETHCHF"
);
generate_enum!(Currency,
BTC => "BTC",
BCH => "BCH",
ETH => "ETH",
EUR => "EUR",
LTC => "LTC",
XRP => "XRP",
EOS => "EOS",
BNB => "BNB",
XMR => "XMR",
TRX => "TRX",
ETC => "ETC",
DASH => "DASH",
ZEC => "ZEC",
REP => "REP",
BAT => "BAT",
AIDUS => "AIDUS",
XLM => "XLM",
AVAX => "AVAX",
ADA => "ADA",
GRT => "GRT",
LINK => "LINK",
MATIC => "MATIC",
SOL => "SOL",
DOT => "DOT",
UNI => "UNI",
CHF => "CHF",
USD => "USD"
);
const ALL_TRADING_PAIRS: &[TradingPair] = &[
TradingPair::BTCEUR,
TradingPair::BCHEUR,
TradingPair::ETHBTC,
TradingPair::ETHEUR,
TradingPair::LTCEUR,
TradingPair::LTCBTC,
TradingPair::XRPEUR,
TradingPair::XRPBTC,
TradingPair::EOSEUR,
TradingPair::EOSBTC,
TradingPair::BNBEUR,
TradingPair::BNBBTC,
TradingPair::XMREUR,
TradingPair::XMRBTC,
TradingPair::TRXEUR,
TradingPair::TRXBTC,
TradingPair::ETCBTC,
TradingPair::ETCEUR,
TradingPair::DASHEUR,
TradingPair::DASHBTC,
TradingPair::ZECEUR,
TradingPair::ZECBTC,
TradingPair::REPEUR,
TradingPair::REPBTC,
TradingPair::BATEUR,
TradingPair::BATBTC,
TradingPair::AIDUSDEUR,
TradingPair::AIDUSDBTC,
TradingPair::XLMEUR,
TradingPair::XLMBTC,
TradingPair::AVAXEUR,
TradingPair::AVAXBTC,
TradingPair::ADAEUR,
TradingPair::ADABTC,
TradingPair::GRTEUR,
TradingPair::GRTBTC,
TradingPair::LINKEUR,
TradingPair::LINKBTC,
TradingPair::MATICBTC,
TradingPair::MATICEUR,
TradingPair::SOLEUR,
TradingPair::SOLBTC,
TradingPair::DOTEUR,
TradingPair::DOTBTC,
TradingPair::UNIEUR,
TradingPair::UNIBTC,
TradingPair::XMRETH,
TradingPair::XRPETH,
TradingPair::LTCETH,
TradingPair::DASHETH,
TradingPair::ZECETH,
TradingPair::REPBCH,
TradingPair::BATBCH,
TradingPair::XLMBCH,
TradingPair::ADAETH,
TradingPair::GRTETH,
TradingPair::LINKETH,
TradingPair::MATICETH,
TradingPair::SOLETH,
TradingPair::DOTETH,
TradingPair::UNIBNB,
TradingPair::EURCHF,
TradingPair::BTCCHF,
TradingPair::ETHCHF,
];
impl TradingPair {
pub fn from_str(s: &str) -> Result<Self, crate::bitcoin_de_trading_api_sdk_v4::errors::Error> { let lower_s = s.to_ascii_lowercase();
for pair in ALL_TRADING_PAIRS.iter() {
if pair.as_str().to_ascii_lowercase() == lower_s {
return Ok(*pair); }
}
Err(crate::bitcoin_de_trading_api_sdk_v4::errors::Error::Other(format!("Invalid trading pair: {}", s))) }
}