28 lines
847 B
Rust
28 lines
847 B
Rust
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<Config>) {
|
|
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));
|
|
}
|