reactive_graph_sys_binary_model/component/
binary_data.rs

1use data_url::DataUrl;
2
3use crate::NAMESPACE_BINARY;
4use reactive_graph_behaviour_model_api::behaviour_ty;
5use reactive_graph_graph::component_model;
6use reactive_graph_graph::component_ty;
7use reactive_graph_graph::properties;
8
9properties!(BinaryDataProperties, (DATA_URL, "data_url", ""));
10
11component_ty!(COMPONENT_BINARY_DATA, NAMESPACE_BINARY, COMPONENT_NAME_BINARY_DATA, "binary_data");
12behaviour_ty!(BEHAVIOUR_BINARY_DATA, NAMESPACE_BINARY, BEHAVIOUR_NAME_BINARY_DATA, "binary_data");
13
14component_model!(
15    BinaryData,
16    data data_url string
17);
18
19pub trait BinaryDataUrl: BinaryData {
20    fn mime_type(&self) -> Option<String> {
21        if let Some(data_url) = self.get_data_url() {
22            if let Ok(data_url) = DataUrl::process(&data_url) {
23                return Some(data_url.mime_type().type_.clone());
24            }
25        }
26        None
27    }
28
29    fn subtype(&self) -> Option<String> {
30        if let Some(data_url) = self.get_data_url() {
31            if let Ok(data_url) = DataUrl::process(&data_url) {
32                return Some(data_url.mime_type().subtype.clone());
33            }
34        }
35        None
36    }
37
38    fn charset(&self) -> Option<String> {
39        if let Some(data_url) = self.get_data_url() {
40            if let Ok(data_url) = DataUrl::process(&data_url) {
41                return data_url.mime_type().get_parameter("charset").map(String::from);
42            }
43        }
44        None
45    }
46}