From 531fe3d13c27c2c8efa9ff826321d110150417fd Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 4 Oct 2023 14:25:30 +0200 Subject: [PATCH] Replace base64 with data-encoding (#34) * Replace base64 with data-encoding * Update CHANGELOG --- CHANGELOG.md | 3 +++ Cargo.toml | 1 + examples/repl/examples/repl.rs | 2 +- sdk/Cargo.toml | 4 ++-- sdk/src/lobby.rs | 8 +++----- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a95477b..7197b52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - ReleaseDate +### Changed +- [PR#34](https://github.com/EmbarkStudios/discord-sdk/pull/34) replaced `base64` with `data-encoding`. + ## [0.3.4] - 2023-03-31 ### Fixed - [PR#30](https://github.com/EmbarkStudios/discord-sdk/pull/30) fixed a bug with asset key validation added in [PR#26](https://github.com/EmbarkStudios/discord-sdk/pull/26). Thanks [@winrg](https://github.com/winrg)! diff --git a/Cargo.toml b/Cargo.toml index c1a3996..24faa48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] +resolver = "2" members = [ # The actual library crate "sdk", diff --git a/examples/repl/examples/repl.rs b/examples/repl/examples/repl.rs index 7441e13..cb818ef 100644 --- a/examples/repl/examples/repl.rs +++ b/examples/repl/examples/repl.rs @@ -248,7 +248,7 @@ async fn main() -> Result<(), anyhow::Error> { } }; - match Cmd::try_parse_from(std::iter::once("repl".to_owned()).chain(split.into_iter())) { + match Cmd::try_parse_from(std::iter::once("repl".to_owned()).chain(split)) { Ok(cmd) => { if let Commands::Exit = &cmd.cmd { break; diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index edb3b59..5fb0519 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -27,7 +27,7 @@ anyhow = "1.0" async-trait = "0.1" # Lobby messages can be an arbitrary binary blob which needs to be encoded # in base64 -base64 = "0.21" +data-encoding = "2.4" bitflags = "2.0" crossbeam-channel = "0.5" num-traits = "0.2" @@ -62,7 +62,7 @@ app_dirs2 = "2.3" [target.'cfg(target_os = "windows")'.dependencies] # We need to read and modify the registry when doing application registration -winreg = "0.11" +winreg = "0.51" [dev-dependencies] # So tests can print out tracing diff --git a/sdk/src/lobby.rs b/sdk/src/lobby.rs index b779a45..e7e959b 100644 --- a/sdk/src/lobby.rs +++ b/sdk/src/lobby.rs @@ -291,8 +291,7 @@ impl Serialize for LobbyMessage { match self { Self::Binary(bin) => { let mut data = String::from("data:text/plain;base64,"); - use base64::Engine; - base64::engine::general_purpose::STANDARD_NO_PAD.encode_string(bin, &mut data); + data_encoding::BASE64_NOPAD.encode_append(bin, &mut data); serializer.serialize_str(&data) } @@ -323,9 +322,8 @@ impl<'de> Deserialize<'de> for LobbyMessage { E: de::Error, { let msg = if let Some(encoded) = v.strip_prefix("data:text/plain;base64,") { - use base64::Engine; - let bin = base64::engine::general_purpose::STANDARD_NO_PAD - .decode(encoded) + let bin = data_encoding::BASE64_NOPAD + .decode(encoded.as_bytes()) .map_err(de::Error::custom)?; LobbyMessage::Binary(bin) } else {