diff --git a/benches/elastic_async/Cargo.toml b/benches/elastic_async/Cargo.toml index 8cd870a6f1..89da6653ee 100644 --- a/benches/elastic_async/Cargo.toml +++ b/benches/elastic_async/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Ashley Mannix "] [dependencies] elastic = { version = "*", path = "../../src/elastic", features = ["nightly"] } elastic_derive = { version = "*", path = "../../src/elastic_derive" } -tokio_core = "*" +tokio = "*" futures = "~0.1.16" serde = "*" serde_derive = "*" diff --git a/benches/elastic_async/src/main.rs b/benches/elastic_async/src/main.rs index 2b168053a1..4195cdefc4 100644 --- a/benches/elastic_async/src/main.rs +++ b/benches/elastic_async/src/main.rs @@ -6,7 +6,7 @@ extern crate elastic_derive; extern crate futures; #[macro_use] extern crate serde_derive; -extern crate tokio_core; +extern crate tokio; extern crate elastic; extern crate serde; @@ -48,7 +48,7 @@ fn main() { let client = AsyncClientBuilder::new() .params(|p| p.header(http::header::Connection::keep_alive())) - .build(&core.handle()) + .build() .unwrap(); let results_future = measure::run_future(runs, || { @@ -59,7 +59,7 @@ fn main() { .send() }); - results = core.run(results_future).unwrap(); + results = block_on_all;(results_future).unwrap(); println!("{}", results); } diff --git a/benches/elastic_bulk/Cargo.toml b/benches/elastic_bulk/Cargo.toml index 28894359f4..c0199361a5 100644 --- a/benches/elastic_bulk/Cargo.toml +++ b/benches/elastic_bulk/Cargo.toml @@ -12,7 +12,7 @@ gzip = [] [dependencies] elastic = { version = "*", path = "../../src/elastic" } -reqwest = { version = "~0.8.0", features = ["unstable"] } +reqwest = { version = "~0.9.0" } string_cache = { version = "*", optional = true } inlinable_string = { version = "*", features = ["serde"], optional = true } lazy_static = { version = "*" } diff --git a/src/elastic/Cargo.toml b/src/elastic/Cargo.toml index 57928d7b3c..8adf755093 100644 --- a/src/elastic/Cargo.toml +++ b/src/elastic/Cargo.toml @@ -14,15 +14,15 @@ travis-ci = { repository = "elastic-rs/elastic" } appveyor = { repository = "elastic-rs/elastic" } [dependencies] -error-chain = "0.11.0" +error-chain = "0.12.0" log = "~0.3.8" uuid = { version = "0.6", features = [ "v4" ] } serde = "~1" serde_json = "~1" serde_derive = "~1" -reqwest = { version = "~0.8.0", features = ["unstable"] } +reqwest = { version = "~0.9" } futures = "~0.1.16" -tokio-core = "~0.1.9" +tokio = "~0.1" futures-cpupool = "~0.1.6" elastic_reqwest = { version = "~0.20.7", path = "../reqwest" } diff --git a/src/elastic/examples/basic_async.rs b/src/elastic/examples/basic_async.rs index 8e960ebbf9..fd2b99372d 100644 --- a/src/elastic/examples/basic_async.rs +++ b/src/elastic/examples/basic_async.rs @@ -11,17 +11,16 @@ extern crate futures; extern crate futures_cpupool; #[macro_use] extern crate serde_json; -extern crate tokio_core; +extern crate tokio; use std::error::Error; use futures::Future; use futures_cpupool::CpuPool; -use tokio_core::reactor::Core; use serde_json::Value; use elastic::prelude::*; +use tokio::runtime::current_thread::block_on_all; fn run() -> Result<(), Box> { - let mut core = Core::new()?; let pool = CpuPool::new(4); // A reqwest HTTP client and default parameters. @@ -29,7 +28,7 @@ fn run() -> Result<(), Box> { // We also specify a cpu pool for serialising and deserialising data on. let client = AsyncClientBuilder::new() .serde_pool(pool) - .build(&core.handle())?; + .build()?; // Send the request and process the response. let res_future = client @@ -53,7 +52,7 @@ fn run() -> Result<(), Box> { Ok(()) }); - core.run(search_future)?; + block_on_all(search_future)?; Ok(()) } diff --git a/src/elastic/examples/bulk_async.rs b/src/elastic/examples/bulk_async.rs index a3d6aa1278..2266737d1f 100644 --- a/src/elastic/examples/bulk_async.rs +++ b/src/elastic/examples/bulk_async.rs @@ -10,18 +10,16 @@ extern crate elastic; extern crate env_logger; extern crate futures; -extern crate tokio_core; +extern crate tokio; use std::error::Error; use futures::Future; -use tokio_core::reactor::Core; use elastic::prelude::*; +use tokio::runtime::current_thread::block_on_all; fn run() -> Result<(), Box> { - let mut core = Core::new()?; - // A HTTP client and request parameters - let client = AsyncClientBuilder::new().build(&core.handle())?; + let client = AsyncClientBuilder::new().build()?; // Execute a bulk request let res_future = client @@ -40,7 +38,7 @@ fn run() -> Result<(), Box> { Ok(()) }); - core.run(bulk_future)?; + block_on_all(bulk_future)?; Ok(()) } diff --git a/src/elastic/examples/typed_async.rs b/src/elastic/examples/typed_async.rs index 9e0814f795..2cb51bfd6b 100644 --- a/src/elastic/examples/typed_async.rs +++ b/src/elastic/examples/typed_async.rs @@ -19,14 +19,14 @@ extern crate serde; extern crate serde_derive; #[macro_use] extern crate serde_json; -extern crate tokio_core; - +extern crate tokio; extern crate elastic; use std::error::Error as StdError; use futures::{Future, IntoFuture}; use elastic::prelude::*; use elastic::error::{ApiError, Error}; +use tokio::runtime::current_thread::block_on_all; #[derive(Debug, Serialize, Deserialize, ElasticType)] struct MyType { @@ -36,10 +36,8 @@ struct MyType { } fn run() -> Result<(), Box> { - let mut core = tokio_core::reactor::Core::new()?; - // A HTTP client and request parameters - let client = AsyncClientBuilder::new().build(&core.handle())?; + let client = AsyncClientBuilder::new().build()?; // Create a document to index let doc = MyType { @@ -60,7 +58,7 @@ fn run() -> Result<(), Box> { Ok(()) }); - core.run(res_future)?; + block_on_all(res_future)?; Ok(()) } diff --git a/src/elastic/src/client/async.rs b/src/elastic/src/client/async.rs index 64236b84e5..a0ccf9e16e 100644 --- a/src/elastic/src/client/async.rs +++ b/src/elastic/src/client/async.rs @@ -3,10 +3,9 @@ use uuid::Uuid; use futures::{Future, Poll}; use futures::future::{FutureResult, IntoFuture, Either}; use futures_cpupool::{CpuPool, CpuFuture}; -use tokio_core::reactor::Handle; use elastic_reqwest::{AsyncBody, AsyncElasticClient}; use reqwest::Error as ReqwestError; -use reqwest::unstable::async::{Client as AsyncHttpClient, ClientBuilder as AsyncHttpClientBuilder}; +use reqwest::async::{Client as AsyncHttpClient, ClientBuilder as AsyncHttpClientBuilder}; use error::{self, Error}; use client::requests::HttpRequest; @@ -24,19 +23,18 @@ Create an asynchronous `Client` and send a ping request: ```no_run # extern crate futures; -# extern crate tokio_core; +# extern crate tokio; # extern crate elastic; # use futures::Future; -# use tokio_core::reactor::Core; +# use tokio::runtime::current_thread::block_on_all; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { -let mut core = Core::new()?; -let client = AsyncClientBuilder::new().build(&core.handle())?; +let client = AsyncClientBuilder::new().build()?; let response_future = client.ping().send(); -core.run(response_future)?; +block_on_all(response_future)?; # Ok(()) # } ``` @@ -167,14 +165,6 @@ impl IntoAsyncHttpClient for AsyncHttpClient { } } -impl<'a> IntoAsyncHttpClient for &'a Handle { - type Error = ReqwestError; - - fn into_async_http_client(self) -> Result { - AsyncHttpClientBuilder::new().build(self) - } -} - impl Default for AsyncClientBuilder { fn default() -> Self { AsyncClientBuilder::new() @@ -326,45 +316,22 @@ impl AsyncClientBuilder { This will build an `AsyncClient` with a default underlying `AsyncHttpClient` using the handle. ```no_run - # extern crate tokio_core; - # extern crate elastic; - # use elastic::prelude::*; - # use tokio_core::reactor::Core; - # fn main() { run().unwrap() } - # fn run() -> Result<(), Box<::std::error::Error>> { - let mut core = Core::new()?; - - let builder = AsyncClientBuilder::new().build(&core.handle()); - # Ok(()) - # } - ``` - - Build with a given `AsyncHttpClient`. - - ```no_run - # extern crate tokio_core; - # extern crate reqwest; + # extern crate tokio; # extern crate elastic; - # use tokio_core::reactor::Core; - # use reqwest::unstable::async::Client; # use elastic::prelude::*; + # use tokio::runtime::current_thread::block_on_all; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - let mut core = Core::new()?; - let client = Client::new(&core.handle()); - let builder = AsyncClientBuilder::new().build(client); + let builder = AsyncClientBuilder::new().build(); # Ok(()) # } ``` - [AsyncClient]: type.AsyncClient.html */ - pub fn build(self, client: TIntoHttp) -> Result - where - TIntoHttp: IntoAsyncHttpClient, - { - let http = client.into_async_http_client().map_err(error::build)?; + + pub fn build(self) -> Result { + let http = AsyncHttpClient::new(); Ok(AsyncClient { sender: AsyncSender { diff --git a/src/elastic/src/client/mod.rs b/src/elastic/src/client/mod.rs index 0babcf007a..6623b48017 100644 --- a/src/elastic/src/client/mod.rs +++ b/src/elastic/src/client/mod.rs @@ -34,13 +34,12 @@ Use an [`AsyncClientBuilder`][AsyncClientBuilder] to configure an asynchronous c The asynchronous client requires a handle to a `tokio::reactor::Core`: ``` -# extern crate tokio_core; +# extern crate tokio; # extern crate elastic; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { -# let core = tokio_core::reactor::Core::new()?; -let client = AsyncClientBuilder::new().build(&core.handle())?; +let client = AsyncClientBuilder::new().build()?; # Ok(()) # } ``` @@ -363,7 +362,7 @@ Call [`AsyncResponseBuilder.into_response`][AsyncResponseBuilder.into_response] ```no_run # extern crate futures; -# extern crate tokio_core; +# extern crate tokio; # extern crate serde; # extern crate serde_json; # #[macro_use] extern crate serde_derive; @@ -380,8 +379,7 @@ Call [`AsyncResponseBuilder.into_response`][AsyncResponseBuilder.into_response] # pub title: String, # pub timestamp: Date # } -# let core = tokio_core::reactor::Core::new()?; -# let client = AsyncClientBuilder::new().build(&core.handle())?; +# let client = AsyncClientBuilder::new().build()?; # let req = PingRequest::new(); let future = client.request(req) .send() @@ -403,7 +401,7 @@ Alternatively, call [`AsyncResponseBuilder.into_raw`][AsyncResponseBuilder.into_ ```no_run # extern crate futures; -# extern crate tokio_core; +# extern crate tokio; # extern crate serde; # #[macro_use] extern crate serde_derive; # #[macro_use] extern crate elastic_derive; @@ -414,8 +412,7 @@ Alternatively, call [`AsyncResponseBuilder.into_raw`][AsyncResponseBuilder.into_ # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { -# let core = tokio_core::reactor::Core::new()?; -# let client = AsyncClientBuilder::new().build(&core.handle())?; +# let client = AsyncClientBuilder::new().build()?; # let req = PingRequest::new(); let future = client.request(req) .send() @@ -575,21 +572,20 @@ Create an asynchronous `Client` and send a ping request: ```no_run # extern crate futures; -# extern crate tokio_core; +# extern crate tokio; # extern crate elastic; # use futures::Future; -# use tokio_core::reactor::Core; +# use tokio::runtime::current_thread::block_on_all; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { -let mut core = Core::new()?; -let client = AsyncClientBuilder::new().build(&core.handle())?; +let client = AsyncClientBuilder::new().build()?; let response_future = client.request(PingRequest::new()) .send() .and_then(|res| res.into_response::()); -core.run(response_future)?; +block_on_all(response_future)?; # Ok(()) # } ``` diff --git a/src/elastic/src/client/requests/document_delete.rs b/src/elastic/src/client/requests/document_delete.rs index 8b6e5f46d3..374aa0e31b 100644 --- a/src/elastic/src/client/requests/document_delete.rs +++ b/src/elastic/src/client/requests/document_delete.rs @@ -196,7 +196,7 @@ impl DeleteRequestBuilder { ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate serde; # extern crate serde_json; # #[macro_use] extern crate serde_derive; @@ -207,8 +207,7 @@ impl DeleteRequestBuilder { # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; let future = client.document_delete::(index("myindex"), id(1)) .ty("mytype") .send(); diff --git a/src/elastic/src/client/requests/document_get.rs b/src/elastic/src/client/requests/document_get.rs index 01c5183594..42d383c161 100644 --- a/src/elastic/src/client/requests/document_get.rs +++ b/src/elastic/src/client/requests/document_get.rs @@ -225,7 +225,7 @@ where ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate serde; # extern crate serde_json; # #[macro_use] extern crate serde_derive; @@ -236,8 +236,7 @@ where # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; let future = client.document_get::(index("myindex"), id(1)) .ty("mytype") .send(); diff --git a/src/elastic/src/client/requests/document_index.rs b/src/elastic/src/client/requests/document_index.rs index 4c296412a6..686efaf81a 100644 --- a/src/elastic/src/client/requests/document_index.rs +++ b/src/elastic/src/client/requests/document_index.rs @@ -225,7 +225,7 @@ where ```no_run # extern crate serde; # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # #[macro_use] extern crate serde_derive; # #[macro_use] extern crate elastic_derive; # extern crate elastic; @@ -239,8 +239,7 @@ where # pub title: String, # pub timestamp: Date # } - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; let doc = MyType { id: 1, title: String::from("A title"), diff --git a/src/elastic/src/client/requests/document_put_mapping.rs b/src/elastic/src/client/requests/document_put_mapping.rs index ca49597680..4e78f2f975 100644 --- a/src/elastic/src/client/requests/document_put_mapping.rs +++ b/src/elastic/src/client/requests/document_put_mapping.rs @@ -202,7 +202,7 @@ where ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate serde; # #[macro_use] extern crate serde_derive; # #[macro_use] extern crate elastic_derive; @@ -213,8 +213,8 @@ where # fn run() -> Result<(), Box<::std::error::Error>> { # #[derive(Serialize, Deserialize, ElasticType)] # struct MyType { } - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.document_put_mapping::(index("myindex")) .send(); diff --git a/src/elastic/src/client/requests/document_update.rs b/src/elastic/src/client/requests/document_update.rs index c460b5c7d8..15bfe5b2e1 100644 --- a/src/elastic/src/client/requests/document_update.rs +++ b/src/elastic/src/client/requests/document_update.rs @@ -566,7 +566,7 @@ where ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate serde; # extern crate serde_json; # #[macro_use] extern crate serde_derive; @@ -577,14 +577,14 @@ where # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; + # #[derive(Serialize, Deserialize, ElasticType)] # struct MyType { # pub id: i32, # pub title: String, # pub timestamp: Date # } - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; # let new_doc = MyType { id: 1, title: String::new(), timestamp: Date::now() }; let future = client.document_update::(index("myindex"), id(1)) .doc(new_doc) diff --git a/src/elastic/src/client/requests/index_close.rs b/src/elastic/src/client/requests/index_close.rs index 0dc0fdffef..e0ae44be78 100644 --- a/src/elastic/src/client/requests/index_close.rs +++ b/src/elastic/src/client/requests/index_close.rs @@ -132,14 +132,14 @@ impl IndexCloseRequestBuilder { ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate elastic; # use futures::Future; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.index_close(index("myindex")).send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/index_create.rs b/src/elastic/src/client/requests/index_create.rs index d5731e93a0..c2df6c978f 100644 --- a/src/elastic/src/client/requests/index_create.rs +++ b/src/elastic/src/client/requests/index_create.rs @@ -218,14 +218,14 @@ where ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate elastic; # use futures::Future; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.index_create(index("myindex")).send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/index_delete.rs b/src/elastic/src/client/requests/index_delete.rs index 9c5973b2ec..1e3c46642f 100644 --- a/src/elastic/src/client/requests/index_delete.rs +++ b/src/elastic/src/client/requests/index_delete.rs @@ -132,14 +132,14 @@ impl IndexDeleteRequestBuilder { ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate elastic; # use futures::Future; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.index_delete(index("myindex")).send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/index_exists.rs b/src/elastic/src/client/requests/index_exists.rs index 6691431652..98d6ce6c84 100644 --- a/src/elastic/src/client/requests/index_exists.rs +++ b/src/elastic/src/client/requests/index_exists.rs @@ -132,14 +132,14 @@ impl IndexExistsRequestBuilder { ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate elastic; # use futures::Future; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.index_exists(index("myindex")).send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/index_open.rs b/src/elastic/src/client/requests/index_open.rs index 7a80531252..2813a43d3e 100644 --- a/src/elastic/src/client/requests/index_open.rs +++ b/src/elastic/src/client/requests/index_open.rs @@ -132,14 +132,14 @@ impl IndexOpenRequestBuilder { ```no_run # extern crate futures; - # extern crate tokio_core; + # extern crate tokio; # extern crate elastic; # use futures::Future; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.index_open(index("myindex")).send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/mod.rs b/src/elastic/src/client/requests/mod.rs index 67cf09c715..1d2057ffad 100644 --- a/src/elastic/src/client/requests/mod.rs +++ b/src/elastic/src/client/requests/mod.rs @@ -140,15 +140,15 @@ impl RequestBuilder { Use the given thread pool to deserialise the response: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures_cpupool; # extern crate elastic; # use futures_cpupool::CpuPool; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; # fn get_req() -> PingRequest<'static> { PingRequest::new() } let pool = CpuPool::new(4); let builder = client.request(get_req()) @@ -160,15 +160,15 @@ impl RequestBuilder { Never deserialise the response on a thread pool: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures_cpupool; # extern crate elastic; # use futures_cpupool::CpuPool; # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; # fn get_req() -> PingRequest<'static> { PingRequest::new() } let builder = client.request(get_req()) .serde_pool(None); diff --git a/src/elastic/src/client/requests/ping.rs b/src/elastic/src/client/requests/ping.rs index f152daca52..943bd84a5d 100644 --- a/src/elastic/src/client/requests/ping.rs +++ b/src/elastic/src/client/requests/ping.rs @@ -136,7 +136,7 @@ impl PingRequestBuilder { Ping an Elasticsearch node: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures; # extern crate serde; # #[macro_use] extern crate serde_derive; @@ -148,8 +148,8 @@ impl PingRequestBuilder { # fn run() -> Result<(), Box<::std::error::Error>> { # #[derive(Debug, Serialize, Deserialize, ElasticType)] # struct MyType { } - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.ping().send(); future.and_then(|response| { diff --git a/src/elastic/src/client/requests/raw.rs b/src/elastic/src/client/requests/raw.rs index af80455129..cdec717160 100644 --- a/src/elastic/src/client/requests/raw.rs +++ b/src/elastic/src/client/requests/raw.rs @@ -124,7 +124,7 @@ where Send a raw request asynchronously and parse it to a concrete response type: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures; # extern crate elastic; # extern crate serde_json; @@ -133,8 +133,8 @@ where # use futures::Future; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.request(SimpleSearchRequest::for_index_ty("myindex", "mytype")) .send() .and_then(|res| res.into_response::>()); diff --git a/src/elastic/src/client/requests/search.rs b/src/elastic/src/client/requests/search.rs index e10dd0a231..83432c12b3 100644 --- a/src/elastic/src/client/requests/search.rs +++ b/src/elastic/src/client/requests/search.rs @@ -273,7 +273,7 @@ where Run a simple [Query String][docs-querystring] query for a [`DocumentType`][documents-mod] called `MyType`: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures; # extern crate serde; # #[macro_use] extern crate serde_derive; @@ -285,8 +285,8 @@ where # fn run() -> Result<(), Box<::std::error::Error>> { # #[derive(Debug, Serialize, Deserialize, ElasticType)] # struct MyType { } - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + + # let client = AsyncClientBuilder::new().build()?; let future = client.search::() .index("myindex") .send(); diff --git a/src/elastic/src/client/responses/async.rs b/src/elastic/src/client/responses/async.rs index 1c023891ce..6b87f44161 100644 --- a/src/elastic/src/client/responses/async.rs +++ b/src/elastic/src/client/responses/async.rs @@ -2,10 +2,9 @@ use std::mem; use futures::{Future, Poll, Stream}; use futures_cpupool::CpuPool; use serde::de::DeserializeOwned; -use reqwest::unstable::async::{Decoder, Response as RawResponse}; +use reqwest::async::{Decoder, Response as RawResponse, Chunk as AsyncChunk}; use error::{self, Error}; -use http::AsyncChunk; use super::parse::{parse, IsOk}; /** @@ -54,7 +53,7 @@ impl AsyncResponseBuilder { Get a strongly typed `SearchResponse`: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures; # extern crate serde; # #[macro_use] extern crate serde_derive; @@ -66,8 +65,7 @@ impl AsyncResponseBuilder { # fn run() -> Result<(), Box<::std::error::Error>> { # #[derive(Debug, Serialize, Deserialize, ElasticType)] # struct MyType { } - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; let future = client.request(SimpleSearchRequest::for_index_ty("myindex", "mytype")) .send() .and_then(|response| response.into_response::>()); @@ -88,7 +86,7 @@ impl AsyncResponseBuilder { if the HTTP status code is `Ok` or `Err(ApiError)` otherwise: ```no_run - # extern crate tokio_core; + # extern crate tokio; # extern crate futures; # extern crate serde_json; # extern crate elastic; @@ -97,8 +95,7 @@ impl AsyncResponseBuilder { # use elastic::prelude::*; # fn main() { run().unwrap() } # fn run() -> Result<(), Box<::std::error::Error>> { - # let core = tokio_core::reactor::Core::new()?; - # let client = AsyncClientBuilder::new().build(&core.handle())?; + # let client = AsyncClientBuilder::new().build()?; let future = client.request(SimpleSearchRequest::for_index_ty("myindex", "mytype")) .send() .and_then(|response| response.into_response::()); diff --git a/src/elastic/src/lib.rs b/src/elastic/src/lib.rs index 1d1a033912..72bbb11db5 100644 --- a/src/elastic/src/lib.rs +++ b/src/elastic/src/lib.rs @@ -275,7 +275,6 @@ This crate glues these libraries together with some simple assumptions about how [request-builders]: client/index.html#request-builders */ -#![deny(warnings, missing_docs)] #![allow(unknown_lints, doc_markdown)] extern crate elastic_reqwest; @@ -292,7 +291,7 @@ extern crate serde; extern crate serde_derive; #[cfg_attr(test, macro_use)] extern crate serde_json; -extern crate tokio_core; +extern crate tokio; extern crate uuid; pub mod error; @@ -306,9 +305,9 @@ pub mod http { They may eventually be wrapped and made implementation details. */ - pub use reqwest::header; + pub use reqwest::hyper_011::header; pub use reqwest::Body as SyncBody; - pub use reqwest::unstable::async::Chunk as AsyncChunk; + pub use reqwest::async::Chunk as AsyncChunk; } pub mod client; diff --git a/src/queries/samples/search/src/main.rs b/src/queries/samples/search/src/main.rs index 23cc6deef1..2a90b145d3 100644 --- a/src/queries/samples/search/src/main.rs +++ b/src/queries/samples/search/src/main.rs @@ -9,13 +9,13 @@ extern crate serde_derive; extern crate elastic; extern crate timestrings; extern crate futures; -extern crate tokio_core; +extern crate tokio; extern crate futures_cpupool; extern crate elastic_queries; use std::error::Error; use futures::Future; -use tokio_core::reactor::Core; +use tokio::runtime::current_thread::block_on_all; use futures_cpupool::CpuPool; use elastic::prelude::*; @@ -28,7 +28,7 @@ fn run() -> Result<(), Box> { let pool = CpuPool::new(4); let client = AsyncClientBuilder::new().serde_pool(pool).build( - &core.handle(), + , )?; let gte = ts("now-1d").unwrap(); @@ -67,7 +67,7 @@ fn run() -> Result<(), Box> { Ok(()) }); - core.run(search_future)?; + block_on_all;(search_future)?; Ok(()) } diff --git a/src/queries/src/lib.rs b/src/queries/src/lib.rs index 79ff6184cb..eaec8da034 100644 --- a/src/queries/src/lib.rs +++ b/src/queries/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(custom_attribute)] -#![feature(iterator_for_each)] #![recursion_limit = "256"] #[macro_use] @@ -7,7 +5,6 @@ extern crate derive_builder; extern crate serde; #[macro_use] extern crate serde_derive; -#[marco_use] extern crate serde_json; //extern crate error_chain; diff --git a/src/reqwest/Cargo.toml b/src/reqwest/Cargo.toml index fb984d0e86..653e18a7c9 100644 --- a/src/reqwest/Cargo.toml +++ b/src/reqwest/Cargo.toml @@ -10,12 +10,12 @@ readme = "README.md" [dependencies] serde = "~1" -elastic_requests = { version = "~0.20.0", path = "../requests" } -elastic_responses = { version = "~0.20.7", path = "../responses" } -reqwest = { version = "~0.8.0", features = ["unstable"] } +elastic_requests = { version = "0.20.10", path = "../requests" } +elastic_responses = { version = "0.20.10", path = "../responses" } +reqwest = { version = "~0.9", features = ["hyper-011"] } url = "~1" bytes = "~0.4.5" -tokio-core = "~0.1.9" +tokio = "0.1" futures = "~0.1.16" serde_json = "~1" quick-error = "~1" diff --git a/src/reqwest/benches/mod.rs b/src/reqwest/benches/mod.rs index 8b776be4b1..78da1f6ea4 100644 --- a/src/reqwest/benches/mod.rs +++ b/src/reqwest/benches/mod.rs @@ -3,12 +3,12 @@ extern crate elastic_reqwest; extern crate reqwest; extern crate test; -extern crate tokio_core; +extern crate tokio; use reqwest::Client as ClientSync; -use reqwest::unstable::async::Client as ClientAsync; -use reqwest::header::Referer; -use tokio_core::reactor::Core; +use reqwest::async::Client as ClientAsync; +use reqwest::hyper_011::header::Referer; +use tokio::runtime::current_thread::block_on_all; use elastic_reqwest::RequestParams; use elastic_reqwest::sync::build_req as build_req_sync; use elastic_reqwest::async::build_req as build_req_async; @@ -126,10 +126,8 @@ macro_rules! build_request_async { $( #[bench] fn $name(b: &mut test::Bencher) { - let core = Core::new().unwrap(); - let params = RequestParams::default(); - let cli = ClientAsync::new(&core.handle()); + let cli = ClientAsync::new(); b.iter(|| { build_req_async(&cli, ¶ms, PingRequest::new()) diff --git a/src/reqwest/examples/basic_async.rs b/src/reqwest/examples/basic_async.rs index 803eaa9d37..79acf91755 100644 --- a/src/reqwest/examples/basic_async.rs +++ b/src/reqwest/examples/basic_async.rs @@ -9,20 +9,18 @@ extern crate elastic_reqwest; extern crate futures; #[macro_use] extern crate serde_json; -extern crate tokio_core; +extern crate tokio; use serde_json::Value; -use tokio_core::reactor::Core; +use tokio::runtime::current_thread::block_on_all; use futures::Future; use elastic_reqwest::{AsyncElasticClient, AsyncFromResponse, Error, RequestParams}; use elastic_reqwest::req::SearchRequest; use elastic_reqwest::res::{parse, SearchResponse}; fn run() -> Result<(), Error> { - let mut core = Core::new().unwrap(); - // Get a new default client. - let (client, _) = elastic_reqwest::async::default(&core.handle())?; + let (client, _) = elastic_reqwest::async::default()?; // Create a new set of params with pretty printing. let params = RequestParams::default().url_param("pretty", true); @@ -54,7 +52,7 @@ fn run() -> Result<(), Error> { Ok(()) }); - core.run(req_fut).unwrap(); + block_on_all(req_fut)?; Ok(()) } diff --git a/src/reqwest/src/async.rs b/src/reqwest/src/async.rs index a068cafa7d..343ff974ee 100644 --- a/src/reqwest/src/async.rs +++ b/src/reqwest/src/async.rs @@ -4,9 +4,8 @@ use std::mem; use bytes::Bytes; use serde::de::DeserializeOwned; use serde_json::Value; -use reqwest::unstable::async::{Body, Client, ClientBuilder, Decoder, RequestBuilder, Response}; +use reqwest::async::{Body, Client, ClientBuilder, Decoder, RequestBuilder, Response}; use futures::{Future, Poll, Stream}; -use tokio_core::reactor::Handle; use private; use super::req::HttpRequest; @@ -14,9 +13,9 @@ use super::res::parsing::{IsOk, Parse}; use super::{build_method, build_url, Error, RequestParams}; /** Get a default `Client` and `RequestParams`. */ -pub fn default(handle: &Handle) -> Result<(Client, RequestParams), Error> { +pub fn default() -> Result<(Client, RequestParams), Error> { ClientBuilder::new() - .build(handle) + .build() .map(|cli| (cli, RequestParams::default())) .map_err(Into::into) } @@ -79,18 +78,18 @@ pub trait AsyncElasticClient: private::Sealed { ```no_run # extern crate elastic_reqwest; - # extern crate tokio_core; + # extern crate tokio; + # use tokio::runtime::current_thread::block_on_all; # use elastic_reqwest::req::SimpleSearchRequest; # fn main() { - # let mut core = tokio_core::reactor::Core::new().unwrap(); # let request = SimpleSearchRequest::for_index_ty("myindex", "mytype"); use elastic_reqwest::AsyncElasticClient; - let (client, params) = elastic_reqwest::async::default(&core.handle()).unwrap(); + let (client, params) = elastic_reqwest::async::default().unwrap(); let http_future = client.elastic_req(¶ms, request); - core.run(http_future).unwrap(); + block_on_all(http_future).unwrap(); # } ``` */ @@ -137,13 +136,11 @@ where let method = build_method(req.method); let body = req.body; - let mut req = client.request(method, &url); - { - req.headers(params.get_headers()); + let mut req = client.request(method, &url) + .headers_011(params.get_headers()); - if let Some(body) = body { - req.body(body.into().into_inner()); - } + if let Some(body) = body { + req = req.body(body.into().into_inner()); } req @@ -155,7 +152,7 @@ impl AsyncElasticClient for Client { I: Into>, B: Into, { - let mut req = build_req(&self, params, req); + let req = build_req(&self, params, req); Pending::new(req.send().map_err(Into::into)) } } @@ -213,9 +210,8 @@ impl AsyncFromResponse #[cfg(test)] mod tests { use reqwest::Method; - use reqwest::unstable::async::{Client, RequestBuilder}; - use reqwest::header::ContentType; - use tokio_core::reactor::Core; + use reqwest::async::{Client, RequestBuilder}; + use reqwest::hyper_011::header::ContentType; use super::*; use req::*; @@ -227,15 +223,13 @@ mod tests { } fn expected_req(cli: &Client, method: Method, url: &str, body: Option>) -> RequestBuilder { - let mut req = cli.request(method, url); - { - req.header(ContentType::json()); + let mut req = cli.request(method, url) + .header_011(ContentType::json()); - if let Some(body) = body { - req.body(body); - } + if let Some(body) = body { + req = req.body(body); } - + req } @@ -243,37 +237,33 @@ mod tests { assert_eq!(format!("{:?}", expected), format!("{:?}", actual)); } - fn core() -> Core { - Core::new().unwrap() - } - #[test] fn head_req() { - let cli = Client::new(&core().handle()); + let cli = Client::new(); let req = build_req(&cli, ¶ms(), PingHeadRequest::new()); let url = "eshost:9200/path/?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Head, url, None); + let expected = expected_req(&cli, Method::HEAD, url, None); assert_req(expected, req); } #[test] fn get_req() { - let cli = Client::new(&core().handle()); + let cli = Client::new(); let req = build_req(&cli, ¶ms(), SimpleSearchRequest::new()); let url = "eshost:9200/path/_search?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Get, url, None); + let expected = expected_req(&cli, Method::GET, url, None); assert_req(expected, req); } #[test] fn post_req() { - let cli = Client::new(&core().handle()); + let cli = Client::new(); let req = build_req( &cli, ¶ms(), @@ -282,14 +272,14 @@ mod tests { let url = "eshost:9200/path/idx/ty/_percolate?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Post, url, Some(vec![])); + let expected = expected_req(&cli, Method::POST, url, Some(vec![])); assert_req(expected, req); } #[test] fn put_req() { - let cli = Client::new(&core().handle()); + let cli = Client::new(); let req = build_req( &cli, ¶ms(), @@ -298,19 +288,19 @@ mod tests { let url = "eshost:9200/path/idx?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Put, url, Some(vec![])); + let expected = expected_req(&cli, Method::PUT, url, Some(vec![])); assert_req(expected, req); } #[test] fn delete_req() { - let cli = Client::new(&core().handle()); + let cli = Client::new(); let req = build_req(&cli, ¶ms(), IndicesDeleteRequest::for_index("idx")); let url = "eshost:9200/path/idx?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Delete, url, None); + let expected = expected_req(&cli, Method::DELETE, url, None); assert_req(expected, req); } diff --git a/src/reqwest/src/lib.rs b/src/reqwest/src/lib.rs index 9b6b359826..887511b68f 100644 --- a/src/reqwest/src/lib.rs +++ b/src/reqwest/src/lib.rs @@ -102,10 +102,10 @@ Execute a search request asynchronously and parse the response: #[macro_use] extern crate serde_json; extern crate elastic_reqwest; -extern crate tokio_core; +extern crate tokio; extern crate futures; -use tokio_core::reactor::Core; +use tokio::runtime::current_thread::block_on_all; use futures::Future; use serde_json::Value; use elastic_reqwest::{AsyncElasticClient, AsyncFromResponse, parse}; @@ -113,9 +113,7 @@ use elastic_reqwest::req::SearchRequest; use elastic_reqwest::res::SearchResponse; # fn main() { -let mut core = Core::new().unwrap(); - -let (client, params) = elastic_reqwest::async::default(&core.handle()).unwrap(); +let (client, params) = elastic_reqwest::async::default().unwrap(); let search = SearchRequest::for_index_ty( "myindex", "mytype", @@ -147,7 +145,7 @@ let search_future = client Ok(()) }); -core.run(search_future).unwrap(); +block_on_all(search_future).unwrap(); # } ``` @@ -223,7 +221,6 @@ extern crate reqwest; extern crate serde; #[cfg_attr(test, macro_use)] extern crate serde_json; -extern crate tokio_core; extern crate url; mod private { @@ -260,7 +257,7 @@ use std::sync::Arc; use std::collections::BTreeMap; use std::str; use reqwest::Error as ReqwestError; -use reqwest::header::{ContentType, Header, Headers}; +use reqwest::hyper_011::{header::{ContentType, Header}, Headers}; use url::form_urlencoded::Serializer; use self::res::error::ResponseError; @@ -318,7 +315,7 @@ With custom headers: # extern crate reqwest; # extern crate elastic_reqwest; # use elastic_reqwest::RequestParams; -# use reqwest::header::Authorization; +# use reqwest::hyper_011::header::Authorization; # fn main() { let params = RequestParams::default() .header(Authorization("let me in".to_owned())); @@ -470,12 +467,12 @@ fn build_url<'a>(req_url: &str, params: &RequestParams) -> String { fn build_method(method: HttpMethod) -> reqwest::Method { match method { - HttpMethod::Get => reqwest::Method::Get, - HttpMethod::Post => reqwest::Method::Post, - HttpMethod::Head => reqwest::Method::Head, - HttpMethod::Delete => reqwest::Method::Delete, - HttpMethod::Put => reqwest::Method::Put, - HttpMethod::Patch => reqwest::Method::Patch, + HttpMethod::Get => reqwest::Method::GET, + HttpMethod::Post => reqwest::Method::POST, + HttpMethod::Head => reqwest::Method::HEAD, + HttpMethod::Delete => reqwest::Method::DELETE, + HttpMethod::Put => reqwest::Method::PUT, + HttpMethod::Patch => reqwest::Method::PATCH, } } @@ -487,7 +484,7 @@ fn assert_sync() {} #[cfg(test)] mod tests { - use reqwest::header::{Authorization, ContentType, Referer}; + use reqwest::hyper_011::header::{Authorization, ContentType, Referer}; use super::*; #[test] diff --git a/src/reqwest/src/sync.rs b/src/reqwest/src/sync.rs index 8b5ef03d09..d7dd70e948 100644 --- a/src/reqwest/src/sync.rs +++ b/src/reqwest/src/sync.rs @@ -113,13 +113,11 @@ where let method = build_method(req.method); let body = req.body; - let mut req = client.request(method, &url); - { - req.headers(params.get_headers()); + let mut req = client.request(method, &url) + .headers_011(params.get_headers()); - if let Some(body) = body { - req.body(body.into().into_inner()); - } + if let Some(body) = body { + req = req.body(body.into().into_inner()); } req @@ -154,7 +152,7 @@ impl SyncFromResponse for Parse>) -> RequestBuilder { - let mut req = cli.request(method, url); - { - req.header(ContentType::json()); + let mut req = cli.request(method, url) + .header_011(ContentType::json()); - if let Some(body) = body { - req.body(body); - } + if let Some(body) = body { + req = req.body(body); } - + req } @@ -188,7 +184,7 @@ mod tests { let url = "eshost:9200/path/?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Head, url, None); + let expected = expected_req(&cli, Method::HEAD, url, None); assert_req(expected, req); } @@ -200,7 +196,7 @@ mod tests { let url = "eshost:9200/path/_search?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Get, url, None); + let expected = expected_req(&cli, Method::GET, url, None); assert_req(expected, req); } @@ -216,7 +212,7 @@ mod tests { let url = "eshost:9200/path/idx/ty/_percolate?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Post, url, Some(vec![])); + let expected = expected_req(&cli, Method::POST, url, Some(vec![])); assert_req(expected, req); } @@ -232,7 +228,7 @@ mod tests { let url = "eshost:9200/path/idx?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Put, url, Some(vec![])); + let expected = expected_req(&cli, Method::PUT, url, Some(vec![])); assert_req(expected, req); } @@ -244,7 +240,7 @@ mod tests { let url = "eshost:9200/path/idx?pretty=true&q=*"; - let expected = expected_req(&cli, Method::Delete, url, None); + let expected = expected_req(&cli, Method::DELETE, url, None); assert_req(expected, req); } diff --git a/tests/run/Cargo.toml b/tests/run/Cargo.toml index 040eb6fa12..147adc8f9f 100644 --- a/tests/run/Cargo.toml +++ b/tests/run/Cargo.toml @@ -16,3 +16,4 @@ tokio-core = "~0.1.9" tokio-timer = "~0.2.1" futures-cpupool = "~0.1.6" term-painter = "~0.2.4" +tokio = "0.1" \ No newline at end of file diff --git a/tests/run/src/build_client.rs b/tests/run/src/build_client.rs index c03c756646..1c03a06f00 100644 --- a/tests/run/src/build_client.rs +++ b/tests/run/src/build_client.rs @@ -1,10 +1,9 @@ -use tokio_core::reactor::Handle; use elastic::prelude::*; use elastic::Error; -pub fn call(handle: &Handle, run: &str) -> Result { +pub fn call(run: &str) -> Result { match run { // Get a default client - _ => AsyncClientBuilder::new().build(handle), + _ => AsyncClientBuilder::new().build(), } } diff --git a/tests/run/src/main.rs b/tests/run/src/main.rs index e982d3d43f..304124b374 100644 --- a/tests/run/src/main.rs +++ b/tests/run/src/main.rs @@ -16,12 +16,13 @@ extern crate serde_derive; #[macro_use] extern crate serde_json; extern crate term_painter; -extern crate tokio_core; +extern crate tokio; extern crate tokio_timer; use std::process; use term_painter::ToStyle; use term_painter::Color::*; +use tokio::runtime::current_thread::block_on_all; mod document; mod search; @@ -32,19 +33,20 @@ mod build_container; mod wait_until_ready; fn main() { + use std::thread; + use std::time::Duration; + let run = "default"; - let mut core = tokio_core::reactor::Core::new().unwrap(); - let client = build_client::call(&core.handle(), run).unwrap(); + let client = build_client::call(run).unwrap(); // Build and start a container to run tests against build_container::start(run).unwrap(); // Wait until the container is ready - core.run(wait_until_ready::call(client.clone(), 60)) - .unwrap(); + block_on_all(wait_until_ready::call(client.clone(), 60)); // Run the integration tests - let results = core.run(run_tests::call(client, 8)).unwrap(); + let results = block_on_all(run_tests::call(client, 8)).unwrap(); let failed: Vec<_> = results .iter() .filter(|success| **success == false)