#![allow(dead_code)]
use serde::{Deserialize, Serialize};
use crate::error::Result;
use super::super::build_client;
use super::super::models::PaginatedResponseDTO;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AnalystRatingDTO {
pub ticker: Option<String>,
pub analyst: Option<String>,
pub analyst_firm: Option<String>,
pub action: Option<String>,
pub rating: Option<String>,
pub prior_rating: Option<String>,
pub target_price: Option<f64>,
pub prior_target_price: Option<f64>,
pub date: Option<String>,
pub url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AnalystInsightDTO {
pub ticker: Option<String>,
pub analyst: Option<String>,
pub analyst_firm: Option<String>,
pub insight_type: Option<String>,
pub rating: Option<String>,
pub rationale: Option<String>,
pub target_price: Option<f64>,
pub date: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AnalystDetailDTO {
pub analyst_name: Option<String>,
pub firm_name: Option<String>,
pub analyst_id: Option<String>,
pub firm_id: Option<String>,
pub ratings_count: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct BullBearDTO {
pub ticker: Option<String>,
pub bull_case: Option<String>,
pub bear_case: Option<String>,
pub date: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct ConsensusRatingDTO {
pub ticker: Option<String>,
pub buy: Option<u32>,
pub hold: Option<u32>,
pub sell: Option<u32>,
pub strong_buy: Option<u32>,
pub strong_sell: Option<u32>,
pub target_price: Option<f64>,
pub target_high: Option<f64>,
pub target_low: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct CorporateGuidanceDTO {
pub ticker: Option<String>,
pub eps_guidance: Option<f64>,
pub revenue_guidance: Option<f64>,
pub period: Option<String>,
pub date: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct EarningsAnnouncementDTO {
pub ticker: Option<String>,
pub name: Option<String>,
pub date: Option<String>,
pub quarter: Option<String>,
pub eps_actual: Option<f64>,
pub eps_estimate: Option<f64>,
pub revenue_actual: Option<f64>,
pub revenue_estimate: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct FirmDetailDTO {
pub name: Option<String>,
pub id: Option<String>,
pub analysts_count: Option<u32>,
}
pub async fn analyst_ratings(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<AnalystRatingDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/analyst-ratings", params)
.await
}
pub async fn analyst_insights(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<AnalystInsightDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/analyst-insights", params)
.await
}
pub async fn analyst_details(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<AnalystDetailDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/analyst-details", params)
.await
}
pub async fn bulls_bears(params: &[(&str, &str)]) -> Result<PaginatedResponseDTO<BullBearDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/bulls-bears-say", params)
.await
}
pub async fn consensus_ratings(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<ConsensusRatingDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/consensus-ratings", params)
.await
}
pub async fn corporate_guidance(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<CorporateGuidanceDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/corporate-guidance", params)
.await
}
pub async fn benzinga_earnings(
params: &[(&str, &str)],
) -> Result<PaginatedResponseDTO<EarningsAnnouncementDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/earnings", params)
.await
}
pub async fn firm_details(params: &[(&str, &str)]) -> Result<PaginatedResponseDTO<FirmDetailDTO>> {
let client = build_client()?;
client
.get("/v2/reference/news/benzinga/firm-details", params)
.await
}