mailerlite_rs/
form.rs

1use crate::{data::Data, parameter::Parameter, response::Response, MailerLite, BASE_PATH};
2
3const END_POINT: &str = "forms";
4
5#[derive(Debug)]
6pub struct Form {
7    mailerlite: MailerLite,
8}
9
10impl Form {
11    pub fn new(mailerlite: MailerLite) -> Self {
12        Self { mailerlite }
13    }
14
15    pub async fn get(&self, form_type: String, query: Parameter) -> Response {
16        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, form_type);
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 update(&self, id: String, form: Data) -> Response {
47        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, id);
48
49        Response::new(
50            self.mailerlite
51                .client
52                .request
53                .put(url)
54                .form(&form.data)
55                .send()
56                .await
57                .expect("Failed to send request"),
58        )
59        .await
60    }
61
62    pub async fn delete(&self, id: String) -> Response {
63        let url: String = format!("{}{}/{}", BASE_PATH, END_POINT, id);
64
65        Response::new(
66            self.mailerlite
67                .client
68                .request
69                .delete(url)
70                .send()
71                .await
72                .expect("Failed to send request"),
73        )
74        .await
75    }
76
77    pub async fn get_subscribers(&self, id: String, query: Parameter) -> Response {
78        let url: String = format!("{}{}/{}/subscribers", BASE_PATH, END_POINT, id);
79
80        Response::new(
81            self.mailerlite
82                .client
83                .request
84                .get(url)
85                .query(&query.data)
86                .send()
87                .await
88                .expect("Failed to send request"),
89        )
90        .await
91    }
92}