anicca/cli/formatters/markdown/
request_body.rs

1use super::schema::SchemaPrinter;
2use crate::diff::request_body::RequestBodyDiff;
3
4pub struct RequestBodyPrinter<'a> {
5    pub request_body: &'a RequestBodyDiff,
6}
7
8impl<'a> RequestBodyPrinter<'a> {
9    pub fn print(&self) -> String {
10        let mut result = String::new();
11
12        if self.request_body.added.is_some() {
13            result.push_str("Request body was added.\n");
14        }
15
16        if self.request_body.removed.is_some() {
17            result.push_str("Request body was added.\n");
18        }
19
20        if let Some(content_diff) = &self.request_body.content_changed {
21            for media_type_pair in &content_diff.added {
22                result.push_str(&format!(
23                    "  - Request body media type {} was added.\n",
24                    media_type_pair.0
25                ));
26            }
27
28            for media_type_pair in &content_diff.removed {
29                result.push_str(&format!(
30                    "  - Request body media type {} was removed.\n",
31                    media_type_pair.0
32                ));
33            }
34
35            for (media_type, media_type_diff) in &content_diff.changed {
36                result.push_str(&format!(
37                    "  - Request body media type {} changed:.\n",
38                    media_type
39                ));
40
41                if let Some(schema_diff) = &media_type_diff.schema_changed {
42                    let schema = SchemaPrinter {
43                        diff: &schema_diff,
44                        indent: 4,
45                    }
46                    .print();
47                    result.push_str(&schema);
48                }
49            }
50        }
51
52        result
53    }
54}