66 lines
1.7 KiB
Rust
66 lines
1.7 KiB
Rust
use std::collections::HashSet;
|
|
|
|
use addonscript_versioning::Version;
|
|
use serde::{Deserialize, Serialize};
|
|
use url::Url;
|
|
|
|
use crate::{AddonDescriptor, enums::APIFeature, Patch};
|
|
|
|
use super::{AddonScript, File, Hashes, Meta};
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct APIAddon {
|
|
pub id: String,
|
|
pub namespace: String,
|
|
pub versions: Vec<Version>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub meta: Option<Meta>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct APIFile {
|
|
pub link: Vec<Url>,
|
|
#[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 EnvObject {
|
|
#[serde(default)]
|
|
pub requested: Vec<AddonDescriptor>,
|
|
#[serde(default)]
|
|
pub provided: 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>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub launch_client: Option<Patch>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub launch_server: Option<Patch>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct APIIndex {
|
|
pub versions: HashSet<String>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct V2Index {
|
|
pub features: HashSet<APIFeature>,
|
|
pub manifest_version: i32,
|
|
} |