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

52 lines
1.4 KiB
Rust

use serde::{Deserialize, Serialize};
use super::{AddonScript, File, Hashes, Meta};
#[derive(Debug, Serialize, Deserialize)]
pub struct APIAddon {
pub id: String,
pub namespace: String,
pub versions: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<Meta>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct APIFile {
pub link: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hashes: Option<Hashes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<Meta>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AddonDescriptor {
pub id: String,
pub namespace: String,
pub version: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EnvObject {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<Vec<AddonDescriptor>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provided: Option<Vec<AddonDescriptor>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EnvBuilderRequest {
pub addonscript: AddonScript,
pub addon: AddonDescriptor,
#[serde(skip_serializing_if = "Option::is_none")]
pub client: Option<EnvObject>,
#[serde(skip_serializing_if = "Option::is_none")]
pub server: Option<EnvObject>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EnvBuilderResponse {
pub addonscript: AddonScript,
pub files: Vec<File>,
}