mod websocket; use crate::config::{Config, ALPACA_API_BASE, ALPACA_API_KEY, ALPACA_API_SECRET}; use futures_util::StreamExt; use qrust::types::alpaca; use std::sync::Arc; use tokio::spawn; use tokio_tungstenite::connect_async; pub async fn run(config: Arc) { let (websocket, _) = connect_async(&format!("wss://{}.alpaca.markets/stream", *ALPACA_API_BASE)) .await .unwrap(); let (mut websocket_sink, mut websocket_stream) = websocket.split(); alpaca::websocket::trading::authenticate( &mut websocket_sink, &mut websocket_stream, (*ALPACA_API_KEY).to_string(), (*ALPACA_API_SECRET).to_string(), ) .await; alpaca::websocket::trading::subscribe(&mut websocket_sink, &mut websocket_stream).await; spawn(websocket::run(config, websocket_stream)); }