1use serde::Serialize;
4
5#[derive(Serialize)]
6#[serde(tag = "requestType", content = "requestData")]
7pub(crate) enum Request<'a> {
8 #[serde(rename = "GetOutputList")]
9 List,
10 #[serde(rename = "GetOutputStatus")]
11 Status {
12 #[serde(rename = "outputName")]
14 name: &'a str,
15 },
16 #[serde(rename = "ToggleOutput")]
17 Toggle {
18 #[serde(rename = "outputName")]
20 name: &'a str,
21 },
22 #[serde(rename = "StartOutput")]
23 Start {
24 #[serde(rename = "outputName")]
26 name: &'a str,
27 },
28 #[serde(rename = "StopOutput")]
29 Stop {
30 #[serde(rename = "outputName")]
32 name: &'a str,
33 },
34 #[serde(rename = "GetOutputSettings")]
35 Settings {
36 #[serde(rename = "outputName")]
38 name: &'a str,
39 },
40 #[serde(rename = "SetOutputSettings")]
41 SetSettings {
42 #[serde(rename = "outputName")]
44 name: &'a str,
45 #[serde(rename = "outputSettings")]
47 settings: serde_json::Value,
48 },
49}
50
51impl<'a> From<Request<'a>> for super::RequestType<'a> {
52 fn from(value: Request<'a>) -> Self {
53 super::RequestType::Outputs(value)
54 }
55}