git.delta.rocks / jrsonnet / refs/commits / 076f1febd13c

difftreelog

source

cmds/fleet/src/fleetdata.rs1.3 KiBsourcehistory
1use chrono::{DateTime, Utc};2use serde::{Deserialize, Deserializer, Serialize, Serializer};3use std::collections::BTreeMap;45#[derive(Serialize, Deserialize, Default)]6#[serde(rename_all = "camelCase")]7pub struct HostData {8	#[serde(default)]9	#[serde(skip_serializing_if = "String::is_empty")]10	pub encryption_key: String,11}1213#[derive(Serialize, Deserialize)]14pub struct FleetData {15	#[serde(default)]16	pub hosts: BTreeMap<String, HostData>,17	#[serde(default)]18	#[serde(skip_serializing_if = "BTreeMap::is_empty")]19	pub secrets: BTreeMap<String, FleetSecret>,20}2122#[derive(Serialize, Deserialize)]23#[serde(rename_all = "camelCase")]24pub struct FleetSecret {25	pub owners: Vec<String>,26	#[serde(default)]27	#[serde(skip_serializing_if = "Option::is_none")]28	pub expire_at: Option<DateTime<Utc>>,29	#[serde(skip_serializing_if = "Option::is_none")]30	pub public: Option<String>,31	#[serde(serialize_with = "as_z85", deserialize_with = "from_z85")]32	pub secret: Vec<u8>,33}3435fn as_z85<S>(key: &[u8], serializer: S) -> Result<S::Ok, S::Error>36where37	S: Serializer,38{39	serializer.serialize_str(&z85::encode(&key))40}4142fn from_z85<'de, D>(deserializer: D) -> Result<Vec<u8>, D::Error>43where44	D: Deserializer<'de>,45{46	use serde::de::Error;47	String::deserialize(deserializer)48		.and_then(|string| z85::decode(&string).map_err(|err| Error::custom(err.to_string())))49}