http-wasm-guest 0.8.0

a library providing a http-wasm guest handler
Documentation
use crate::{
    api::{Body, Header, Request},
    host::{Bytes, Message, handler},
};

impl Request for Message {
    fn source_addr(&self) -> Bytes {
        Bytes::from(handler::source_addr())
    }

    fn version(&self) -> Bytes {
        Bytes::from(handler::version())
    }

    fn method(&self) -> Bytes {
        Bytes::from(handler::method())
    }

    fn set_method(&self, method: &[u8]) {
        handler::set_method(method);
    }

    fn uri(&self) -> Bytes {
        Bytes::from(handler::uri())
    }

    fn set_uri(&self, uri: &[u8]) {
        handler::set_uri(uri);
    }
    fn header(&self) -> &dyn Header {
        self.header.as_ref()
    }

    fn body(&self) -> &dyn Body {
        self.body.as_ref()
    }
}

#[cfg(test)]
mod tests {
    use crate::Request;

    use super::*;

    #[test]
    fn test_req() {
        let r = Request::default();
        let sut = r.method();
        assert_eq!("GET", sut.to_str().unwrap());
    }

    #[test]
    fn test_header_names() {
        let r = Request::default();
        let sut = r.header().names();
        assert_eq!(2, sut.len());
        assert_eq!(sut, vec![Bytes::from("X-FOO"), Bytes::from("x-bar")]);
    }
    #[test]
    fn test_header_values() {
        let r = Request::default();
        let sut = r.header().values(&Bytes::from("value"));
        assert!(!sut.is_empty());
        assert!(sut.contains(&Bytes::from("test1")));
    }
    #[test]
    fn test_header_get() {
        let r = Request::default();
        let sut = r.header().get();
        let h1 = Bytes::from("X-FOO");
        let h2 = Bytes::from("x-bar");
        assert!(!sut.is_empty());
        assert!(sut.contains_key(&h1));
        assert!(sut.contains_key(&h2));
        assert_eq!(sut.len(), 2);
        assert_eq!(sut.get(&h1), Some(&vec!(Bytes::from("test1"))));
    }
    #[test]
    fn test_version() {
        let r = Request::default();
        let sut = r.version();
        assert!(!sut.is_empty());
        assert_eq!(sut.as_ref(), b"HTTP/2.0");
    }
}