zerolaunch_plugin_api/services/
icon_request.rs1use bincode_next::Encode;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Encode)]
7#[serde(tag = "type", content = "value")]
8pub enum IconRequest {
9 #[serde(rename = "path")]
11 Path(String),
12 #[serde(rename = "url")]
14 Url(String),
15 #[serde(rename = "extension")]
17 Extension(String),
18 #[serde(rename = "data")]
20 Data(String),
21}
22
23impl IconRequest {
24 pub fn value(&self) -> &str {
26 match self {
27 IconRequest::Path(s) | IconRequest::Url(s) | IconRequest::Extension(s) => s.as_str(),
28 IconRequest::Data(s) => s.as_str(),
29 }
30 }
31
32 pub fn is_empty(&self) -> bool {
34 self.value().is_empty()
35 }
36
37 pub fn get_hash_string(&self) -> String {
39 let mut hasher = blake3::Hasher::new();
40 let _ = bincode_next::encode_into_std_write(
41 self,
42 &mut hasher,
43 bincode_next::config::standard(),
44 );
45 hasher.finalize().to_hex().to_string()
46 }
47}