Move Base64 codec into a helper module.

This commit is contained in:
Emmanuel Gil Peyrot 2017-11-23 16:00:47 +00:00
parent 3e37beffe2
commit ad17c877f5
3 changed files with 24 additions and 14 deletions

21
src/helpers.rs Normal file
View file

@ -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)
}
}

View file

@ -8,11 +8,11 @@ use try_from::TryFrom;
use std::str::FromStr; use std::str::FromStr;
use minidom::{Element, IntoAttributeValue}; use minidom::{Element, IntoAttributeValue};
use base64;
use error::Error; use error::Error;
use ns; use ns;
use helpers::Base64;
generate_attribute!(Stanza, "stanza", { generate_attribute!(Stanza, "stanza", {
Iq => "iq", Iq => "iq",
@ -25,19 +25,6 @@ generate_element_with_only_attributes!(Open, "open", ns::IBB, [
stanza: Stanza = "stanza" => default, 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, generate_element_with_text!(Data, "data", ns::IBB,
[ [
seq: u16 = "seq" => required, seq: u16 = "seq" => required,

View file

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