use serde::Serialize;
use time::Duration;
#[derive(Serialize)]
#[serde(tag = "requestType", content = "requestData")]
pub(crate) enum Request<'a> {
#[serde(rename = "GetTransitionKindList")]
GetTransitionKindList,
#[serde(rename = "GetSceneTransitionList")]
GetSceneTransitionList,
#[serde(rename = "GetCurrentSceneTransition")]
GetCurrentSceneTransition,
#[serde(rename = "SetCurrentSceneTransition")]
SetCurrentSceneTransition {
#[serde(rename = "transitionName")]
name: &'a str,
},
#[serde(rename = "SetCurrentSceneTransitionDuration")]
SetCurrentSceneTransitionDuration {
#[serde(rename = "transitionDuration", with = "crate::serde::duration_millis")]
duration: Duration,
},
#[serde(rename = "SetCurrentSceneTransitionSettings")]
SetCurrentSceneTransitionSettings {
#[serde(rename = "transitionSettings")]
settings: serde_json::Value,
#[serde(rename = "overlay", skip_serializing_if = "Option::is_none")]
overlay: Option<bool>,
},
#[serde(rename = "GetCurrentSceneTransitionCursor")]
GetCurrentSceneTransitionCursor,
#[serde(rename = "TriggerStudioModeTransition")]
TriggerStudioModeTransition,
#[serde(rename = "SetTBarPosition")]
SetTbarPosition {
#[serde(rename = "position")]
position: f32,
#[serde(rename = "release", skip_serializing_if = "Option::is_none")]
release: Option<bool>,
},
}
impl<'a> From<Request<'a>> for super::RequestType<'a> {
fn from(value: Request<'a>) -> Self {
super::RequestType::Transitions(value)
}
}