use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum Category {
Markets,
Economy,
Business,
Politics,
Geopolitics,
Regulation,
Technology,
Energy,
Commodities,
Crypto,
Health,
Climate,
Security,
}
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub enum OrderBy {
PublishDate,
CreatedAt,
RevisedDate,
}
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub enum SortOrder {
#[serde(rename = "ASC")]
Asc,
#[serde(rename = "DESC")]
Desc,
}
#[derive(Clone, Debug, Default, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetArticlesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub opt_in_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tickers: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_entities: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_empty_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order_by: Option<OrderBy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<SortOrder>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub countries: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub categories: Option<Vec<Category>>,
}
#[derive(Clone, Debug, Default)]
pub struct GetArticleByLinkParams {
pub link: String,
pub include_content: bool,
pub include_entities: bool,
}
#[derive(Clone, Debug, Default, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetArticlesWebSocketParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub opt_in_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extended: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tickers: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_entities: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_empty_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub countries: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub categories: Option<Vec<Category>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_updates: Option<bool>,
}
#[derive(Clone, Debug, Default, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetRawArticlesWebSocketParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub opt_in_sources: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_updates: Option<bool>,
}