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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
use std::error; use std::fmt; /// Errors which should not or need not be communicated to the requesting party but which are of /// interest to the server. See the documentation for each enum variant for more documentation on /// each as some may have an expected response. These include badly formatted headers or url encoded /// body, unexpected parameters, or security relevant required parameters. #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum OAuthError { /// Deny authorization to the client by essentially dropping the request. /// /// For example, this response is given when an incorrect client has been provided in the /// authorization request in order to avoid potential indirect denial of service vulnerabilities. DenySilently, /// One of the primitives used to complete the operation failed. /// /// This indicates a problem in the server configuration or the frontend library or the /// implementation of the primitive underlying those two. PrimitiveError, /// The incoming request was malformed. /// /// This implies that it did not change any internal state. Note that this differs from an /// `InvalidRequest` as in the OAuth specification. `BadRequest` is reported by a frontend /// implementation of a request, due to http non-compliance, while an `InvalidRequest` is a /// type of response to an authorization request by a user-agent that is sent to the specified /// client (although it may be caused by a bad request). BadRequest, } impl fmt::Display for OAuthError { fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> { match self { OAuthError::DenySilently => fmt.write_str("OAuthError: Request should be silently denied"), OAuthError::PrimitiveError => fmt.write_str("OAuthError: Server component failed"), OAuthError::BadRequest => fmt.write_str("OAuthError: Bad request"), } } } impl error::Error for OAuthError { }