use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MarketNews {
pub category: String,
pub datetime: i64,
pub headline: String,
pub id: i64,
pub image: String,
pub related: String,
pub source: String,
pub summary: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompanyNews {
pub category: String,
pub datetime: i64,
pub headline: String,
pub id: i64,
pub image: String,
pub related: String,
pub source: String,
pub summary: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewsSentiment {
pub symbol: String,
pub buzz: NewsBuzz,
pub company_news_score: f64,
#[serde(rename = "sectorAverageBullishPercent")]
pub sector_average_bullishness: f64,
pub sector_average_news_score: f64,
pub sentiment: SentimentData,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewsBuzz {
pub articles_in_last_week: i64,
pub buzz: f64,
pub weekly_average: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SentimentData {
pub bearish_percent: f64,
pub bullish_percent: f64,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
pub enum NewsCategory {
#[serde(rename = "general")]
General,
#[serde(rename = "forex")]
Forex,
#[serde(rename = "crypto")]
Crypto,
#[serde(rename = "merger")]
Merger,
}
impl std::fmt::Display for NewsCategory {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
NewsCategory::General => write!(f, "general"),
NewsCategory::Forex => write!(f, "forex"),
NewsCategory::Crypto => write!(f, "crypto"),
NewsCategory::Merger => write!(f, "merger"),
}
}
}