slack_messaging/blocks/elements/image.rs
1use super::composition_objects::SlackFile;
2use serde::Serialize;
3
4/// [Image element](https://docs.slack.dev/reference/block-kit/block-elements/image-element)
5/// representation.
6///
7/// # Example
8///
9/// ```
10/// # use slack_messaging::blocks::elements::Image;
11/// let image = Image::builder()
12/// .image_url("http://placekitten.com/700/500")
13/// .alt_text("Multiple cute kittens")
14/// .build();
15///
16/// let expected = serde_json::json!({
17/// "type": "image",
18/// "image_url": "http://placekitten.com/700/500",
19/// "alt_text": "Multiple cute kittens"
20/// });
21///
22/// let json = serde_json::to_value(image).unwrap();
23///
24/// assert_eq!(json, expected);
25/// ```
26#[derive(Debug, Clone, Serialize)]
27pub struct Image {
28 #[serde(rename = "type")]
29 pub(super) kind: &'static str,
30
31 pub(super) alt_text: String,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub(super) image_url: Option<String>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub(super) slack_file: Option<SlackFile>,
38}