Skip to main content

neptunium_http/endpoints/webhooks/
edit_webhook_message.rs

1use bon::Builder;
2use neptunium_model::{
3    channel::message::Message,
4    id::{
5        Id,
6        marker::{MessageMarker, WebhookMarker},
7    },
8};
9use reqwest::Method;
10use zeroize::Zeroizing;
11
12use crate::{
13    endpoints::{Endpoint, channel::EditMessageBody},
14    request::Request,
15};
16
17/// Note that when editing a webhook message, the entire content needs to be sent again, not just the edited parts.
18#[derive(Builder, Clone, Debug)]
19pub struct EditWebhookMessage {
20    pub webhook_id: Id<WebhookMarker>,
21    #[builder(into)]
22    pub token: Zeroizing<String>,
23    pub message_id: Id<MessageMarker>,
24    pub body: EditMessageBody,
25}
26
27impl Endpoint for EditWebhookMessage {
28    type Response = Message;
29
30    fn into_request(self) -> crate::request::Request {
31        Request::builder()
32            .use_authorization_token(false)
33            .method(Method::PATCH)
34            .body(serde_json::to_string(&self.body).unwrap())
35            .path(format!(
36                "/webhooks/{}/{}/messages/{}",
37                self.webhook_id, *self.token, self.message_id
38            ))
39            .build()
40    }
41}