use crate::auth::{Alpaca, TradingType};
use crate::request::create_trading_request;
use reqwest::Method;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Clock {
pub timestamp: String,
pub is_open: bool,
pub next_open: String,
pub next_close: String,
}
pub async fn get_clock(alpaca: &Alpaca) -> Result<Clock, Box<dyn std::error::Error>> {
let response = create_trading_request::<()>(alpaca, Method::GET, "/v2/clock", None).await?;
if !response.status().is_success() {
let text = response.text().await.unwrap_or_default();
return Err(format!("Getting clock failed: {}", text).into());
};
Ok(response.json().await?)
}
#[tokio::test]
async fn test_clock() {
let alpaca = Alpaca::from_env(TradingType::Paper).unwrap();
match get_clock(&alpaca).await {
Ok(clock) => {
if clock.is_open {
assert!(clock.is_open)
} else {
assert!(!clock.is_open)
}
}
Err(e) => println!("Error: {e:?}"),
}
}