From d9e51706768dcb11ef32f4a2d5fd9161e1e92fed Mon Sep 17 00:00:00 2001 From: Jan Wolff Date: Thu, 14 May 2020 21:45:59 +0200 Subject: initial commit --- src/response.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/response.rs (limited to 'src/response.rs') diff --git a/src/response.rs b/src/response.rs new file mode 100644 index 0000000..521cad7 --- /dev/null +++ b/src/response.rs @@ -0,0 +1,50 @@ +use std::vec; + +#[derive(Copy, Clone)] +pub enum Status { + Input = 1, + Success = 2, + Redirect = 3, + TemporaryFailure = 4, + PermanentFailure = 5, + ClientCertificateRequired = 6, +} + +pub struct Header { + status: Status, + meta: String, +} + +pub struct Response { + header: Header, + data: std::vec::Vec, +} + +impl Header { + pub fn new(status: Status, meta: String) -> Header { + return Header{ + status: status, + meta: meta, + } + } + + pub fn format(&self) -> String { + let status: u8 = self.status as u8; + return format!("{} {}\r\n", status * 10, self.meta) + } +} + +impl Response { + pub fn new(header: Header, data: std::vec::Vec) -> Response { + return Response{ + header: header, + data: data, + } + } + + pub fn format(&self) -> std::vec::Vec { + let mut resp: std::vec::Vec = self.header.format().as_bytes().to_vec(); + resp.extend(&self.data); + return resp; + } +} -- cgit v1.2.3