libsignal_service/websocket/
request.rs1use reqwest::Method;
2use serde::Serialize;
3
4use crate::proto::WebSocketRequestMessage;
5
6#[derive(Debug)]
7pub struct WebSocketRequestMessageBuilder {
8 request: WebSocketRequestMessage,
9}
10
11impl WebSocketRequestMessage {
12 #[allow(clippy::new_ret_no_self)]
13 pub fn new(method: Method) -> WebSocketRequestMessageBuilder {
14 WebSocketRequestMessageBuilder {
15 request: WebSocketRequestMessage {
16 verb: Some(method.to_string()),
17 ..Default::default()
18 },
19 }
20 }
21}
22
23impl WebSocketRequestMessageBuilder {
24 pub fn id(mut self, id: u64) -> Self {
25 self.request.id = Some(id);
26 self
27 }
28
29 pub fn path(mut self, path: impl Into<String>) -> Self {
30 self.request.path = Some(path.into());
31 self
32 }
33
34 pub fn header(mut self, key: &str, value: impl AsRef<str>) -> Self {
35 self.request
36 .headers
37 .push(format!("{key}:{}", value.as_ref()));
38 self
39 }
40
41 pub fn json<S: Serialize>(
42 mut self,
43 value: S,
44 ) -> Result<WebSocketRequestMessage, serde_json::Error> {
45 self.request.body = Some(serde_json::to_vec(&value)?);
46 Ok(self.header("content-type", "application/json").request)
47 }
48
49 pub fn build(self) -> WebSocketRequestMessage {
50 self.request
51 }
52}