Skip to main content

obws/requests/
outputs.rs

1//! Requests related to outputs.
2
3use 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        /// Output name.
13        #[serde(rename = "outputName")]
14        name: &'a str,
15    },
16    #[serde(rename = "ToggleOutput")]
17    Toggle {
18        /// Output name.
19        #[serde(rename = "outputName")]
20        name: &'a str,
21    },
22    #[serde(rename = "StartOutput")]
23    Start {
24        /// Output name.
25        #[serde(rename = "outputName")]
26        name: &'a str,
27    },
28    #[serde(rename = "StopOutput")]
29    Stop {
30        /// Output name.
31        #[serde(rename = "outputName")]
32        name: &'a str,
33    },
34    #[serde(rename = "GetOutputSettings")]
35    Settings {
36        /// Output name.
37        #[serde(rename = "outputName")]
38        name: &'a str,
39    },
40    #[serde(rename = "SetOutputSettings")]
41    SetSettings {
42        /// Output name.
43        #[serde(rename = "outputName")]
44        name: &'a str,
45        /// Output settings.
46        #[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}