From 94453d7883328948502d592795b5b2aabde2cd21 Mon Sep 17 00:00:00 2001 From: Ernestas Poskus Date: Mon, 27 Dec 2021 13:04:56 +0200 Subject: [PATCH] pubsub: add publish_messages methods --- google-cloud/src/pubsub/mod.rs | 4 +++- google-cloud/src/pubsub/topic.rs | 27 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/google-cloud/src/pubsub/mod.rs b/google-cloud/src/pubsub/mod.rs index 8eac21fb..1d92e45d 100644 --- a/google-cloud/src/pubsub/mod.rs +++ b/google-cloud/src/pubsub/mod.rs @@ -2,7 +2,9 @@ mod client; mod message; mod subscription; mod topic; -mod api { + +/// API proto structures +pub mod api { include!("api/google.pubsub.v1.rs"); } diff --git a/google-cloud/src/pubsub/topic.rs b/google-cloud/src/pubsub/topic.rs index 822dab0e..99d0f528 100644 --- a/google-cloud/src/pubsub/topic.rs +++ b/google-cloud/src/pubsub/topic.rs @@ -80,16 +80,18 @@ impl Topic { } /// Publish a message onto this topic. - pub async fn publish(&mut self, data: impl Into>) -> Result<(), Error> { + pub async fn publish_message(&mut self, msg: api::PubsubMessage) -> Result<(), Error> { + self.publish_messages(vec![msg]).await + } + + /// Publish a message onto this topic. + pub async fn publish_messages( + &mut self, + messages: Vec, + ) -> Result<(), Error> { let request = api::PublishRequest { topic: self.name.clone(), - messages: vec![api::PubsubMessage { - data: data.into(), - attributes: HashMap::new(), - message_id: String::new(), - ordering_key: String::new(), - publish_time: None, - }], + messages, }; let request = self.client.construct_request(request).await?; self.client.publisher.publish(request).await?; @@ -97,6 +99,15 @@ impl Topic { Ok(()) } + /// Publish a message onto this topic. + pub async fn publish(&mut self, data: impl Into>) -> Result<(), Error> { + self.publish_message(api::PubsubMessage { + data: data.into(), + ..Default::default() + }) + .await + } + /// Delete the topic. pub async fn delete(mut self) -> Result<(), Error> { let request = api::DeleteTopicRequest {