addonscript-rs/crates/model/src/meta.rs
2022-11-28 10:26:47 +01:00

50 lines
1.6 KiB
Rust

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<AddonMeta>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<VersionMeta>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional: Option<Value>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AddonMeta {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub website: Option<Url>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<Url>,
#[serde(skip_serializing_if = "Option::is_none")]
pub issues: Option<Url>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "type")]
pub addon_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contributors: Option<Vec<Contributor>>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct VersionMeta {
#[serde(skip_serializing_if = "Option::is_none")]
pub changelog: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp:Option<u32>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Contributor {
pub name: String,
pub email: String,
}