use crate::models::prelude::*;
use derive_getters::Getters;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct AllOffersResponse {
#[serde(rename = "_links")]
pub links: ResponseLinks,
#[serde(rename = "_embedded")]
pub embedded: Embedded<OfferResponse>,
}
impl Response for AllOffersResponse {
fn from_json(json: String) -> Result<Self, String> {
let response = serde_json::from_str(&json).map_err(|e| e.to_string())?;
Ok(response)
}
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct Transaction {
asset_type: String,
asset_code: Option<String>,
asset_issuer: Option<String>,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct PriceR {
#[serde(rename = "n")]
numenator: u32,
#[serde(rename = "d")]
denominator: u32,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct OfferResponseLinks {
#[serde(rename = "self")]
self_link: Link,
offer_maker: Link,
}
#[derive(Debug, Deserialize, Serialize, Clone, Getters)]
pub struct OfferResponse {
#[serde(rename = "_links")]
links: OfferResponseLinks,
id: String,
paging_token: String,
seller: String,
selling: Transaction,
buying: Transaction,
amount: String,
#[serde(rename = "price_r")]
price_ratio: PriceR,
#[serde(rename = "price")]
price_decimal: String,
last_modified_ledger: u32,
last_modified_time: String,
sponsor: Option<String>,
}
impl Response for OfferResponse {
fn from_json(json: String) -> Result<Self, String> {
serde_json::from_str(&json).map_err(|e| e.to_string())
}
}