pub struct Message {
pub body: BodyContentType,
pub headers: HashMap<String, HeaderValueParts>,
pub request_line: Line,
}Fields§
§body: BodyContentType§headers: HashMap<String, HeaderValueParts>§request_line: LineImplementations§
Source§impl Message
impl Message
Sourcepub fn get_protocol_text(protocol: &Protocol) -> String
pub fn get_protocol_text(protocol: &Protocol) -> String
Examples found in repository?
examples/dynamic.rs (line 53)
44 fn respond(
45 &self,
46 request_message: &request::Message,
47 _application: &Application,
48 _socket: &SocketAddr,
49 overflow_bytes: &u64,
50 ) -> Result<response::Message, String> {
51 if let Some(route) = &self.route {
52 let protocol =
53 request::Message::get_protocol_text(&request_message.request_line.protocol);
54 let mut headers: HashMap<String, String> = HashMap::new();
55 headers.insert("Content-Type".to_string(), "text/html".to_string());
56
57 let upload = match request_message.body {
58 BodyContentType::MultiPart(ref body) => match body.get(&"file".to_string()) {
59 Some(value) => match String::from_utf8(value.body.clone()) {
60 Ok(utf8_value) => utf8_value,
61 _ => format!("no UTF-8 file data in: {:?}", &value.body),
62 },
63 _ => format!("no file data in {:?}", request_message),
64 },
65 _ => "no data".to_string(),
66 };
67
68 let upload2 = match request_message.body {
69 BodyContentType::MultiPart(ref body) => match body.get(&"file2".to_string()) {
70 Some(value) => match String::from_utf8(value.body.clone()) {
71 Ok(utf8_value) => utf8_value,
72 _ => format!("no UTF-8 file data in: {:?}", &value.body),
73 },
74 _ => format!("no file data in {:?}", request_message),
75 },
76 _ => "no data".to_string(),
77 };
78
79 // NOTE uncomment to test concurrency
80 // thread::sleep(Duration::from_secs(2));
81
82 let mut overflow_upload = "Upload did not overflow server byte limit!";
83 if overflow_bytes > &0 {
84 overflow_upload = "Your upload exceeded server byte limit!";
85 }
86
87 let output = format!("<html><head><title>Milstian Internet Framework - Dynamic Example</title><link rel='stylesheet' href='/css/style.css' /></head><body><div class='wrapper'><h1>Milstian Web Framework</h1><img alt='' src='/img/logo1-modified.jpg' /><p><strong>Query argument:</strong> {}</p><div><strong>File upload 1:</strong><br /><pre>{}</pre></div><div><strong>File upload 2:</strong><br /><pre>{}</pre></div><h2>Dynamic Test</h2><form action='' method='post' enctype='multipart/form-data'><fieldset><legend>File upload</legend><div><label>Select file 1<br /><input type='file' name='file' /></label></div><div><label>Select file 2<br /><input type='file' name='file2' /></label></div><p>{}</p><div><input type='submit' value='Upload' /></div></fieldset></form></div></body></html>", route, &upload, &upload2, &overflow_upload);
88
89 return Ok(response::Message::new(
90 protocol.to_string(),
91 "200 OK".to_string(),
92 headers,
93 output.as_bytes().to_vec(),
94 ));
95 } else {
96 Err("No result".to_string())
97 }
98 }pub fn get_message_body(body: &str) -> Option<BodyContentType>
pub fn get_header_field(line: &str) -> Option<(String, HeaderValueParts)>
pub fn get_request_line(line: &str) -> Option<Line>
Sourcepub fn from_tcp_stream(request: &[u8]) -> Option<Message>
pub fn from_tcp_stream(request: &[u8]) -> Option<Message>
Try to decode a byte stream into a HTTP Message
§Usage
use milstian_http::request::{Message, Method, Protocol};
let response = Message::from_tcp_stream(b"GET / HTTP/2.0\r\n");
let response_unwrapped = response.expect("A decoded HTTP Message");
assert_eq!(response_unwrapped.request_line.method, Method::Get);
assert_eq!(response_unwrapped.request_line.request_uri, "/".to_string());
assert_eq!(response_unwrapped.request_line.protocol, Protocol::V2_0);Trait Implementations§
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnwindSafe for Message
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more