use serde::{Deserialize, Serialize};
use crate::error::Result;
use super::super::build_client;
use super::super::models::PaginatedResponse;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Publisher {
pub name: Option<String>,
pub homepage_url: Option<String>,
pub logo_url: Option<String>,
pub favicon_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Insight {
pub ticker: Option<String>,
pub sentiment: Option<String>,
pub sentiment_reasoning: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct NewsArticle {
pub id: Option<String>,
pub publisher: Option<Publisher>,
pub title: Option<String>,
pub author: Option<String>,
pub published_utc: Option<String>,
pub article_url: Option<String>,
pub image_url: Option<String>,
pub description: Option<String>,
pub keywords: Option<Vec<String>>,
pub tickers: Option<Vec<String>>,
pub amp_url: Option<String>,
pub insights: Option<Vec<Insight>>,
}
pub async fn stock_news(params: &[(&str, &str)]) -> Result<PaginatedResponse<NewsArticle>> {
let client = build_client()?;
client.get("/v2/reference/news", params).await
}