@@ -578,7 +578,7 @@ tokio_test::block_on(async {
578
578
) ,
579
579
pub async fn $fn_name( & self , $param: $param_type) -> Result <impl TryStream <Ok =( Event , Mastodon ) , Error =Error > + ' _> {
580
580
use $crate:: event_stream:: event_stream;
581
- let mut url: Url = self . route( concat!( "/api/v1/streaming/" , stringify! ( $stream) ) ) . parse( ) ?;
581
+ let mut url: Url = self . route( concat!( "/api/v1/streaming/" , $stream) ) . parse( ) ?;
582
582
url. query_pairs_mut( ) . append_pair( stringify!( $param) , $param. as_ref( ) ) ;
583
583
let url = url. to_string( ) ;
584
584
let response = self . authenticated( self . client. get( url. as_str( ) ) ) . header( "Accept" , "application/json" ) . send( ) . await ?;
@@ -598,5 +598,56 @@ tokio_test::block_on(async {
598
598
}
599
599
streaming! { $( $rest) * }
600
600
} ;
601
+ ( $desc: tt $fn_name: ident( flag $param: ident) @$stream: literal, $( $rest: tt) * ) => {
602
+ doc_comment! {
603
+ concat!(
604
+ $desc,
605
+ "\n \n Example:\n \n " ,
606
+ "
607
+ use mastodon_async::prelude::*;
608
+ use mastodon_async::entities::event::Event;
609
+ use futures_util::{pin_mut, StreamExt, TryStreamExt};
610
+
611
+ tokio_test::block_on(async {
612
+ let data = Data::default();
613
+ let client = Mastodon::from(data);
614
+ let stream = client." ,
615
+ stringify!( $fn_name) ,
616
+ "(false).await.unwrap();
617
+ stream.try_for_each(|event| async move {
618
+ match event {
619
+ Event::Update(ref status) => { /* .. */ },
620
+ Event::Notification(ref notification) => { /* .. */ },
621
+ Event::Delete(ref id) => { /* .. */ },
622
+ Event::FiltersChanged => { /* .. */ },
623
+ }
624
+ Ok(())
625
+ }).await.unwrap();
626
+ });"
627
+ ) ,
628
+ pub async fn $fn_name( & self , $param: bool ) -> Result <impl TryStream <Ok =( Event , Mastodon ) , Error =Error > + ' _> {
629
+ use $crate:: event_stream:: event_stream;
630
+ let mut url: Url = self . route( concat!( "/api/v1/streaming/" , $stream) ) . parse( ) ?;
631
+ if $param {
632
+ url. query_pairs_mut( ) . append_key_only( stringify!( $param) ) ;
633
+ }
634
+ let url = url. to_string( ) ;
635
+ let response = self . authenticated( self . client. get( url. as_str( ) ) ) . header( "Accept" , "application/json" ) . send( ) . await ?;
636
+ debug!(
637
+ status = log_serde!( response Status ) , url = as_debug!( url) ,
638
+ headers = log_serde!( response Headers ) ;
639
+ "received API response"
640
+ ) ;
641
+ let status = response. status( ) ;
642
+ if status. is_success( ) {
643
+ Ok ( event_stream( response, url, self ) )
644
+ } else {
645
+ let response = response. json( ) . await ?;
646
+ Err ( Error :: Api { status, response } )
647
+ }
648
+ }
649
+ }
650
+ streaming! { $( $rest) * }
651
+ } ;
601
652
( ) => { }
602
653
}
0 commit comments