From 732d7d83068efb5a44ab185716d3ad0001c40f5a Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Wed, 5 Jul 2023 22:02:34 -0400 Subject: [PATCH] readme --- README.md | 38 ++++++++++++++++++++++++++++++++++++++ src/response.rs | 11 ++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ee8997 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# http + +A rust http parsing library + +### Example + +```rs +use http::{request::Request, parse::TryParse, error::HTTPError, response::Response, status, header::HeaderName}; + +fn main() -> Result<(), HTTPError> { + + // http request as a string + let request_str = "GET / HTTP/1.1\n\ + Host: www.example.com\n\ + User-Agent: Mozilla/4.0\n\ + Accept-language: en\n\ + \n\ + "; + + // here we set what we want the body to be parsed into if it exists + // the body type must implement FromStr and ToString + let request = Request::::try_parse(request_str)?; // try parse since it can fail + + let mut response = Response::::new(); // create a new response + response + .set_body("hello world!") // add a body that is Into + .set_status(status::SUCCESS) // set the status + .add_header((HeaderName::try_from("Content-Type")?, "text/plain")); // set content-type header + + let response_str = response.to_string(); // get http response in text form + + Ok(()) +} +``` + +### License + +This project is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) diff --git a/src/response.rs b/src/response.rs index 7f6f326..dd25d6e 100644 --- a/src/response.rs +++ b/src/response.rs @@ -18,25 +18,26 @@ impl Response { } } - pub fn set_version(mut self, version: impl Into) -> Self { + pub fn set_version(&mut self, version: impl Into) -> &mut Self { self.version = version.into(); self } - pub fn set_status(mut self, status: impl Into) -> Self { + pub fn set_status(&mut self, status: impl Into) -> &mut Self { self.status = status.into(); self } - pub fn add_header(mut self, header: impl Into
) -> Self { + pub fn add_header(&mut self, header: impl Into
) -> &mut Self { self.headers.insert(header.into()); self } - pub fn set_body(mut self, body: T) -> Self { - self.body = Some(body); + pub fn set_body(&mut self, body: impl Into) -> &mut Self { + self.body = Some(body.into()); self } + } impl TryParse for Response {