symbols_stream.rs 965 B

1234567891011121314151617181920212223242526272829303132
  1. use {futures::StreamExt, std::time::Duration};
  2. use pyth_lazer_client::history_client::{PythLazerHistoryClient, PythLazerHistoryClientConfig};
  3. use pyth_lazer_protocol::PriceFeedId;
  4. use url::Url;
  5. #[tokio::main]
  6. async fn main() -> anyhow::Result<()> {
  7. tracing_subscriber::fmt::init();
  8. let urls = std::env::args()
  9. .skip(1)
  10. .map(|s| Url::parse(&s))
  11. .collect::<Result<Vec<_>, _>>()?;
  12. let client = PythLazerHistoryClient::new(PythLazerHistoryClientConfig {
  13. urls,
  14. update_interval: Duration::from_secs(5),
  15. ..Default::default()
  16. });
  17. let mut symbols_stream = client.all_symbols_metadata_stream().await?;
  18. while let Some(symbols) = symbols_stream.next().await {
  19. println!("symbols len: {}", symbols.len());
  20. println!(
  21. "symbol 1: {:?}",
  22. symbols
  23. .iter()
  24. .find(|feed| feed.pyth_lazer_id == PriceFeedId(1))
  25. );
  26. }
  27. Ok(())
  28. }