WIP use thiserror
Dependencies
- [2]
3VVQWLOXMajor refactor: modularisation - [3]
WGRFJRTEAdd tests, rename Status to Header, implement redirect and proper input handling - [4]
3SPNKI46Improve parsing. Add modules that were missed - [*]
ONQEIR5BWIP mime-type handling
Change contents
- edit in src/response.rs at line 21
use thiserror::Error; - replacement in src/response.rs at line 33
impl From<(u8, Meta)> for Input {impl TryFrom<(u8, Meta)> for Input { - replacement in src/response.rs at line 48
impl From<(u8, Meta)> for Success {fn from((_, meta): (u8, Meta)) -> Self {let mime = Mime::try_from(Meta::try_from(meta).unwrap()).expect("failed to read mime");Self { mime }#[derive(Error, Debug)]#[error("failed to read mime: {0}")]pub struct MimeError(#[from] mime::FromStrError);impl TryFrom<(u8, Meta)> for Success {type Error = MimeError;fn try_from((_, meta): (u8, Meta)) -> Result<Self, Self::Error> {let mime = Mime::try_from(meta)?;Ok(Self { mime }) - edit in src/response.rs at line 149
#[derive(Error, Debug)]pub enum HeaderError {#[error("bad status code: [{0},{1}]")]BadStatus(u8, u8),} - replacement in src/response.rs at line 156
type Error = String;type Error = HeaderError; - replacement in src/response.rs at line 161
match match status {1 => Some(Header::Input((sub, meta).into())),2 => Some(Header::Success((sub, meta).into())),3 => Some(Header::Redirect((sub, meta).into())),4 => Some(Header::FailTemp((sub, meta).into())),5 => Some(Header::FailPerm((sub, meta).into())),6 => Some(Header::CertRequired((sub, meta).into())),match status {1 => Some(Header::Input((sub, meta).try_into()?)),2 => Some(Header::Success((sub, meta).try_into()?)),3 => Some(Header::Redirect((sub, meta).try_into()?)),4 => Some(Header::FailTemp((sub, meta).try_into()?)),5 => Some(Header::FailPerm((sub, meta).try_into()?)),6 => Some(Header::CertRequired((sub, meta).try_into()?)), - edit in src/response.rs at line 169
} {Some(s) => Ok(s),None => Err(format!("bad status code: [{:?},{:?}]", status, sub)), - edit in src/response.rs at line 170
.ok_or(HeaderError::BadStatus(status, sub)) - edit in src/response.rs at line 174[6.20][6.20]
use thiserror::Error;