Crate base64_stream
source ·Expand description
Base64 Stream
To encode/decode large data with the standard Base64 encoding.
Examples
Encode
ToBase64Reader
extern crate base64_stream;
use std::io::Cursor;
use std::io::Read;
use base64_stream::ToBase64Reader;
let test_data = b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".to_vec();
let mut reader = ToBase64Reader::new(Cursor::new(test_data));
let mut base64 = [0u8; 4096];
let c = reader.read(&mut base64).unwrap();
assert_eq!(b"SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==".to_vec(), base64[..c].to_vec());
ToBase64Writer
extern crate base64_stream;
use std::fs::{self, File};
use std::io::Write;
use base64_stream::ToBase64Writer;
let test_data = b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".as_ref();
let base64 = File::create("encode_output.txt").unwrap();
let mut writer = ToBase64Writer::new(base64);
writer.write(test_data).unwrap();
writer.flush().unwrap(); // the flush method is only used when the full base64 data has been written
drop(writer);
assert_eq!("SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==", fs::read_to_string("encode_output.txt").unwrap());
Decode
FromBase64Reader
extern crate base64_stream;
use std::io::Cursor;
use std::io::Read;
use base64_stream::FromBase64Reader;
let base64 = b"SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==".to_vec();
let mut reader = FromBase64Reader::new(Cursor::new(base64));
let mut test_data = [0u8; 4096];
let c = reader.read(&mut test_data).unwrap();
assert_eq!(b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".to_vec(), test_data[..c].to_vec());
FromBase64Writer
extern crate base64_stream;
use std::fs::{self, File};
use std::io::Write;
use base64_stream::FromBase64Writer;
let base64 = b"SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==".as_ref();
let test_data = File::create("decode_output.txt").unwrap();
let mut writer = FromBase64Writer::new(test_data);
writer.write(base64).unwrap();
writer.flush().unwrap(); // the flush method is only used when the full base64 data has been written
assert_eq!("Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.", fs::read_to_string("decode_output.txt").unwrap());
Re-exports
pub extern crate base64;
Structs
Read base64 data and decode them to plain data.
Write base64 data and decode them to plain data.
Read any data and encode them to base64 data.
Write any data and encode them to base64 data.