use hyper::header::Authorization;
use hyper::server::Request;
use verify::{AuthorizationHeader, VerifyAuthorizationHeader, GetKey};
use error::VerificationError;
impl VerifyAuthorizationHeader for Request {
fn verify_authorization_header<G: GetKey>(
&self,
key_getter: G,
) -> Result<(), VerificationError> {
let &Authorization(ref auth_header) = self.headers().get::<Authorization<String>>().ok_or(
VerificationError::HeaderNotPresent,
)?;
let auth_header = AuthorizationHeader::new(auth_header.clone())?;
let headers: Vec<(String, String)> = self.headers()
.iter()
.map(|header_view| {
(header_view.name().into(), header_view.value_string())
})
.collect();
auth_header.verify(
headers.as_ref(),
&self.method().as_ref().to_lowercase(),
self.path(),
self.query(),
key_getter,
)
}
}