File tree Expand file tree Collapse file tree 2 files changed +15
-4
lines changed
Expand file tree Collapse file tree 2 files changed +15
-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+ attributes : HashMap < String , String > ,
810}
911
1012pub trait FromPubSubMessage
@@ -19,10 +21,13 @@ impl EncodedMessage {
1921 base64:: decode ( & self . data )
2022 }
2123
22- pub fn new < T : serde:: Serialize > ( data : & T ) -> Self {
24+ pub fn new < T : serde:: Serialize > ( data : & T , attributes : Option < HashMap < String , String > > ) -> Self {
2325 let json = serde_json:: to_string ( data) . unwrap ( ) ;
2426 let data = base64:: encode ( & json) ;
25- EncodedMessage { data }
27+ EncodedMessage {
28+ data,
29+ attributes : attributes. unwrap_or_default ( ) ,
30+ }
2631 }
2732}
2833
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