// Copyright (c) 2018 Teddy Wing // // This file is part of DomeKey Web. // // DomeKey Web is free software: you can redistribute it and/or modify it // under the terms of the GNU Affero General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DomeKey Web is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public // License along with DomeKey Web. If not, see // . use std::io::Write; use errors::*; pub fn set_400(w: &mut W) -> Result<()> { Ok(writeln!(w, "Status: 400")?) } pub fn set_403(w: &mut W) -> Result<()> { Ok(writeln!(w, "Status: 403")?) } pub fn set_404(w: &mut W) -> Result<()> { Ok(writeln!(w, "Status: 404")?) } pub fn set_405(w: &mut W, allowed_methods: &str) -> Result<()> { Ok( writeln!( w, "Status: 405 Allow: {}", allowed_methods)? ) } pub fn set_500(w: &mut W) -> Result<()> { Ok(writeln!(w, "Status: 500")?) } pub fn error_400(w: &mut W) { write!(w, "Status: 400 Content-Type: text/plain 400 Bad Request") .unwrap_or(()); } pub fn error_403(w: &mut W, message: Option<&str>) { set_403(w).unwrap_or(()); write!( w, "Content-Type: text/plain 403 Forbidden{}", message.map_or_else( || String::new(), |m| format!(": {}", m) ) ).unwrap_or(()); } pub fn error_404(w: &mut W) { write!(w, "Status: 404 Content-Type: text/plain 404 Not Found") .unwrap_or(()); } pub fn error_405(w: &mut W, allowed_methods: &str) { set_405(w, allowed_methods).unwrap_or(()); write!(w, "Content-Type: text/plain 405 Method Not Allowed") .unwrap_or(()); } pub fn error_500(w: &mut W, error: Option) { if let Some(error) = error { error!("{}", error); } set_500(w).unwrap_or(()); write!(w, "Content-Type: text/plain 500 Internal Server Error") .unwrap_or(()); }