use super::super::chart::ChartMeta;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkResponse {
pub spark: SparkContainer,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkContainer {
pub result: Option<Vec<SparkSymbolResult>>,
pub error: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkSymbolResult {
pub symbol: String,
pub response: Vec<SparkData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkData {
pub meta: ChartMeta,
pub timestamp: Option<Vec<i64>>,
pub indicators: SparkIndicators,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkIndicators {
pub quote: Vec<SparkQuote>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct SparkQuote {
pub close: Option<Vec<Option<f64>>>,
}
impl SparkResponse {
pub(crate) fn from_json(value: serde_json::Value) -> Result<Self, serde_json::Error> {
serde_json::from_value(value)
}
}