rust_client 0.2.3

A command line http client
Documentation
use command::CommandError;
use hyper::header::HeaderMap;
use hyper::header::CONTENT_TYPE;
use mime::Mime;
use reqwest::Response;
use reqwest::StatusCode;

pub struct CompletedResponse {
    headers: HeaderMap,
    mime: Mime,
    response_bytes: Vec<u8>,
    status_code: StatusCode,
}

impl CompletedResponse {
    pub fn consume_response(mut response: Response) -> Result<CompletedResponse, CommandError> {
        let headers = response.headers().to_owned();
        let mime_type = {
            headers
                .get(CONTENT_TYPE)
                .map(|content_type| {
                    content_type
                        .to_str()
                        .unwrap_or("")
                        .parse::<Mime>()
                        .unwrap_or(::mime::TEXT_PLAIN)
                }).unwrap_or(::mime::TEXT_PLAIN)
        };
        let mut response_bytes = vec![];
        response.copy_to(&mut response_bytes)?;
        let status_code = response.status();

        Ok(CompletedResponse {
            headers,
            mime: mime_type,
            response_bytes,
            status_code,
        })
    }

    pub fn headers(&self) -> &HeaderMap {
        &self.headers
    }

    pub fn text(&self) -> String {
        String::from_utf8_lossy(&self.response_bytes).to_string()
    }

    pub fn status(&self) -> StatusCode {
        self.status_code
    }

    pub fn content_type(&self) -> Mime {
        self.mime.clone()
    }
}