use nutype_enum::nutype_enum;
use scuffle_amf0::Amf0Object;
use scuffle_bytes_util::StringCow;
use serde_derive::Serialize;
use crate::command_messages::CommandResultLevel;
pub mod writer;
#[derive(Debug, Clone, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct OnStatus<'a> {
pub code: OnStatusCode,
pub description: Option<StringCow<'a>>,
pub level: CommandResultLevel,
#[serde(flatten)]
pub others: Option<Amf0Object<'a>>,
}
nutype_enum! {
#[derive(Serialize)]
#[serde(transparent)]
pub enum OnStatusCode(&'static str) {
NET_CONNECTION_CALL_FAILED = "NetConnection.Call.Failed",
NET_CONNECTION_CONNECT_APP_SHUTDOWN = "NetConnection.Connect.AppShutdown",
NET_CONNECTION_CONNECT_CLOSED = "NetConnection.Connect.Closed",
NET_CONNECTION_CONNECT_FAILED = "NetConnection.Connect.Failed",
NET_CONNECTION_CONNECT_REJECTED = "NetConnection.Connect.Rejected",
NET_CONNECTION_CONNECT_SUCCESS = "NetConnection.Connect.Success",
NET_CONNECTION_CONNECT_RECONNECT_REQUEST = "NetConnection.Connect.ReconnectRequest",
NET_CONNECTION_PROXY_NOT_RESPONDING = "NetConnection.Proxy.NotResponding",
NET_STREAM_PUBLISH_START = "NetStream.Publish.Start",
NET_STREAM_DELETE_STREAM_SUCCESS = "NetStream.DeleteStream.Suceess",
}
}