#chunked #transfer #decode #decoder #chunk

chunked_transfer

Encoder and decoder for HTTP chunked transfer coding (RFC 7230 § 4.1)

9 releases (stable)

1.4.1 Dec 27, 2022
1.4.0 Jan 30, 2021
1.3.0 Oct 6, 2020
1.2.0 Jun 14, 2020
0.2.0 May 3, 2015

#64 in Parser implementations

Download history 67229/week @ 2023-06-06 66223/week @ 2023-06-13 68554/week @ 2023-06-20 58933/week @ 2023-06-27 68814/week @ 2023-07-04 66155/week @ 2023-07-11 69131/week @ 2023-07-18 67483/week @ 2023-07-25 66199/week @ 2023-08-01 66506/week @ 2023-08-08 68040/week @ 2023-08-15 89107/week @ 2023-08-22 97713/week @ 2023-08-29 111965/week @ 2023-09-05 131999/week @ 2023-09-12 103281/week @ 2023-09-19

464,365 downloads per month
Used in 432 crates (9 directly)

MIT/Apache

18KB
345 lines

rust-chunked-transfer

Build Status chunked_transfer on Crates.io

Documentation

Encoder and decoder for HTTP chunked transfer coding. For more information about chunked transfer encoding:

Example

Decoding

use chunked_transfer::Decoder;
use std::io::Read;

let encoded = b"3\r\nhel\r\nb\r\nlo world!!!\r\n0\r\n\r\n";
let mut decoded = String::new();

let mut decoder = Decoder::new(encoded as &[u8]);
decoder.read_to_string(&mut decoded);

assert_eq!(decoded, "hello world!!!");

Encoding

use chunked_transfer::Encoder;
use std::io::Write;

let mut decoded = "hello world";
let mut encoded: Vec<u8> = vec![];

{
    let mut encoder = Encoder::with_chunks_size(&mut encoded, 5);
    encoder.write_all(decoded.as_bytes());
}

assert_eq!(encoded, b"5\r\nhello\r\n5\r\n worl\r\n1\r\nd\r\n0\r\n\r\n");

Authors

License

Licensed under either of:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps