Skip to content

Commit

Permalink
update dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
magiclen committed Mar 14, 2023
1 parent 8e569b1 commit d3e7819
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 48 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "base64-stream"
version = "1.2.7"
version = "2.0.0"
authors = ["Magic Len <len@magiclen.org>"]
edition = "2021"
repository = "https://github.com/magiclen/base64-stream"
Expand All @@ -13,7 +13,7 @@ license = "MIT"
include = ["src/**/*", "Cargo.toml", "README.md", "LICENSE"]

[dependencies]
base64 = "0.13"
base64 = "0.21"
generic-array = "0.14"

[dependencies.educe]
Expand Down
28 changes: 14 additions & 14 deletions src/from_base64_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ use std::io::{self, ErrorKind, Read};
use generic_array::typenum::{IsGreaterOrEqual, True, U4, U4096};
use generic_array::{ArrayLength, GenericArray};

use base64::DecodeError;
use base64::engine::{general_purpose::STANDARD, GeneralPurpose};
use base64::{DecodeSliceError, Engine};

/// Read base64 data and decode them to plain data.
#[derive(Educe)]
Expand All @@ -20,6 +21,8 @@ pub struct FromBase64Reader<
buf_offset: usize,
temp: [u8; 2],
temp_length: usize,
#[educe(Debug(ignore))]
engine: &'static GeneralPurpose,
}

impl<R: Read> FromBase64Reader<R> {
Expand All @@ -39,6 +42,7 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase
buf_offset: 0,
temp: [0; 2],
temp_length: 0,
engine: &STANDARD,
}
}
}
Expand Down Expand Up @@ -89,7 +93,7 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase
}

#[inline]
fn drain_block<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeError> {
fn drain_block<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeSliceError> {
debug_assert!(self.buf_length > 0);
debug_assert!(self.temp_length == 0);
debug_assert!(!buf.is_empty());
Expand All @@ -98,11 +102,9 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase

let mut b = [0; 3];

let decode_length = base64::decode_config_slice(
&self.buf[self.buf_offset..(self.buf_offset + drain_length)],
base64::STANDARD,
&mut b,
)?;
let decode_length = self
.engine
.decode_slice(&self.buf[self.buf_offset..(self.buf_offset + drain_length)], &mut b)?;

self.buf_left_shift(drain_length);

Expand Down Expand Up @@ -135,7 +137,7 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase
Ok(buf)
}

fn drain<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeError> {
fn drain<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeSliceError> {
if buf.is_empty() {
return Ok(buf);
}
Expand All @@ -156,11 +158,9 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase

let drain_length = max_available_self_buf_length.min(actual_max_read_size);

let decode_length = base64::decode_config_slice(
&self.buf[self.buf_offset..(self.buf_offset + drain_length)],
base64::STANDARD,
buf,
)?;
let decode_length = self
.engine
.decode_slice(&self.buf[self.buf_offset..(self.buf_offset + drain_length)], buf)?;

buf = &mut buf[decode_length..];

Expand All @@ -175,7 +175,7 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBase
}

#[inline]
fn drain_end<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeError> {
fn drain_end<'a>(&mut self, mut buf: &'a mut [u8]) -> Result<&'a mut [u8], DecodeSliceError> {
if buf.is_empty() {
return Ok(buf);
}
Expand Down
26 changes: 14 additions & 12 deletions src/from_base64_writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ use std::io::{self, ErrorKind, Write};
use generic_array::typenum::{IsGreaterOrEqual, True, U4, U4096};
use generic_array::{ArrayLength, GenericArray};

use base64::engine::{general_purpose::STANDARD, GeneralPurpose};
use base64::Engine;

/// Write base64 data and decode them to plain data.
#[derive(Educe)]
#[educe(Debug)]
Expand All @@ -16,6 +19,8 @@ pub struct FromBase64Writer<
buf: [u8; 4],
buf_length: usize,
temp: GenericArray<u8, N>,
#[educe(Debug(ignore))]
engine: &'static GeneralPurpose,
}

impl<W: Write> FromBase64Writer<W> {
Expand All @@ -33,6 +38,7 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBas
buf: [0; 4],
buf_length: 0,
temp: GenericArray::default(),
engine: &STANDARD,
}
}
}
Expand All @@ -41,12 +47,10 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> FromBas
fn drain_block(&mut self) -> Result<(), io::Error> {
debug_assert!(self.buf_length > 0);

let decode_length = base64::decode_config_slice(
&self.buf[..self.buf_length],
base64::STANDARD,
&mut self.temp,
)
.map_err(|err| io::Error::new(ErrorKind::Other, err))?;
let decode_length = self
.engine
.decode_slice(&self.buf[..self.buf_length], &mut self.temp)
.map_err(|err| io::Error::new(ErrorKind::Other, err))?;

self.inner.write_all(&self.temp[..decode_length])?;

Expand All @@ -66,12 +70,10 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> Write
while buf.len() >= 4 {
let max_available_buf_length = (buf.len() & !0b11).min((N::USIZE / 3) << 2); // (N::USIZE / 3) * 4

let decode_length = base64::decode_config_slice(
&buf[..max_available_buf_length],
base64::STANDARD,
&mut self.temp,
)
.map_err(|err| io::Error::new(ErrorKind::Other, err))?;
let decode_length = self
.engine
.decode_slice(&buf[..max_available_buf_length], &mut self.temp)
.map_err(|err| io::Error::new(ErrorKind::Other, err))?;

buf = &buf[max_available_buf_length..];

Expand Down
24 changes: 14 additions & 10 deletions src/to_base64_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ use std::io::{self, ErrorKind, Read};
use generic_array::typenum::{IsGreaterOrEqual, True, U4, U4096};
use generic_array::{ArrayLength, GenericArray};

use base64::engine::{general_purpose::STANDARD, GeneralPurpose};
use base64::Engine;

/// Read any data and encode them to base64 data.
#[derive(Educe)]
#[educe(Debug)]
Expand All @@ -16,6 +19,8 @@ pub struct ToBase64Reader<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Out
buf_offset: usize,
temp: [u8; 3],
temp_length: usize,
#[educe(Debug(ignore))]
engine: &'static GeneralPurpose,
}

impl<R: Read> ToBase64Reader<R> {
Expand All @@ -35,6 +40,7 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> ToBase64
buf_offset: 0,
temp: [0; 3],
temp_length: 0,
engine: &STANDARD,
}
}
}
Expand Down Expand Up @@ -94,11 +100,10 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> ToBase64

