finance_query/adapters/polygon/stocks/
news.rs1use serde::{Deserialize, Serialize};
4
5use crate::error::Result;
6
7use super::super::build_client;
8use super::super::models::PaginatedResponse;
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12#[non_exhaustive]
13pub struct Publisher {
14 pub name: Option<String>,
16 pub homepage_url: Option<String>,
18 pub logo_url: Option<String>,
20 pub favicon_url: Option<String>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
26#[non_exhaustive]
27pub struct Insight {
28 pub ticker: Option<String>,
30 pub sentiment: Option<String>,
32 pub sentiment_reasoning: Option<String>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38#[non_exhaustive]
39pub struct NewsArticle {
40 pub id: Option<String>,
42 pub publisher: Option<Publisher>,
44 pub title: Option<String>,
46 pub author: Option<String>,
48 pub published_utc: Option<String>,
50 pub article_url: Option<String>,
52 pub image_url: Option<String>,
54 pub description: Option<String>,
56 pub keywords: Option<Vec<String>>,
58 pub tickers: Option<Vec<String>>,
60 pub amp_url: Option<String>,
62 pub insights: Option<Vec<Insight>>,
64}
65
66pub async fn stock_news(params: &[(&str, &str)]) -> Result<PaginatedResponse<NewsArticle>> {
70 let client = build_client()?;
71 client.get("/v2/reference/news", params).await
72}