Crate uhttp_request

Crate uhttp_request 

Source
Expand description

This crate provides barebone, slice-based parsers for extracting request line components and header fields from HTTP requests.

In general, components are extracted along defined delimiters, but further processing and syntax validation is left to higher layers.

§Example

use uhttp_request::{RequestLine, Headers};

let req = b"GET /abc?k=v HTTP/1.1\r\nHost: example.com\r\nAccept: text/*\r\n\r\nbody";

let (reqline, rest) = RequestLine::new(req).unwrap();
assert_eq!(reqline.method, "GET");
assert_eq!(reqline.target, "/abc?k=v");
assert_eq!(reqline.version, "HTTP/1.1");

let mut headers = Headers::new(rest);

let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Host");
assert_eq!(h.val, b" example.com");

let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Accept");
assert_eq!(h.val, b" text/*");

assert!(headers.next().is_none());

let rest = headers.into_inner();
assert_eq!(rest, b"body");

Structs§

Header
An HTTP request header field [RFC7230§3.2].
Headers
Iterator over all header fields in a request.
RequestLine
A “Request-Line” [RFC7230§3.1.1] that begins an HTTP request.

Enums§

Error
Errors that may occur when processing request header.

Type Aliases§

Result
Specialized result using custom Error.