Update of hyper

* hyper::UriError was moved to http::InvalidUri

* tokio_core::reactor::Handle is no longer used by the new hyper version;
  tokio_core can get dropped completely
This commit is contained in:
Jörg Sommer 2018-08-25 16:08:51 +02:00
parent 799d8e8d77
commit 66037a9339
4 changed files with 22 additions and 22 deletions

View File

@ -12,22 +12,22 @@ version = "0.1.0"
[dependencies] [dependencies]
futures = "0.1.14" futures = "0.1.14"
hyper = "0.11.1" http = "0.1"
hyper = "0.12"
ruma-api = "0.4.0" ruma-api = "0.4.0"
ruma-client-api = "0.1.0" ruma-client-api = "0.1.0"
ruma-identifiers = "0.11.0" ruma-identifiers = "0.11.0"
serde_json = "1.0.2" serde_json = "1.0.2"
serde_urlencoded = "0.5.1" serde_urlencoded = "0.5.1"
tokio-core = "0.1.8"
url = "1.5.1" url = "1.5.1"
[dependencies.hyper-tls] [dependencies.hyper-tls]
optional = true optional = true
version = "0.1.2" version = "0.3.0"
[dependencies.native-tls] [dependencies.native-tls]
optional = true optional = true
version = "0.1.4" version = "0.2.1"
[dev-dependencies] [dev-dependencies]
futures-await = { git = 'https://github.com/alexcrichton/futures-await' } futures-await = { git = 'https://github.com/alexcrichton/futures-await' }

View File

