patron 0.2.1

A wrapper around the hyper.rs library to allow for targeted clients to specific remote APIs. This library should be useful on it's own or as a building block for specific remote API wrappers.
use hyper;
use response;
use serde_json;
use std;


#[derive(Debug)]
pub enum Error {
  HttpNetwork(hyper::Error),
  JsonParse(serde_json::Error),
  InvalidUrl(UrlError),
  InvalidMethod(String),
  InvalidScheme(String),
  CallFailure(response::Response),
}


#[derive(Debug, Clone, Eq, PartialEq)]
pub enum UrlError {
  Invalid(String),
  ParseError(hyper::error::ParseError),
}


impl std::convert::From<hyper::error::ParseError> for Error {
  fn from(err: hyper::error::ParseError) -> Error {
    Error::InvalidUrl(UrlError::ParseError(err))
  }
}


impl std::convert::From<hyper::Url> for Error {
  fn from(url: hyper::Url) -> Error {
    Error::InvalidUrl(UrlError::Invalid(url.to_string()))
  }
}


impl std::convert::From<hyper::Error> for Error {
  fn from(err: hyper::Error) -> Error {
    Error::HttpNetwork(err)
  }
}


impl std::convert::From<serde_json::Error> for Error {
  fn from(err: serde_json::Error) -> Error {
    Error::JsonParse(err)
  }
}


impl std::convert::From<UrlError> for Error {
  fn from(err: UrlError) -> Error {
    Error::InvalidUrl(err)
  }
}


impl std::convert::From<response::Response> for Error {
  fn from(err: response::Response) -> Error {
    Error::CallFailure(err)
  }
}