From ad17c877f5c5fe82d3457d2fd129a9be01a69ed0 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 23 Nov 2017 16:00:47 +0000 Subject: [PATCH] Move Base64 codec into a helper module. --- src/helpers.rs | 21 +++++++++++++++++++++ src/ibb.rs | 15 +-------------- src/lib.rs | 2 ++ 3 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 src/helpers.rs diff --git a/src/helpers.rs b/src/helpers.rs new file mode 100644 index 0000000..e12000a --- /dev/null +++ b/src/helpers.rs @@ -0,0 +1,21 @@ +// Copyright (c) 2017 Emmanuel Gil Peyrot +// +// 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, Error> { + Ok(base64::decode(s)?) + } + + pub fn encode(b: &Vec) -> String { + base64::encode(b) + } +} diff --git a/src/ibb.rs b/src/ibb.rs index cc2d89c..d7717a7 100644 --- a/src/ibb.rs +++ 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, Error> { - Ok(base64::decode(s)?) - } - - fn encode(b: &Vec) -> String { - base64::encode(b) - } -} - generate_element_with_text!(Data, "data", ns::IBB, [ seq: u16 = "seq" => required, diff --git a/src/lib.rs b/src/lib.rs index e5b5439..2bc12e0 100644 --- a/src/lib.rs +++ b/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;