File tree Expand file tree Collapse file tree 2 files changed +13
-4
lines changed
Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Original file line number Diff line number Diff line change 11use crate :: error;
22use base64;
33use serde_derive:: { Deserialize , Serialize } ;
4+ use std:: collections:: HashMap ;
45
56#[ derive( Deserialize , Clone , Serialize ) ]
67pub struct EncodedMessage {
78 data : String ,
9+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
10+ attributes : Option < HashMap < String , String > > ,
811}
912
1013pub trait FromPubSubMessage
@@ -19,10 +22,10 @@ impl EncodedMessage {
1922 base64:: decode ( & self . data )
2023 }
2124
22- pub fn new < T : serde:: Serialize > ( data : & T ) -> Self {
25+ pub fn new < T : serde:: Serialize > ( data : & T , attributes : Option < HashMap < String , String > > ) -> Self {
2326 let json = serde_json:: to_string ( data) . unwrap ( ) ;
2427 let data = base64:: encode ( & json) ;
25- EncodedMessage { data }
28+ EncodedMessage { data, attributes }
2629 }
2730}
2831
Original file line number Diff line number Diff line change @@ -61,14 +61,20 @@ impl Topic {
6161 pub async fn publish < T : serde:: Serialize > (
6262 & self ,
6363 data : T ,
64+ ) -> Result < PublishMessageResponse , error:: Error > {
65+ self . publish_message ( EncodedMessage :: new ( & data, None ) ) . await
66+ }
67+
68+ pub async fn publish_message (
69+ & self ,
70+ message : EncodedMessage ,
6471 ) -> Result < PublishMessageResponse , error:: Error > {
6572 let uri: hyper:: Uri = format ! ( "{}/v1/{}:publish" , * PUBSUB_HOST , self . name)
6673 . parse ( )
6774 . unwrap ( ) ;
6875
69- let new_message = EncodedMessage :: new ( & data) ;
7076 let payload = PublishMessageRequest {
71- messages : vec ! [ new_message ] ,
77+ messages : vec ! [ message ] ,
7278 } ;
7379
7480 self . perform_request :: < PublishMessageRequest , PublishMessageResponse > (
You can’t perform that action at this time.
0 commit comments