use serde::{Deserialize, Serialize}; use serde_json::Value; use url::Url; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Meta { #[serde(skip_serializing_if = "Option::is_none")] pub addon: Option, #[serde(skip_serializing_if = "Option::is_none")] pub version: Option, #[serde(skip_serializing_if = "Option::is_none")] pub additional: Option, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct AddonMeta { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub icon: Option, #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, #[serde(skip_serializing_if = "Option::is_none")] pub summary: Option, #[serde(skip_serializing_if = "Option::is_none")] pub website: Option, #[serde(skip_serializing_if = "Option::is_none")] pub source: Option, #[serde(skip_serializing_if = "Option::is_none")] pub issues: Option, #[serde(skip_serializing_if = "Option::is_none")] #[serde(rename = "type")] pub addon_type: Option, #[serde(skip_serializing_if = "Option::is_none")] pub contributors: Option>, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct VersionMeta { #[serde(skip_serializing_if = "Option::is_none")] pub changelog: Option, #[serde(skip_serializing_if = "Option::is_none")] pub timestamp:Option, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Contributor { pub name: String, pub email: String, }