let mut b = [0; 4];

let encode_length = base64::encode_config_slice(
&self.buf[self.buf_offset..(self.buf_offset + drain_length)],
base64::STANDARD,
&mut b,
);
let encode_length = self
.engine
.encode_slice(&self.buf[self.buf_offset..(self.buf_offset + drain_length)], &mut b)
.unwrap();

self.buf_left_shift(drain_length);

Expand Down Expand Up @@ -152,11 +157,10 @@ impl<R: Read, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> ToBase64

let drain_length = max_available_self_buf_length.min(actual_max_read_size);

let encode_length = base64::encode_config_slice(
&self.buf[self.buf_offset..(self.buf_offset + drain_length)],
base64::STANDARD,
buf,
);
let encode_length = self
.engine
.encode_slice(&self.buf[self.buf_offset..(self.buf_offset + drain_length)], buf)
.unwrap();

buf = &mut buf[encode_length..];

Expand Down
22 changes: 12 additions & 10 deletions src/to_base64_writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ use std::io::{self, Write};
use generic_array::typenum::{IsGreaterOrEqual, True, U4, U4096};
use generic_array::{ArrayLength, GenericArray};

use base64::engine::{general_purpose::STANDARD, GeneralPurpose};
use base64::Engine;

/// Write base64 data and encode them to plain data.
#[derive(Educe)]
#[educe(Debug)]
Expand All @@ -16,6 +19,8 @@ pub struct ToBase64Writer<
buf: [u8; 3],
buf_length: usize,
temp: GenericArray<u8, N>,
#[educe(Debug(ignore))]
engine: &'static GeneralPurpose,
}

impl<W: Write> ToBase64Writer<W> {
Expand All @@ -33,6 +38,7 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> ToBase6
buf: [0; 3],
buf_length: 0,
temp: GenericArray::default(),
engine: &STANDARD,
}
}
}
Expand All @@ -41,11 +47,8 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> ToBase6
fn drain_block(&mut self) -> Result<(), io::Error> {
debug_assert!(self.buf_length > 0);

let encode_length = base64::encode_config_slice(
&self.buf[..self.buf_length],
base64::STANDARD,
&mut self.temp,
);
let encode_length =
self.engine.encode_slice(&self.buf[..self.buf_length], &mut self.temp).unwrap();

self.inner.write_all(&self.temp[..encode_length])?;

Expand All @@ -66,11 +69,10 @@ impl<W: Write, N: ArrayLength<u8> + IsGreaterOrEqual<U4, Output = True>> Write
let max_available_buf_length =
(buf.len() - (buf.len() % 3)).min((N::USIZE >> 2) * 3); // (N::USIZE / 4) * 3

let encode_length = base64::encode_config_slice(
&buf[..max_available_buf_length],
base64::STANDARD,
&mut self.temp,
);
let encode_length = self
.engine
.encode_slice(&buf[..max_available_buf_length], &mut self.temp)
.unwrap();

buf = &buf[max_available_buf_length..];

Expand Down

0 comments on commit d3e7819

Please sign in to comment.