@ -20,7 +20,7 @@ macro_rules! endpoint {
#[$($attr)+] #[$($attr)+]
pub mod $inner_mod { pub mod $inner_mod {
use futures::Future; use futures::Future;
use hyper::client::Connect; use hyper::client::connect::Connect;
use ruma_client_api::$($outer_mod::)*$inner_mod::Endpoint; use ruma_client_api::$($outer_mod::)*$inner_mod::Endpoint;
$(use super::$super_import;)* $(use super::$super_import;)*
pub use ruma_client_api::$($outer_mod::)*$inner_mod::{ pub use ruma_client_api::$($outer_mod::)*$inner_mod::{
@ -37,7 +37,7 @@ macro_rules! endpoint {
request: Request, request: Request,
) -> impl Future<Item = Response, Error = Error> ) -> impl Future<Item = Response, Error = Error>
where where
C: Connect, C: Connect + 'static,
{ {
client.request::<Endpoint>(request) client.request::<Endpoint>(request)
} }

View File

@ -1,4 +1,5 @@
use hyper::error::{Error as HyperError, UriError}; use http::uri::InvalidUri;
use hyper::error::Error as HyperError;
use ruma_api::Error as RumaApiError; use ruma_api::Error as RumaApiError;
use serde_json::Error as SerdeJsonError; use serde_json::Error as SerdeJsonError;
use serde_urlencoded::ser::Error as SerdeUrlEncodedSerializeError; use serde_urlencoded::ser::Error as SerdeUrlEncodedSerializeError;
@ -12,7 +13,7 @@ pub enum Error {
/// An error at the HTTP layer. /// An error at the HTTP layer.
Hyper(HyperError), Hyper(HyperError),
/// An error when parsing a string as a URI. /// An error when parsing a string as a URI.
Uri(UriError), Uri(InvalidUri),
/// An error when parsing a string as a URL. /// An error when parsing a string as a URL.
Url(ParseError), Url(ParseError),
/// An error converting between ruma_client_api types and Hyper types. /// An error converting between ruma_client_api types and Hyper types.
@ -29,8 +30,8 @@ impl From<HyperError> for Error {
} }
} }
impl From<UriError> for Error { impl From<InvalidUri> for Error {
fn from(error: UriError) -> Error { fn from(error: InvalidUri) -> Error {
Error::Uri(error) Error::Uri(error)
} }
} }

View File

@ -5,6 +5,7 @@
#![feature(try_from)] #![feature(try_from)]
extern crate futures; extern crate futures;
extern crate http;
extern crate hyper; extern crate hyper;
#[cfg(feature = "tls")] #[cfg(feature = "tls")]
extern crate hyper_tls; extern crate hyper_tls;
@ -15,7 +16,6 @@ extern crate ruma_client_api;
extern crate ruma_identifiers; extern crate ruma_identifiers;
extern crate serde_json; extern crate serde_json;
extern crate serde_urlencoded; extern crate serde_urlencoded;
extern crate tokio_core;
extern crate url; extern crate url;
use std::cell::RefCell; use std::cell::RefCell;
@ -26,13 +26,13 @@ use std::str::FromStr;
use futures::future::{Future, FutureFrom, IntoFuture}; use futures::future::{Future, FutureFrom, IntoFuture};
use futures::stream::{self, Stream}; use futures::stream::{self, Stream};
use hyper::{Client as HyperClient, Uri}; use hyper::{Client as HyperClient, Uri};
use hyper::client::{Connect, HttpConnector}; use hyper::client::HttpConnector;
use hyper::client::connect::Connect;
#[cfg(feature = "hyper-tls")] #[cfg(feature = "hyper-tls")]
use hyper_tls::HttpsConnector; use hyper_tls::HttpsConnector;
#[cfg(feature = "hyper-tls")] #[cfg(feature = "hyper-tls")]
use native_tls::Error as NativeTlsError; use native_tls::Error as NativeTlsError;
use ruma_api::Endpoint; use ruma_api::Endpoint;
use tokio_core::reactor::Handle;
use url::Url; use url::Url;
pub use error::Error; pub use error::Error;
@ -60,10 +60,10 @@ where
impl Client<HttpConnector> { impl Client<HttpConnector> {
/// Creates a new client for making HTTP requests to the given homeserver. /// Creates a new client for making HTTP requests to the given homeserver.
pub fn new(handle: &Handle, homeserver_url: Url, session: Option<Session>) -> Self { pub fn new(homeserver_url: Url, session: Option<Session>) -> Self {
Client(Rc::new(ClientData { Client(Rc::new(ClientData {
homeserver_url: homeserver_url, homeserver_url: homeserver_url,
hyper: HyperClient::configure().keep_alive(true).build(handle), hyper: HyperClient::builder().keep_alive(true).build_http(),
session: RefCell::new(session), session: RefCell::new(session),
})) }))
} }
@ -72,16 +72,15 @@ impl Client<HttpConnector> {
#[cfg(feature = "tls")] #[cfg(feature = "tls")]
impl Client<HttpsConnector<HttpConnector>> { impl Client<HttpsConnector<HttpConnector>> {
/// Creates a new client for making HTTPS requests to the given homeserver. /// Creates a new client for making HTTPS requests to the given homeserver.
pub fn https(handle: &Handle, homeserver_url: Url, session: Option<Session>) -> Result<Self, NativeTlsError> { pub fn https(homeserver_url: Url, session: Option<Session>) -> Result<Self, NativeTlsError> {
let connector = HttpsConnector::new(4, handle)?; let connector = HttpsConnector::new(4)?;
Ok(Client(Rc::new(ClientData { Ok(Client(Rc::new(ClientData {
homeserver_url: homeserver_url, homeserver_url: homeserver_url,
hyper: { hyper: {
HyperClient::configure() HyperClient::builder()
.connector(connector)
.keep_alive(true) .keep_alive(true)
.build(handle) .build(connector)
}, },
session: RefCell::new(session), session: RefCell::new(session),
}))) })))
@ -90,7 +89,7 @@ impl Client<HttpsConnector<HttpConnector>> {
impl<C> Client<C> impl<C> Client<C>
where where
C: Connect, C: Connect + 'static,
{ {
/// Creates a new client using the given `hyper::Client`. /// Creates a new client using the given `hyper::Client`.
/// ///
@ -261,7 +260,7 @@ where
.map_err(Error::from) .map_err(Error::from)
}) })
.and_then(move |(uri, mut hyper_request)| { .and_then(move |(uri, mut hyper_request)| {
hyper_request.set_uri(uri); *hyper_request.uri_mut() = uri;
data2.hyper data2.hyper
.request(hyper_request) .request(hyper_request)