bitbank_api/stream/
transactions.rs1use super::*;
2
3pub use crate::public::transactions::Transaction;
4
5#[derive(TypedBuilder)]
6pub struct Params {
7 pair: Pair,
8}
9
10#[derive(Deserialize, Debug)]
11struct Transactions {
12 transactions: Vec<Transaction>,
13}
14
15pub async fn connect(
16 params: Params,
17) -> anyhow::Result<impl tokio_stream::Stream<Item = Transaction>> {
18 use futures::stream::{self, StreamExt};
19 let pair = params.pair;
20 let room_id = format!("transactions_{pair}");
21 let st = do_connect::<Transactions>(&room_id).await?;
22 let st = st.flat_map(|x| stream::iter(x.transactions));
23 Ok(st)
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29
30 #[tokio::test]
31 async fn test() -> anyhow::Result<()> {
32 use futures_util::{pin_mut, StreamExt};
33
34 let params = Params::builder().pair(Pair(XRP, JPY)).build();
35 let st = connect(params).await?;
36 pin_mut!(st);
37 while let Some(x) = st.next().await {
38 break;
39 }
40 Ok(())
41 }
42}