use serde::Serialize;
use serde_with::skip_serializing_none;
#[derive(Serialize)]
#[serde(tag = "requestType", content = "requestData")]
pub(crate) enum Request<'a> {
#[serde(rename = "GetProfileList")]
List,
#[serde(rename = "SetCurrentProfile")]
SetCurrent {
#[serde(rename = "profileName")]
name: &'a str,
},
#[serde(rename = "CreateProfile")]
Create {
#[serde(rename = "profileName")]
name: &'a str,
},
#[serde(rename = "RemoveProfile")]
Remove {
#[serde(rename = "profileName")]
name: &'a str,
},
#[serde(rename = "GetProfileParameter")]
Parameter {
#[serde(rename = "parameterCategory")]
category: &'a str,
#[serde(rename = "parameterName")]
name: &'a str,
},
#[serde(rename = "SetProfileParameter")]
SetParameter(SetParameter<'a>),
}
impl<'a> From<Request<'a>> for super::RequestType<'a> {
fn from(value: Request<'a>) -> Self {
super::RequestType::Profiles(value)
}
}
#[skip_serializing_none]
#[derive(Default, Serialize)]
#[cfg_attr(feature = "builder", derive(bon::Builder))]
pub struct SetParameter<'a> {
#[serde(rename = "parameterCategory")]
pub category: &'a str,
#[serde(rename = "parameterName")]
pub name: &'a str,
#[serde(rename = "parameterValue")]
pub value: Option<&'a str>,
}