slack_rust/block/
block_image.rs1use crate::block::block_object::TextBlockObject;
4use serde::{Deserialize, Serialize};
5use serde_with::skip_serializing_none;
6
7#[skip_serializing_none]
10#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
11pub struct ImageBlock {
12 pub image_url: String,
13 pub alt_text: String,
14 pub title: Option<TextBlockObject>,
15 pub block_id: Option<String>,
16}
17
18impl ImageBlock {
19 pub fn builder(image_url: String, alt_text: String) -> ImageBlockBuilder {
20 ImageBlockBuilder::new(image_url, alt_text)
21 }
22}
23
24#[derive(Debug, Default)]
25pub struct ImageBlockBuilder {
26 pub image_url: String,
27 pub alt_text: String,
28 pub title: Option<TextBlockObject>,
29 pub block_id: Option<String>,
30}
31
32impl ImageBlockBuilder {
33 pub fn new(image_url: String, alt_text: String) -> ImageBlockBuilder {
34 ImageBlockBuilder {
35 image_url,
36 alt_text,
37 ..Default::default()
38 }
39 }
40 pub fn title(mut self, title: TextBlockObject) -> ImageBlockBuilder {
41 self.title = Some(title);
42 self
43 }
44 pub fn block_id(mut self, block_id: String) -> ImageBlockBuilder {
45 self.block_id = Some(block_id);
46 self
47 }
48 pub fn build(self) -> ImageBlock {
49 ImageBlock {
50 image_url: self.image_url,
51 alt_text: self.alt_text,
52 title: self.title,
53 block_id: self.block_id,
54 }
55 }
56}