WIP use thiserror

CandyCorvid
Jul 13, 2023, 10:57 AM
H7P2HPKXGMYH55QHYWRLZ65EBNGLNBERDGY2TZLAR4C74QDMJW3AC

Dependencies

  • [2] 3VVQWLOX Major refactor: modularisation
  • [3] WGRFJRTE Add tests, rename Status to Header, implement redirect and proper input handling
  • [4] 3SPNKI46 Improve parsing. Add modules that were missed
  • [*] ONQEIR5B WIP mime-type handling

Change contents

  • edit in src/response.rs at line 21
    [3.2086]
    [3.2086]
    use thiserror::Error;
  • replacement in src/response.rs at line 33
    [3.2289][3.2289:2327]()
    impl From<(u8, Meta)> for Input {
    [3.2289]
    [3.2327]
    impl TryFrom<(u8, Meta)> for Input {
  • replacement in src/response.rs at line 48
    [3.2740][3.2740:2955]()
    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 }
    [3.2740]
    [3.2955]
    #[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
    [3.5532]
    [3.19]
    #[derive(Error, Debug)]
    pub enum HeaderError {
    #[error("bad status code: [{0},{1}]")]
    BadStatus(u8, u8),
    }
  • replacement in src/response.rs at line 156
    [3.58][3.5571:5596](),[3.5571][3.5571:5596]()
    type Error = String;
    [3.58]
    [3.5596]
    type Error = HeaderError;
  • replacement in src/response.rs at line 161
    [3.5750][3.5750:5779](),[3.5779][3.59:425]()
    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())),
    [3.5750]
    [3.6145]
    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
    [3.6168][3.6168:6210](),[3.6210][2.20:99]()
    } {
    Some(s) => Ok(s),
    None => Err(format!("bad status code: [{:?},{:?}]", status, sub)),
  • edit in src/response.rs at line 170
    [3.6287]
    [3.6287]
    .ok_or(HeaderError::BadStatus(status, sub))
  • edit in src/response.rs at line 174
    [6.20]
    [6.20]
    use thiserror::Error;