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}