skinport 0.1.1

Skinport API wrapper for Rust
Documentation
use serde::{Deserialize, Serialize};

use crate::util::currency::Currency;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Sale {
    pub price: f64,
    pub wear_value: Option<u32>,
    pub sold_at: i64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalesSummary {
    pub min: Option<f64>,
    pub max: Option<f64>,
    #[serde(rename = "avg")]
    pub average: Option<f64>,
    pub volume: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalesHistoryResponse {
    pub market_hash_name: String,
    #[serde(
        serialize_with = "Currency::serialize",
        deserialize_with = "Currency::deserialize"
    )]
    pub currency: Currency,
    pub item_page: String,
    pub market_page: String,
    pub sales: Option<Vec<Sale>>,
    #[serde(rename = "last_7_days")]
    pub last_week: SalesSummary,
    #[serde(rename = "last_30_days")]
    pub last_month: SalesSummary,
    #[serde(rename = "last_90_days")]
    pub last_quarter: SalesSummary,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalesOutOfStockResponse {
    pub market_hash_name: String,
    pub version: Option<String>,
    #[serde(
        serialize_with = "Currency::serialize",
        deserialize_with = "Currency::deserialize"
    )]
    pub currency: Currency,
    pub suggested_price: Option<f64>,
    #[serde(rename = "avg_sale_price")]
    pub average_sale_price: Option<f64>,
    #[serde(rename = "sales_last_90d")]
    pub sales_last_quarter: u64,
}