#![allow(unreachable_pub, missing_docs)]
use derive_more::{Display, Error};
use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum ApiResponse {
Success(SuccessResponse),
Error(ErrorResponse),
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SuccessResponse {
pub code: ResponseCode,
pub description: String,
pub response: ResponseT,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct ErrorResponse {
pub code: ResponseCode,
pub description: String,
pub response: Option<()>,
}
#[derive(Serialize_repr, Deserialize_repr, PartialEq, Eq, Debug, Clone, Copy, Error, Display)]
#[repr(u8)]
pub enum ResponseCode {
Success = 0,
NullArgument = 1,
BadDescription = 2,
ExistingName = 3,
MissingInitialization = 4,
NoPipeline = 5,
NoResource = 6,
NoCreate = 7,
ExistingResource = 8,
NoUpdate = 9,
BadCommand = 10,
NoRead = 11,
NoConnection = 12,
BadValue = 13,
StateError = 14,
IpcError = 15,
EventError = 16,
MissingArgument = 17,
MissingName = 18,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum ResponseT {
Bus(Option<Bus>),
PropertiesWithNodes(PropertiesWithNodes),
Properties(Properties),
Property(Property),
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Param {
pub description: String,
pub r#type: String,
pub access: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PropertiesWithNodes {
pub properties: Vec<Property>,
pub nodes: Vec<Node>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Properties {
pub properties: Vec<Property>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Node {
pub name: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Property {
pub name: String,
pub value: PropertyValue,
pub param: Param,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum PropertyValue {
String(String),
Integer(i32),
Bool(bool),
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Bus {
pub r#type: String,
pub source: String,
pub timestamp: String,
pub seqnum: i64,
pub message: String,
pub debug: String,
}