pub struct Message {
pub protocol: String,
pub status: String,
pub headers: HashMap<String, String>,
pub body: Vec<u8>,
}Expand description
§A request message
Fields§
§protocol: String§status: String§headers: HashMap<String, String>§body: Vec<u8>Implementations§
Source§impl Message
impl Message
Sourcepub fn new(
protocol: String,
status: String,
headers: HashMap<String, String>,
body: Vec<u8>,
) -> Message
pub fn new( protocol: String, status: String, headers: HashMap<String, String>, body: Vec<u8>, ) -> Message
§Create a new HTTP Message
Examples found in repository?
examples/dynamic.rs (lines 89-94)
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 }Sourcepub fn header_to_string(&self) -> String
pub fn header_to_string(&self) -> String
§Get the HTTP header as a new string
use milstian_http::response::Message;
use std::collections::HashMap;
assert_eq!(
Message::new(
"HTTP/1.0".to_string(),
"200 OK".to_string(),
HashMap::new(),
b"<html><body>Nothing here</body></html>".to_vec()
).header_to_string(),
"HTTP/1.0 200 OK\r\n\r\n".to_string()
); Sourcepub fn to_string(&mut self) -> String
pub fn to_string(&mut self) -> String
§Convert response message into a string
use milstian_http::response::Message;
use std::collections::HashMap;
assert_eq!(
Message::new(
"HTTP/1.0".to_string(),
"200 OK".to_string(),
HashMap::new(),
b"<html><body>Nothing here</body></html>".to_vec()
).to_string(),
"HTTP/1.0 200 OK\r\n\r\n<html><body>Nothing here</body></html>".to_string()
);Sourcepub fn to_bytes(&mut self) -> Vec<u8> ⓘ
pub fn to_bytes(&mut self) -> Vec<u8> ⓘ
§Convert message into bytes
use milstian_http::response::Message;
use std::collections::HashMap;
assert_eq!(
Message::new(
"HTTP/1.0".to_string(),
"200 OK".to_string(),
HashMap::new(),
b"<html><body>Nothing here</body></html>".to_vec()
).to_bytes(),
b"HTTP/1.0 200 OK\r\n\r\n<html><body>Nothing here</body></html>".to_vec()
);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