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
use hyper::status::StatusCode::{NotFound, BadRequest};
use request::Request;
use middleware::{ErrorHandler, Action, Halt};
use nickel_error::NickelError;
use std::io::Write;
#[derive(Clone, Copy)]
pub struct DefaultErrorHandler;
impl<D> ErrorHandler<D> for DefaultErrorHandler {
fn handle_error(&self, err: &mut NickelError<D>, _req: &mut Request<D>) -> Action {
if let Some(ref mut res) = err.stream {
let msg : &[u8] = match res.status() {
NotFound => b"Not Found",
BadRequest => b"Bad Request",
_ => b"Internal Server Error"
};
let _ = res.write_all(msg);
} else {
println!("Error: {}", err.message);
}
Halt(())
}
}