Struct icaparse::Request
[−]
[src]
pub struct Request<'headers, 'buf: 'headers> { pub method: Option<&'buf str>, pub path: Option<&'buf str>, pub version: Option<u8>, pub headers: &'headers mut [Header<'buf>], pub encapsulated_sections: Option<HashMap<SectionType, Vec<u8>>>, }
A parsed Request.
The optional values will be None
if a parse was not complete, and did not
parse the associated property. This allows you to inspect the parts that
could be parsed, before reading more, in case you wish to exit early.
Example
let buf = b"RESPMOD /404 ICAP/1.0\r\nHost:"; let mut headers = [icaparse::EMPTY_HEADER; 16]; let mut req = icaparse::Request::new(&mut headers); let res = req.parse(buf).unwrap(); if res.is_partial() { match req.path { Some(ref path) => { // check router for path. // /404 doesn't exist? we could stop parsing }, None => { // must read more and parse again } } }
Fields
method: Option<&'buf str>
The request method, such as RESPMOD
.
path: Option<&'buf str>
The request path, such as /about-us
.
version: Option<u8>
The request version, such as ICAP/1.0
.
headers: &'headers mut [Header<'buf>]
The request headers.
encapsulated_sections: Option<HashMap<SectionType, Vec<u8>>>
The sections of the encapsulated body listed in the Encapsulated header
Methods
impl<'h, 'b> Request<'h, 'b>
[src]
fn new(headers: &'h mut [Header<'b>]) -> Request<'h, 'b>
Creates a new Request, using a slice of headers you allocate.
fn parse(&mut self, buf: &'b [u8]) -> Result<usize>
Try to parse a buffer of bytes into the Request.