From a60d8ff4834f35aff5a3b49842a84769e8e9c3de Mon Sep 17 00:00:00 2001 From: "Kamal S. Fuseini" Date: Tue, 17 Oct 2023 10:42:37 -0700 Subject: [PATCH 1/3] wsdl_rs/media2: Configuration macro Use macro to generate configs for correct serialization --- wsdl_rs/media2/src/lib.rs | 67 +++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/wsdl_rs/media2/src/lib.rs b/wsdl_rs/media2/src/lib.rs index 922ca2c..06ca662 100644 --- a/wsdl_rs/media2/src/lib.rs +++ b/wsdl_rs/media2/src/lib.rs @@ -406,25 +406,32 @@ pub struct DeleteProfileResponse {} impl Validate for DeleteProfileResponse {} -#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] -#[yaserde( - prefix = "tr2", - namespace = "tr2: http://www.onvif.org/ver20/media/wsdl" -)] -pub struct GetConfiguration { - // Token of the requested configuration. - #[yaserde(prefix = "tr2", rename = "ConfigurationToken")] - pub configuration_token: Option, - - // Contains the token of an existing media profile the configurations shall - // be compatible with. - #[yaserde(prefix = "tr2", rename = "ProfileToken")] - pub profile_token: Option, -} +macro_rules! config { + ($name:ident) => { + #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] + #[yaserde( + prefix = "tr2", + namespace = "tr2: http://www.onvif.org/ver20/media/wsdl" + )] + pub struct $name { + // fields + // Token of the requested configuration. + #[yaserde(prefix = "tr2", rename = "ConfigurationToken")] + pub configuration_token: Option, + + // Contains the token of an existing media profile the configurations shall + // be compatible with. + #[yaserde(prefix = "tr2", rename = "ProfileToken")] + pub profile_token: Option, + } + }; +} + +config!(GetConfiguration); impl Validate for GetConfiguration {} -pub type GetVideoEncoderConfigurations = GetConfiguration; +config!(GetVideoEncoderConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -439,7 +446,7 @@ pub struct GetVideoEncoderConfigurationsResponse { impl Validate for GetVideoEncoderConfigurationsResponse {} -pub type GetVideoSourceConfigurations = GetConfiguration; +config!(GetVideoSourceConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -454,7 +461,7 @@ pub struct GetVideoSourceConfigurationsResponse { impl Validate for GetVideoSourceConfigurationsResponse {} -pub type GetAudioEncoderConfigurations = GetConfiguration; +config!(GetAudioEncoderConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -469,7 +476,7 @@ pub struct GetAudioEncoderConfigurationsResponse { impl Validate for GetAudioEncoderConfigurationsResponse {} -pub type GetAudioSourceConfigurations = GetConfiguration; +config!(GetAudioSourceConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -484,7 +491,7 @@ pub struct GetAudioSourceConfigurationsResponse { impl Validate for GetAudioSourceConfigurationsResponse {} -pub type GetAnalyticsConfigurations = GetConfiguration; +config!(GetAnalyticsConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -499,7 +506,7 @@ pub struct GetAnalyticsConfigurationsResponse { impl Validate for GetAnalyticsConfigurationsResponse {} -pub type GetMetadataConfigurations = GetConfiguration; +config!(GetMetadataConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -514,7 +521,7 @@ pub struct GetMetadataConfigurationsResponse { impl Validate for GetMetadataConfigurationsResponse {} -pub type GetAudioOutputConfigurations = GetConfiguration; +config!(GetAudioOutputConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -529,7 +536,7 @@ pub struct GetAudioOutputConfigurationsResponse { impl Validate for GetAudioOutputConfigurationsResponse {} -pub type GetAudioDecoderConfigurations = GetConfiguration; +config!(GetAudioDecoderConfigurations); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -664,7 +671,7 @@ pub struct SetAudioDecoderConfiguration { impl Validate for SetAudioDecoderConfiguration {} pub type SetAudioDecoderConfigurationResponse = SetConfigurationResponse; -pub type GetVideoSourceConfigurationOptions = GetConfiguration; +config!(GetVideoSourceConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -683,7 +690,7 @@ pub struct GetVideoSourceConfigurationOptionsResponse { impl Validate for GetVideoSourceConfigurationOptionsResponse {} -pub type GetVideoEncoderConfigurationOptions = GetConfiguration; +config!(GetVideoEncoderConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -697,7 +704,7 @@ pub struct GetVideoEncoderConfigurationOptionsResponse { impl Validate for GetVideoEncoderConfigurationOptionsResponse {} -pub type GetAudioSourceConfigurationOptions = GetConfiguration; +config!(GetAudioSourceConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -716,7 +723,7 @@ pub struct GetAudioSourceConfigurationOptionsResponse { impl Validate for GetAudioSourceConfigurationOptionsResponse {} -pub type GetAudioEncoderConfigurationOptions = GetConfiguration; +config!(GetAudioEncoderConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -735,7 +742,7 @@ pub struct GetAudioEncoderConfigurationOptionsResponse { impl Validate for GetAudioEncoderConfigurationOptionsResponse {} -pub type GetMetadataConfigurationOptions = GetConfiguration; +config!(GetMetadataConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -754,7 +761,7 @@ pub struct GetMetadataConfigurationOptionsResponse { impl Validate for GetMetadataConfigurationOptionsResponse {} -pub type GetAudioOutputConfigurationOptions = GetConfiguration; +config!(GetAudioOutputConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( @@ -773,7 +780,7 @@ pub struct GetAudioOutputConfigurationOptionsResponse { impl Validate for GetAudioOutputConfigurationOptionsResponse {} -pub type GetAudioDecoderConfigurationOptions = GetConfiguration; +config!(GetAudioDecoderConfigurationOptions); #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde( From ebb3cc345ca3db45139071a42e925dda768fc47e Mon Sep 17 00:00:00 2001 From: "Kamal S. Fuseini" Date: Wed, 18 Oct 2023 12:16:45 -0700 Subject: [PATCH 2/3] schema/test: Add test for media2 serialization --- schema/src/tests.rs | 69 +++++++++++++++++++++++++++++++++++++++ schema/src/tests/utils.rs | 4 +++ 2 files changed, 73 insertions(+) diff --git a/schema/src/tests.rs b/schema/src/tests.rs index 40da2da..bb0a9d7 100644 --- a/schema/src/tests.rs +++ b/schema/src/tests.rs @@ -620,3 +620,72 @@ fn extension_inside_extension() { let _ = yaserde::de::from_str::(ser).unwrap(); } + +#[test] +#[cfg(feature = "media2")] +fn media2_configs_name_serialization() { + assert_eq!( + "media2::GetConfiguration", + utils::type_of(&media2::GetConfiguration::default()) + ); + assert_eq!( + "media2::GetVideoEncoderConfigurations", + utils::type_of(&media2::GetVideoEncoderConfigurations::default()) + ); + assert_eq!( + "media2::GetVideoSourceConfigurations", + utils::type_of(&media2::GetVideoSourceConfigurations::default()) + ); + assert_eq!( + "media2::GetAudioEncoderConfigurations", + utils::type_of(&media2::GetAudioEncoderConfigurations::default()) + ); + assert_eq!( + "media2::GetAudioSourceConfigurations", + utils::type_of(&media2::GetAudioSourceConfigurations::default()) + ); + assert_eq!( + "media2::GetAnalyticsConfigurations", + utils::type_of(&media2::GetAnalyticsConfigurations::default()) + ); + assert_eq!( + "media2::GetMetadataConfigurations", + utils::type_of(&media2::GetMetadataConfigurations::default()) + ); + assert_eq!( + "media2::GetAudioOutputConfigurations", + utils::type_of(&media2::GetAudioOutputConfigurations::default()) + ); + assert_eq!( + "media2::GetAudioDecoderConfigurations", + utils::type_of(&media2::GetAudioDecoderConfigurations::default()) + ); + assert_eq!( + "media2::GetVideoSourceConfigurationOptions", + utils::type_of(&media2::GetVideoSourceConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetVideoEncoderConfigurationOptions", + utils::type_of(&media2::GetVideoEncoderConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetAudioSourceConfigurationOptions", + utils::type_of(&media2::GetAudioSourceConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetAudioEncoderConfigurationOptions", + utils::type_of(&media2::GetAudioEncoderConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetMetadataConfigurationOptions", + utils::type_of(&media2::GetMetadataConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetAudioOutputConfigurationOptions", + utils::type_of(&media2::GetAudioOutputConfigurationOptions::default()) + ); + assert_eq!( + "media2::GetAudioDecoderConfigurationOptions", + utils::type_of(&media2::GetAudioDecoderConfigurationOptions::default()) + ); +} diff --git a/schema/src/tests/utils.rs b/schema/src/tests/utils.rs index 31cf80f..c0abace 100644 --- a/schema/src/tests/utils.rs +++ b/schema/src/tests/utils.rs @@ -11,3 +11,7 @@ fn without_whitespaces( .into_iter() .filter(|e| !matches!(e, Ok(xml::reader::XmlEvent::Whitespace(_)))) } + +pub fn type_of(_: &T) -> &str { + std::any::type_name::() +} From b92af4eddf5ed1559803f8f9dddf9076a2412727 Mon Sep 17 00:00:00 2001 From: "Kamal S. Fuseini" Date: Fri, 20 Oct 2023 09:20:22 -0700 Subject: [PATCH 3/3] schema/test: Move `type_of` fn to where its used --- schema/src/tests.rs | 36 ++++++++++++++++++++---------------- schema/src/tests/utils.rs | 4 ---- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/schema/src/tests.rs b/schema/src/tests.rs index bb0a9d7..1552da2 100644 --- a/schema/src/tests.rs +++ b/schema/src/tests.rs @@ -624,68 +624,72 @@ fn extension_inside_extension() { #[test] #[cfg(feature = "media2")] fn media2_configs_name_serialization() { + pub fn type_of(_: &T) -> &str { + std::any::type_name::() + } + assert_eq!( "media2::GetConfiguration", - utils::type_of(&media2::GetConfiguration::default()) + type_of(&media2::GetConfiguration::default()) ); assert_eq!( "media2::GetVideoEncoderConfigurations", - utils::type_of(&media2::GetVideoEncoderConfigurations::default()) + type_of(&media2::GetVideoEncoderConfigurations::default()) ); assert_eq!( "media2::GetVideoSourceConfigurations", - utils::type_of(&media2::GetVideoSourceConfigurations::default()) + type_of(&media2::GetVideoSourceConfigurations::default()) ); assert_eq!( "media2::GetAudioEncoderConfigurations", - utils::type_of(&media2::GetAudioEncoderConfigurations::default()) + type_of(&media2::GetAudioEncoderConfigurations::default()) ); assert_eq!( "media2::GetAudioSourceConfigurations", - utils::type_of(&media2::GetAudioSourceConfigurations::default()) + type_of(&media2::GetAudioSourceConfigurations::default()) ); assert_eq!( "media2::GetAnalyticsConfigurations", - utils::type_of(&media2::GetAnalyticsConfigurations::default()) + type_of(&media2::GetAnalyticsConfigurations::default()) ); assert_eq!( "media2::GetMetadataConfigurations", - utils::type_of(&media2::GetMetadataConfigurations::default()) + type_of(&media2::GetMetadataConfigurations::default()) ); assert_eq!( "media2::GetAudioOutputConfigurations", - utils::type_of(&media2::GetAudioOutputConfigurations::default()) + type_of(&media2::GetAudioOutputConfigurations::default()) ); assert_eq!( "media2::GetAudioDecoderConfigurations", - utils::type_of(&media2::GetAudioDecoderConfigurations::default()) + type_of(&media2::GetAudioDecoderConfigurations::default()) ); assert_eq!( "media2::GetVideoSourceConfigurationOptions", - utils::type_of(&media2::GetVideoSourceConfigurationOptions::default()) + type_of(&media2::GetVideoSourceConfigurationOptions::default()) ); assert_eq!( "media2::GetVideoEncoderConfigurationOptions", - utils::type_of(&media2::GetVideoEncoderConfigurationOptions::default()) + type_of(&media2::GetVideoEncoderConfigurationOptions::default()) ); assert_eq!( "media2::GetAudioSourceConfigurationOptions", - utils::type_of(&media2::GetAudioSourceConfigurationOptions::default()) + type_of(&media2::GetAudioSourceConfigurationOptions::default()) ); assert_eq!( "media2::GetAudioEncoderConfigurationOptions", - utils::type_of(&media2::GetAudioEncoderConfigurationOptions::default()) + type_of(&media2::GetAudioEncoderConfigurationOptions::default()) ); assert_eq!( "media2::GetMetadataConfigurationOptions", - utils::type_of(&media2::GetMetadataConfigurationOptions::default()) + type_of(&media2::GetMetadataConfigurationOptions::default()) ); assert_eq!( "media2::GetAudioOutputConfigurationOptions", - utils::type_of(&media2::GetAudioOutputConfigurationOptions::default()) + type_of(&media2::GetAudioOutputConfigurationOptions::default()) ); assert_eq!( "media2::GetAudioDecoderConfigurationOptions", - utils::type_of(&media2::GetAudioDecoderConfigurationOptions::default()) + type_of(&media2::GetAudioDecoderConfigurationOptions::default()) ); } diff --git a/schema/src/tests/utils.rs b/schema/src/tests/utils.rs index c0abace..31cf80f 100644 --- a/schema/src/tests/utils.rs +++ b/schema/src/tests/utils.rs @@ -11,7 +11,3 @@ fn without_whitespaces( .into_iter() .filter(|e| !matches!(e, Ok(xml::reader::XmlEvent::Whitespace(_)))) } - -pub fn type_of(_: &T) -> &str { - std::any::type_name::() -}