use serde::Serialize;
#[derive(Serialize)]
#[serde(tag = "requestType", content = "requestData")]
pub(crate) enum Request<'a> {
#[serde(rename = "GetOutputList")]
List,
#[serde(rename = "GetOutputStatus")]
Status {
#[serde(rename = "outputName")]
name: &'a str,
},
#[serde(rename = "ToggleOutput")]
Toggle {
#[serde(rename = "outputName")]
name: &'a str,
},
#[serde(rename = "StartOutput")]
Start {
#[serde(rename = "outputName")]
name: &'a str,
},
#[serde(rename = "StopOutput")]
Stop {
#[serde(rename = "outputName")]
name: &'a str,
},
#[serde(rename = "GetOutputSettings")]
Settings {
#[serde(rename = "outputName")]
name: &'a str,
},
#[serde(rename = "SetOutputSettings")]
SetSettings {
#[serde(rename = "outputName")]
name: &'a str,
#[serde(rename = "outputSettings")]
settings: serde_json::Value,
},
}
impl<'a> From<Request<'a>> for super::RequestType<'a> {
fn from(value: Request<'a>) -> Self {
super::RequestType::Outputs(value)
}
}