use crate::client::Client;
use crate::error::Error;
use nordnet_model::models::tradables::{
TradableEligibility, TradableInfo, TradableKey, TradablePublicTrades,
};
impl Client {
#[doc(alias = "GET /tradables/info/{tradables}")]
pub async fn get_tradable_info(&self, key: &TradableKey) -> Result<Vec<TradableInfo>, Error> {
let path = format!("/tradables/info/{key}");
match self.get::<Vec<TradableInfo>>(&path).await {
Ok(v) => Ok(v),
Err(Error::Decode { ref body, .. }) if body.trim().is_empty() => Ok(vec![]),
Err(e) => Err(e),
}
}
#[doc(alias = "GET /tradables/trades/{tradables}")]
pub async fn list_tradable_trades(
&self,
key: &TradableKey,
count: Option<&str>,
) -> Result<Vec<TradablePublicTrades>, Error> {
let path = match count {
Some(c) => format!("/tradables/trades/{key}?count={c}"),
None => format!("/tradables/trades/{key}"),
};
match self.get::<Vec<TradablePublicTrades>>(&path).await {
Ok(v) => Ok(v),
Err(Error::Decode { ref body, .. }) if body.trim().is_empty() => Ok(vec![]),
Err(e) => Err(e),
}
}
#[doc(alias = "GET /tradables/validation/suitability/{tradables}")]
pub async fn get_suitability(
&self,
key: &TradableKey,
) -> Result<Vec<TradableEligibility>, Error> {
let path = format!("/tradables/validation/suitability/{key}");
match self.get::<Vec<TradableEligibility>>(&path).await {
Ok(v) => Ok(v),
Err(Error::Decode { ref body, .. }) if body.trim().is_empty() => Ok(vec![]),
Err(e) => Err(e),
}
}
}