mailerlite_rs/
webhook.rs

1use crate::{data::Data, parameter::Parameter, response::Response, MailerLite, BASE_PATH};
2
3const END_POINT: &str = "webhooks";
4
5#[derive(Debug)]
6pub struct Webhook {
7    mailerlite: MailerLite,
8}
9
10impl Webhook {
11    pub fn new(mailerlite: MailerLite) -> Self {
12        Self { mailerlite }
13    }
14
15    pub async fn get(&self, query: Parameter) -> Response {
16        let url: String = format!("{}{}", BASE_PATH, END_POINT);
17
18        Response::new(
19            self.mailerlite
20                .client
21                .request
22                .get(url)
23                .query(&query.data)
24                .send()
25                .await
26                .expect("Failed to send request"),
27        )
28        .await
29    }
30
31    pub async fn find(&self, id: String) -> Response {
32        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, id);
33
34        Response::new(
35            self.mailerlite
36                .client
37                .request
38                .get(url)
39                .send()
40                .await
41                .expect("Failed to send request"),
42        )
43        .await
44    }
45
46    pub async fn create(&self, form: Data) -> Response {
47        let url: String = format!("{}{}", BASE_PATH, END_POINT);
48
49        Response::new(
50            self.mailerlite
51                .client
52                .request
53                .post(url)
54                .form(&form.data)
55                .send()
56                .await
57                .expect("Failed to send request"),
58        )
59        .await
60    }
61
62    pub async fn update(&self, id: String, form: Data) -> Response {
63        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, id);
64
65        Response::new(
66            self.mailerlite
67                .client
68                .request
69                .put(url)
70                .form(&form.data)
71                .send()
72                .await
73                .expect("Failed to send request"),
74        )
75        .await
76    }
77
78    pub async fn delete(&self, id: String) -> Response {
79        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, id);
80
81        Response::new(
82            self.mailerlite
83                .client
84                .request
85                .delete(url)
86                .send()
87                .await
88                .expect("Failed to send request"),
89        )
90        .await
91    }
92}