1
use super::{ RequestError as E, RequestResult };
2

            
3
#[derive(Debug, Clone, Copy)]
4
pub enum Mode {
5
    NetAscii,
6
    Octet,
7
    Mail,
8
}
9

            
10
impl TryFrom<&[u8]> for Mode {
11
    type Error = E;
12

            
13
    fn try_from(s: &[u8]) -> RequestResult<Self> {
14
	use crate::util::ToLower;
15

            
16
        match s.to_lower().as_slice() {
17
	    b"netascii"	=> Ok(Self::NetAscii),
18
	    b"octet"	=> Ok(Self::Octet),
19
	    b"mail"	=> Ok(Self::Mail),
20
	    _m		=> Err(E::BadMode),
21
	}
22
    }
23
}