tradingview-rs 0.0.2

Tradingview datafeed api `tradingview-rs` project.
Documentation
use serde::Deserialize;
use serde::Serialize;
use serde_json::Value;

#[derive(Debug, Default, Clone, Deserialize, Serialize, Copy)]
pub enum NewsArea {
    #[default]
    World,
    Americas,
    Europe,
    Asia,
    Oceania,
    Africa,
}

#[derive(Debug, Default, Clone, Deserialize, Serialize, Copy)]
pub enum NewsSection {
    #[default]
    AnalysisAll,
    AnalysisRecommendations,
    EstimatesAndForecasts,
    MarketToday,
    Surveys,
    PressRelease,
    FinancialStatement,
    InsiderTrading,
    ESG,
    CorpActivitiesAll,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default)]
pub struct NewsHeadlines {
    #[serde(rename = "items")]
    pub items: Vec<News>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct News {
    pub id: String,
    pub title: String,
    pub provider: String,
    pub published: i64,
    pub source: String,
    pub urgency: i64,
    pub permission: Option<String>,
    #[serde(default)]
    pub related_symbols: Vec<RelatedSymbol>,
    pub story_path: String,
    pub link: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RelatedSymbol {
    pub symbol: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct NewsContent {
    pub short_description: String,
    pub ast_description: AstDescription,
    pub language: String,
    pub tags: Vec<Tag>,
    #[serde(default)]
    pub robots: Vec<String>,
    pub copyright: Option<String>,
    pub id: String,
    pub title: String,
    pub provider: String,
    pub published: i64,
    pub source: String,
    pub urgency: i64,
    pub permission: Option<String>,
    pub story_path: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct AstDescription {
    #[serde(rename = "type")]
    pub type_field: String,
    pub children: Vec<Children>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct Children {
    #[serde(rename = "type")]
    pub type_field: String,
    pub children: Vec<Value>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct Tag {
    pub title: String,
    pub args: Vec<Arg>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct Arg {
    pub id: String,
    pub value: String,
}