@@ -7,7 +7,7 @@ use bevy_tasks::IoTaskPool;
77use crossbeam_channel:: { Receiver , Sender } ;
88use ehttp:: { Headers , Request , Response } ;
99
10- use crate :: prelude:: TypedRequest ;
10+ use crate :: { prelude:: TypedRequest , typed :: HttpObserved } ;
1111
1212pub mod prelude;
1313mod typed;
@@ -94,9 +94,9 @@ impl Plugin for HttpClientPlugin {
9494 if !app. world ( ) . contains_resource :: < HttpClientSetting > ( ) {
9595 app. init_resource :: < HttpClientSetting > ( ) ;
9696 }
97- app. add_event :: < HttpRequest > ( ) ;
98- app. add_event :: < HttpResponse > ( ) ;
99- app. add_event :: < HttpResponseError > ( ) ;
97+ app. add_message :: < HttpRequest > ( ) ;
98+ app. add_message :: < HttpResponse > ( ) ;
99+ app. add_message :: < HttpResponseError > ( ) ;
100100 app. add_systems ( Update , ( handle_request, handle_tasks) ) ;
101101 }
102102}
@@ -135,7 +135,7 @@ impl HttpClientSetting {
135135 }
136136}
137137
138- #[ derive( Event , Debug , Clone ) ]
138+ #[ derive( Event , Message , Debug , Clone ) ]
139139pub struct HttpRequest {
140140 pub from_entity : Option < Entity > ,
141141 pub request : Request ,
@@ -208,7 +208,7 @@ impl HttpClient {
208208 /// use bevy_http_client::HttpClient;
209209 /// use bevy_ecs::entity::Entity;
210210 ///
211- /// let entity = Entity::from_raw (42); // Example entity
211+ /// let entity = Entity::from_raw_u32 (42).unwrap( ); // Example entity
212212 /// let http_client = HttpClient::new_with_entity(entity);
213213 /// ```
214214 pub fn new_with_entity ( entity : Entity ) -> Self {
@@ -588,7 +588,7 @@ impl HttpClient {
588588 /// use bevy_http_client::HttpClient;
589589 /// use bevy_ecs::entity::Entity;
590590 ///
591- /// let entity = Entity::from_raw (42); // Example entity
591+ /// let entity = Entity::from_raw_u32 (42).unwrap( ); // Example entity
592592 /// let http_client = HttpClient::new().entity(entity);
593593 /// ```
594594 pub fn entity ( mut self , entity : Entity ) -> Self {
@@ -737,7 +737,9 @@ impl HttpClient {
737737 since = "0.8.3" ,
738738 note = "Use `try_with_type()` instead for better error handling"
739739 ) ]
740- pub fn with_type < T : for < ' a > serde:: Deserialize < ' a > > ( self ) -> TypedRequest < T > {
740+ pub fn with_type < T : Send + Sync + ' static + for < ' a > serde:: Deserialize < ' a > > (
741+ self ,
742+ ) -> TypedRequest < T > {
741743 TypedRequest :: new (
742744 Request {
743745 method : self . method . expect ( "method is required" ) ,
@@ -782,7 +784,7 @@ impl HttpClient {
782784 /// Err(e) => eprintln!("Build failed: {}", e),
783785 /// }
784786 /// ```
785- pub fn try_with_type < T : for < ' a > serde:: Deserialize < ' a > > (
787+ pub fn try_with_type < T : Send + Sync + ' static + for < ' a > serde:: Deserialize < ' a > > (
786788 self ,
787789 ) -> Result < TypedRequest < T > , HttpClientBuilderError > {
788790 let method = self . method . ok_or ( HttpClientBuilderError :: MissingMethod ) ?;
@@ -807,11 +809,11 @@ impl HttpClient {
807809}
808810
809811/// wrap for ehttp response
810- #[ derive( Event , Debug , Clone , Deref ) ]
812+ #[ derive( Event , Message , Debug , Clone , Deref ) ]
811813pub struct HttpResponse ( pub Response ) ;
812814
813815/// wrap for ehttp error
814- #[ derive( Event , Debug , Clone , Deref ) ]
816+ #[ derive( Event , Message , Debug , Clone , Deref ) ]
815817pub struct HttpResponseError {
816818 pub err : String ,
817819}
@@ -832,7 +834,7 @@ pub struct RequestTask {
832834fn handle_request (
833835 mut commands : Commands ,
834836 mut req_res : ResMut < HttpClientSetting > ,
835- mut requests : EventReader < HttpRequest > ,
837+ mut requests : MessageReader < HttpRequest > ,
836838 q_tasks : Query < & RequestTask > ,
837839) {
838840 let thread_pool = IoTaskPool :: get ( ) ;
@@ -856,24 +858,26 @@ fn handle_request(
856858 match response {
857859 Ok ( res) => {
858860 if let Some ( mut events) =
859- world. get_resource_mut :: < Events < HttpResponse > > ( )
861+ world. get_resource_mut :: < Messages < HttpResponse > > ( )
860862 {
861- events. send ( HttpResponse ( res. clone ( ) ) ) ;
863+ events. write ( HttpResponse ( res. clone ( ) ) ) ;
862864 } else {
863865 bevy_log:: error!( "HttpResponse events resource not found" ) ;
864866 }
865- world. trigger_targets ( HttpResponse ( res) , entity ) ;
867+ world. trigger ( HttpObserved :: new ( entity , HttpResponse ( res) ) ) ;
866868 }
867869 Err ( e) => {
868870 if let Some ( mut events) =
869- world. get_resource_mut :: < Events < HttpResponseError > > ( )
871+ world. get_resource_mut :: < Messages < HttpResponseError > > ( )
870872 {
871- events. send ( HttpResponseError :: new ( e. to_string ( ) ) ) ;
873+ events. write ( HttpResponseError :: new ( e. to_string ( ) ) ) ;
872874 } else {
873875 bevy_log:: error!( "HttpResponseError events resource not found" ) ;
874876 }
875- world
876- . trigger_targets ( HttpResponseError :: new ( e. to_string ( ) ) , entity) ;
877+ world. trigger ( HttpObserved :: new (
878+ entity,
879+ HttpResponseError :: new ( e. to_string ( ) ) ,
880+ ) ) ;
877881 }
878882 }
879883
0 commit comments