use std::error::Error;
use std::fmt;
use iron::prelude::*;
use iron::status;
#[derive(Debug)]
pub enum CsrfError {
CriteriaMissing,
NotBase64,
RngError,
Undefined(String),
ValidationFailed,
}
impl Error for CsrfError {
fn description(&self) -> &str {
"CSRF Error"
}
}
impl fmt::Display for CsrfError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self)
}
}
impl From<CsrfError> for IronError {
fn from(err: CsrfError) -> IronError {
IronError {
response: Response::with((status::Forbidden, format!("{}", err))),
error: Box::new(err),
}
}
}