Httpcodec
Encoders and decoders for HTTP/1.x messages based on bytecodec crate.
Install / Use
/learn @sile/HttpcodecREADME
httpcodec
Encoders and decoders for HTTP/1.x messages based on bytecodec crate.
Examples
Encodes a HTTP request message:
use bytecodec::Encode;
use bytecodec::bytes::BytesEncoder;
use bytecodec::io::IoEncodeExt;
use httpcodec::{BodyEncoder, HttpVersion, Method, Request, RequestEncoder, RequestTarget};
let request = Request::new(
Method::new("GET").unwrap(),
RequestTarget::new("/foo").unwrap(),
HttpVersion::V1_1,
b"barbaz",
);
let mut encoder = RequestEncoder::new(BodyEncoder::new(BytesEncoder::new()));
encoder.start_encoding(request).unwrap();
let mut buf = Vec::new();
encoder.encode_all(&mut buf).unwrap();
assert_eq!(buf, "GET /foo HTTP/1.1\r\nContent-Length: 6\r\n\r\nbarbaz".as_bytes());
Decodes a HTTP response message:
use bytecodec::bytes::RemainingBytesDecoder;
use bytecodec::io::IoDecodeExt;
use httpcodec::{BodyDecoder, HttpVersion, ResponseDecoder};
let mut decoder =
ResponseDecoder::<BodyDecoder<RemainingBytesDecoder>>::default();
let input = b"HTTP/1.0 200 OK\r\nContent-Length: 6\r\n\r\nbarbaz";
let response = decoder.decode_exact(input.as_ref()).unwrap();
assert_eq!(response.http_version(), HttpVersion::V1_0);
assert_eq!(response.status_code().as_u16(), 200);
assert_eq!(response.reason_phrase().as_str(), "OK");
assert_eq!(
response.header()
.fields()
.map(|f| (f.name().to_owned(), f.value().to_owned()))
.collect::<Vec<_>>(),
vec![("Content-Length".to_owned(), "6".to_owned())]
);
assert_eq!(response.body(), b"barbaz");
References
- RFC 7230 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
Related Skills
himalaya
337.7kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
337.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
coding-agent
337.7kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
