Skip to main content

windjammer_runtime/platform/native/
encoding.rs

1//! Native encoding implementation
2//!
3//! Re-exports the existing windjammer-runtime encoding module.
4
5use base64::{engine::general_purpose, Engine as _};
6
7// Re-export all functions from the parent encoding module
8
9// Add any additional functions needed by std::encoding API
10pub fn base64_encode(data: Vec<u8>) -> String {
11    general_purpose::STANDARD.encode(&data)
12}
13
14pub fn base64_encode_string(data: String) -> String {
15    general_purpose::STANDARD.encode(data.as_bytes())
16}
17
18pub fn base64_decode(data: String) -> Result<Vec<u8>, String> {
19    general_purpose::STANDARD
20        .decode(&data)
21        .map_err(|e| e.to_string())
22}
23
24pub fn base64_decode_string(data: String) -> Result<String, String> {
25    let bytes = general_purpose::STANDARD
26        .decode(&data)
27        .map_err(|e| e.to_string())?;
28    String::from_utf8(bytes).map_err(|e| e.to_string())
29}
30
31pub fn hex_encode(data: Vec<u8>) -> String {
32    hex::encode(&data)
33}
34
35pub fn hex_encode_string(data: String) -> String {
36    hex::encode(data.as_bytes())
37}
38
39pub fn hex_decode(data: String) -> Result<Vec<u8>, String> {
40    hex::decode(&data).map_err(|e| e.to_string())
41}
42
43pub fn hex_decode_string(data: String) -> Result<String, String> {
44    let bytes = hex::decode(&data).map_err(|e| e.to_string())?;
45    String::from_utf8(bytes).map_err(|e| e.to_string())
46}
47
48pub fn url_encode(data: String) -> String {
49    urlencoding::encode(&data).to_string()
50}
51
52pub fn url_decode(data: String) -> Result<String, String> {
53    urlencoding::decode(&data)
54        .map(|s| s.to_string())
55        .map_err(|e| e.to_string())
56}
57
58pub fn url_encode_component(data: String) -> String {
59    url_encode(data)
60}
61
62pub fn url_decode_component(data: String) -> Result<String, String> {
63    url_decode(data)
64}