use serde::Serialize;
#[allow(clippy::enum_variant_names)]
#[derive(Serialize)]
#[serde(tag = "requestType", content = "requestData")]
pub(crate) enum Request<'a> {
#[serde(rename = "GetVersion")]
Version,
#[serde(rename = "GetStats")]
Stats,
#[serde(rename = "BroadcastCustomEvent")]
BroadcastCustomEvent {
#[serde(rename = "eventData")]
event_data: serde_json::Value,
},
#[serde(rename = "CallVendorRequest")]
CallVendorRequest(CallVendorRequestInternal<'a>),
}
impl<'a> From<Request<'a>> for super::RequestType<'a> {
fn from(value: Request<'a>) -> Self {
super::RequestType::General(value)
}
}
#[cfg_attr(feature = "builder", derive(bon::Builder))]
pub struct CallVendorRequest<'a, T> {
pub vendor_name: &'a str,
pub request_type: &'a str,
pub request_data: &'a T,
}
#[derive(Default, Serialize)]
pub(crate) struct CallVendorRequestInternal<'a> {
#[serde(rename = "vendorName")]
pub vendor_name: &'a str,
#[serde(rename = "requestType")]
pub request_type: &'a str,
#[serde(rename = "requestData")]
pub request_data: serde_json::Value,
}