1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Http Server Crate
//!
//! This crate contains all the libraries necessary to run an HTTP Server
//!
//! # Example
//! ```rust,no_run
//! use http_srv::{
//!     request::{
//!         handler::{self, Handler},
//!         RequestMethod
//!     },
//!     HttpServer,
//!     ServerConfig
//! };
//!
//! fn main() {
//!     let config = ServerConfig::default();
//!
//!     let mut handler = Handler::new();
//!     handler.add_default(RequestMethod::GET, handler::cat_handler);
//!     handler.get("/", handler::index_handler);
//!     handler.get("/hello", |req| {
//!         let name = req.param("name").unwrap_or("friend");
//!         let msg = format!("Hello {name}!");
//!         req.respond_buf(msg.as_bytes())
//!     });
//!
//!     let mut server = HttpServer::new(config);
//!     server.set_handler(handler);
//!     server.run();
//! }
//! ```

pub mod request;
pub mod server;

use server::ServerError;
pub use server::HttpServer;
pub use request::HttpRequest;
pub use request::handler::Handler;
pub use server::ServerConfig;

/// Result type for the [http_srv](self) crate
///
/// It serves as a shortcut for an [std::result::Result]<T,[ServerError]>
pub type Result<T> = std::result::Result<T,ServerError>;