50 lines
1.6 KiB
Rust
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,
|
|
} |