libsignal_service/websocket/
sender.rs

1use crate::{
2    sender::{OutgoingPushMessages, SendMessageResponse},
3    unidentified_access::UnidentifiedAccess,
4    utils::BASE64_RELAXED,
5};
6
7use super::*;
8use base64::Engine;
9
10impl SignalWebSocket {
11    pub async fn send_messages(
12        &mut self,
13        messages: OutgoingPushMessages,
14    ) -> Result<SendMessageResponse, ServiceError> {
15        let request = WebSocketRequestMessage::new(Method::PUT)
16            .path(format!(
17                "/v1/messages/{}",
18                messages.destination.service_id_string()
19            ))
20            .json(&messages)?;
21        self.request_json(request).await
22    }
23
24    pub async fn send_messages_unidentified(
25        &mut self,
26        messages: OutgoingPushMessages,
27        access: &UnidentifiedAccess,
28    ) -> Result<SendMessageResponse, ServiceError> {
29        let request = WebSocketRequestMessage::new(Method::PUT)
30            .path(format!(
31                "/v1/messages/{}",
32                messages.destination.service_id_string()
33            ))
34            .header(
35                "Unidentified-Access-Key",
36                BASE64_RELAXED.encode(&access.key),
37            )
38            .json(&messages)?;
39        self.request_json(request).await
40    }
41}