Move Base64 codec into a helper module.

Emmanuel Gil Peyrot created

Change summary

src/helpers.rs | 21 +++++++++++++++++++++
src/ibb.rs     | 15 +--------------
src/lib.rs     |  2 ++
3 files changed, 24 insertions(+), 14 deletions(-)

Detailed changes

src/helpers.rs 🔗

@@ -0,0 +1,21 @@
+// Copyright (c) 2017 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// 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 base64;
+use error::Error;
+
+/// Codec wrapping base64 encode/decode
+pub struct Base64;
+
+impl Base64 {
+    pub fn decode(s: &str) -> Result<Vec<u8>, Error> {
+        Ok(base64::decode(s)?)
+    }
+
+    pub fn encode(b: &Vec<u8>) -> String {
+        base64::encode(b)
+    }
+}

src/ibb.rs 🔗

@@ -8,11 +8,11 @@ use try_from::TryFrom;
 use std::str::FromStr;
 
 use minidom::{Element, IntoAttributeValue};
-use base64;
 
 use error::Error;
 
 use ns;
+use helpers::Base64;
 
 generate_attribute!(Stanza, "stanza", {
     Iq => "iq",
@@ -25,19 +25,6 @@ generate_element_with_only_attributes!(Open, "open", ns::IBB, [
     stanza: Stanza = "stanza" => default,
 ]);
 
-/// Codec wrapping base64 encode/decode
-struct Base64;
-
-impl Base64 {
-    fn decode(s: &str) -> Result<Vec<u8>, Error> {
-        Ok(base64::decode(s)?)
-    }
-
-    fn encode(b: &Vec<u8>) -> String {
-        base64::encode(b)
-    }
-}
-
 generate_element_with_text!(Data, "data", ns::IBB,
     [
         seq: u16 = "seq" => required,

src/lib.rs 🔗

@@ -37,6 +37,8 @@ extern crate try_from;
 pub mod error;
 /// XML namespace definitions used through XMPP.
 pub mod ns;
+/// Various helpers.
+pub mod helpers;
 /// Helper macros to parse and serialise more easily.
 #[macro_use]
 pub mod macros;