diff --git a/src/lib.rs b/src/lib.rs index c354865..5d0f426 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,13 +5,14 @@ use std::borrow::Cow; use std::fmt; +use std::future::Future; +use std::pin::Pin; use std::sync::Arc; use base64::prelude::{Engine, BASE64_URL_SAFE_NO_PAD}; use hyper::client::connect::Connect; #[cfg(feature = "hyper-rustls")] use hyper::client::HttpConnector; -use hyper::client::ResponseFuture; use hyper::header::{CONTENT_TYPE, LOCATION}; use hyper::{Body, Method, Request, Response}; use ring::digest::{digest, SHA256}; @@ -599,8 +600,11 @@ struct DefaultClient(hyper::Client>) #[cfg(feature = "hyper-rustls")] impl HttpClient for DefaultClient { - fn request(&self, req: Request) -> ResponseFuture { - self.0.request(req) + fn request( + &self, + req: Request, + ) -> Pin>>>> { + Box::pin(self.0.request(req)) } } @@ -623,15 +627,21 @@ impl Default for DefaultClient { /// A HTTP client based on [`hyper::Client`] pub trait HttpClient: Send + Sync + 'static { /// Send the given request and return the response - fn request(&self, req: Request) -> ResponseFuture; + fn request( + &self, + req: Request, + ) -> Pin>>>>; } impl HttpClient for hyper::Client where C: Connect + Clone + Send + Sync + 'static, { - fn request(&self, req: Request) -> ResponseFuture { - >::request(self, req) + fn request( + &self, + req: Request, + ) -> Pin>>>> { + Box::pin(>::request(self, req)) } }