xmpp-parsers: Convert jingle_dtls_srtp to xso

Emmanuel Gil Peyrot created

Change summary

parsers/src/jingle_dtls_srtp.rs | 33 ++++++++++++++++++---------------
1 file changed, 18 insertions(+), 15 deletions(-)

Detailed changes

parsers/src/jingle_dtls_srtp.rs 🔗

@@ -4,8 +4,10 @@
 // License, v. 2.0. If a copy of the MPL was not distributed with this
 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+use xso::{text::ColonSeparatedHex, AsXml, FromXml};
+
 use crate::hashes::{Algo, Hash};
-use crate::util::text_node_codecs::{Codec, ColonSeparatedHex};
+use crate::ns;
 use xso::error::Error;
 
 generate_attribute!(
@@ -31,21 +33,22 @@ generate_attribute!(
 );
 
 // TODO: use a hashes::Hash instead of two different fields here.
-generate_element!(
-    /// Fingerprint of the key used for a DTLS handshake.
-    Fingerprint, "fingerprint", JINGLE_DTLS,
-    attributes: [
-        /// The hash algorithm used for this fingerprint.
-        hash: Required<Algo> = "hash",
+/// Fingerprint of the key used for a DTLS handshake.
+#[derive(FromXml, AsXml, PartialEq, Debug, Clone)]
+#[xml(namespace = ns::JINGLE_DTLS, name = "fingerprint")]
+pub struct Fingerprint {
+    /// The hash algorithm used for this fingerprint.
+    #[xml(attribute)]
+    pub hash: Algo,
 
-        /// Indicates which of the end points should initiate the TCP connection establishment.
-        setup: Required<Setup> = "setup"
-    ],
-    text: (
-        /// Hash value of this fingerprint.
-        value: ColonSeparatedHex
-    )
-);
+    /// Indicates which of the end points should initiate the TCP connection establishment.
+    #[xml(attribute)]
+    pub setup: Setup,
+
+    /// Hash value of this fingerprint.
+    #[xml(text(codec = ColonSeparatedHex))]
+    pub value: Vec<u8>,
+}
 
 impl Fingerprint {
     /// Create a new Fingerprint from a Setup and a Hash.