Add OAuth2Error
This commit is contained in:
parent
2eae2724b6
commit
75d309ad0c
45
src/error.rs
45
src/error.rs
|
@ -4,6 +4,46 @@ use hyper;
|
||||||
use rustc_serialize::json;
|
use rustc_serialize::json;
|
||||||
use url;
|
use url;
|
||||||
|
|
||||||
|
/// OAuth 2.0 error codes.
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum OAuth2ErrorCode {
|
||||||
|
InvalidRequest,
|
||||||
|
InvalidClient,
|
||||||
|
InvalidGrant,
|
||||||
|
UnauthorizedClient,
|
||||||
|
UnsupportedGrantType,
|
||||||
|
InvalidScope,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// OAuth 2.0 error.
|
||||||
|
///
|
||||||
|
/// See [RFC6749](http://tools.ietf.org/html/rfc6749#section-5.2).
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct OAuth2Error {
|
||||||
|
pub code: OAuth2ErrorCode,
|
||||||
|
pub description: Option<String>,
|
||||||
|
pub uri: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for OAuth2Error {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
try!(write!(f, "{:?}", self.code));
|
||||||
|
if let Some(ref description) = self.description {
|
||||||
|
try!(write!(f, ": {}", description));
|
||||||
|
}
|
||||||
|
if let Some(ref uri) = self.uri {
|
||||||
|
try!(write!(f, " ({})", uri));
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl error::Error for OAuth2Error {
|
||||||
|
fn description(&self) -> &str {
|
||||||
|
"OAuth2 API error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Errors that can occur during authentication flow.
|
/// Errors that can occur during authentication flow.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
@ -11,6 +51,7 @@ pub enum Error {
|
||||||
Url(url::ParseError),
|
Url(url::ParseError),
|
||||||
Hyper(hyper::Error),
|
Hyper(hyper::Error),
|
||||||
Json(json::DecoderError),
|
Json(json::DecoderError),
|
||||||
|
OAuth2(OAuth2Error),
|
||||||
Todo,
|
Todo,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +65,7 @@ impl fmt::Display for Error {
|
||||||
Error::Url(ref err) => write!(f, "{}", err),
|
Error::Url(ref err) => write!(f, "{}", err),
|
||||||
Error::Hyper(ref err) => write!(f, "{}", err),
|
Error::Hyper(ref err) => write!(f, "{}", err),
|
||||||
Error::Json(ref err) => write!(f, "{}", err),
|
Error::Json(ref err) => write!(f, "{}", err),
|
||||||
|
Error::OAuth2(ref err) => write!(f, "{}", err),
|
||||||
Error::Todo => write!(f, "Not implemented!"),
|
Error::Todo => write!(f, "Not implemented!"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,6 +78,7 @@ impl error::Error for Error {
|
||||||
Error::Url(_) => "OAuth2 URL error",
|
Error::Url(_) => "OAuth2 URL error",
|
||||||
Error::Hyper(_) => "OAuth2 Hyper error",
|
Error::Hyper(_) => "OAuth2 Hyper error",
|
||||||
Error::Json(_) => "OAuth2 JSON error",
|
Error::Json(_) => "OAuth2 JSON error",
|
||||||
|
Error::OAuth2(_) => "OAuth2 API error",
|
||||||
Error::Todo => "OAuth2 not implemented error",
|
Error::Todo => "OAuth2 not implemented error",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +89,7 @@ impl error::Error for Error {
|
||||||
Error::Url(ref err) => Some(err),
|
Error::Url(ref err) => Some(err),
|
||||||
Error::Hyper(ref err) => Some(err),
|
Error::Hyper(ref err) => Some(err),
|
||||||
Error::Json(ref err) => Some(err),
|
Error::Json(ref err) => Some(err),
|
||||||
|
Error::OAuth2(ref err) => Some(err),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,3 +109,4 @@ impl_from!(Error::Io, io::Error);
|
||||||
impl_from!(Error::Url, url::ParseError);
|
impl_from!(Error::Url, url::ParseError);
|
||||||
impl_from!(Error::Hyper, hyper::Error);
|
impl_from!(Error::Hyper, hyper::Error);
|
||||||
impl_from!(Error::Json, json::DecoderError);
|
impl_from!(Error::Json, json::DecoderError);
|
||||||
|
impl_from!(Error::OAuth2, OAuth2Error);
|
||||||
|
|
|
@ -4,10 +4,10 @@ extern crate rustc_serialize;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
|
||||||
pub use client::Client;
|
pub use client::Client;
|
||||||
mod client;
|
pub mod client;
|
||||||
|
|
||||||
pub use token::Token;
|
pub use token::Token;
|
||||||
mod token;
|
pub mod token;
|
||||||
|
|
||||||
pub use error::{Error, Result};
|
pub use error::{Error, Result};
|
||||||
mod error;
|
pub mod error;
|
||||||
|
|
Loading…
Reference in New Issue