use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceMeta {
pub id: String,
pub kind: String,
pub destination: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_bytes: Option<i64>,
pub provenance: ReferenceProvenance,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub actions: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceProvenance {
pub source: String,
pub created_at: String,
pub trust: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_hash: Option<String>,
}
impl ReferenceMeta {
pub fn empty(id: &str, kind: &str, destination: &str) -> Self {
Self {
id: id.to_string(),
kind: kind.to_string(),
destination: destination.to_string(),
mime: None,
filename: None,
size_bytes: None,
provenance: ReferenceProvenance {
source: "composer".to_string(),
created_at: "1970-01-01T00:00:00Z".to_string(),
trust: "user".to_string(),
content_hash: None,
},
actions: Vec::new(),
}
}
}