Skip to content

Commit 8509d36

Browse files
authored
Merge pull request kayleg#20 from BigJerBD/feature/add-attributes-to-publish
feature: Add attributes to published EncodedMessage
2 parents eef5956 + 9461501 commit 8509d36

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/message.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
use crate::error;
22
use base64;
33
use serde_derive::{Deserialize, Serialize};
4+
use std::collections::HashMap;
45

56
#[derive(Deserialize, Clone, Serialize)]
67
pub struct EncodedMessage {
78
data: String,
9+
#[serde(skip_serializing_if = "Option::is_none")]
10+
attributes: Option<HashMap<String, String>>,
811
}
912

1013
pub 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

src/topic.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff 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>(

0 commit comments

Comments
 (0)