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
use std::io::{Error, ErrorKind};
use std::convert::TryFrom;
use crate::{Method, Status, Version};

pub fn parse_method(data: Vec<u8>) -> Result<Method, Error> {
    let data: &[u8] = &data;
    Method::try_from(data)
}

pub fn parse_uri(data: Vec<u8>) -> Result<String, Error> {
    match String::from_utf8(data) {
        Ok(uri) => Ok(uri),
        Err(e) => Err(Error::new(ErrorKind::InvalidData, e.to_string()))
    }
}

pub fn parse_status(data: Vec<u8>) -> Result<Status, Error> {
    let data: &[u8] = &data;
    Status::try_from(data)
}

pub fn parse_version(data: Vec<u8>) -> Result<Version, Error> {
    let data: &[u8] = &data;
    Version::try_from(data)
}