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
use proto::frame::headers::Headers; use proto::frame::data::Data; use rustls::ServerSession; use std::io::Write; use hpack_codec::Encoder; #[derive(Debug)] pub struct Message { pub status: u32, pub data: Vec<u8> } impl Message { pub fn send(&self, session: &mut ServerSession, encoder: &mut Encoder, stream_id: &mut u32) { if *stream_id == 0 { *stream_id += 1; } println!("[SENDING] Status: {} Stream: {}", self.status, stream_id); if self.status == 200 || self.status == 404 { let mut headers = Headers::new(*stream_id); headers.end_headers(); session.write_all(&headers.encode(encoder)).unwrap(); let mut d = Data::new(*stream_id, self.data.clone()); session.write_all(&d.as_bytes()).unwrap(); } } pub fn from(data: Vec<u8>) -> Message { Message { status: 200, data: data } } pub fn not_found() -> Message { Message { status: 404, data: String::from("<h1>PAGE NOT FOUND</h1>").as_bytes().to_vec() } } }