reactive_graph_sys_binary_model/component/
binary_data.rs1use 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}