From 507765cacdb07c32232f3e7d0916ae5cb75f257f Mon Sep 17 00:00:00 2001 From: leone Date: Tue, 27 Jun 2023 12:09:44 +0200 Subject: [PATCH] refactor: Example to ntex 0.7.x (#1) * refactor: Example to ntex 0.7.x * refactor(example): websocket and middlewares * refactor: import ServiceCtx from ntex::service --- examples/application/Cargo.toml | 2 +- examples/async-handlers/Cargo.toml | 2 +- examples/databases/Cargo.toml | 2 +- examples/either/Cargo.toml | 2 +- examples/errors/Cargo.toml | 2 +- examples/extractors/Cargo.toml | 2 +- examples/flexible-responders/Cargo.toml | 2 +- examples/getting-started/Cargo.toml | 2 +- examples/http2/Cargo.toml | 2 +- examples/main-example/Cargo.toml | 2 +- examples/middleware/Cargo.toml | 6 ++--- examples/middleware/src/errorhandler.rs | 6 ++--- examples/middleware/src/main.rs | 7 +++--- examples/powerful-extractors/Cargo.toml | 2 +- examples/request-handlers/Cargo.toml | 2 +- examples/request-routing/Cargo.toml | 2 +- examples/requests/Cargo.toml | 4 +-- examples/responses/Cargo.toml | 2 +- examples/server/Cargo.toml | 2 +- examples/static-files/Cargo.toml | 4 +-- examples/testing/Cargo.toml | 2 +- examples/url-dispatch/Cargo.toml | 2 +- examples/websockets/Cargo.toml | 2 +- examples/websockets/src/main.rs | 33 ++++++++++++------------- 24 files changed, 47 insertions(+), 49 deletions(-) diff --git a/examples/application/Cargo.toml b/examples/application/Cargo.toml index cec57a2..324a1c8 100644 --- a/examples/application/Cargo.toml +++ b/examples/application/Cargo.toml @@ -5,4 +5,4 @@ edition = "2018" workspace = "../" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/async-handlers/Cargo.toml b/examples/async-handlers/Cargo.toml index 85ef8e7..6fbbab0 100644 --- a/examples/async-handlers/Cargo.toml +++ b/examples/async-handlers/Cargo.toml @@ -4,6 +4,6 @@ version = "2.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } futures = "0.3.1" bytes = "0.5" diff --git a/examples/databases/Cargo.toml b/examples/databases/Cargo.toml index 80c30b9..1841f14 100644 --- a/examples/databases/Cargo.toml +++ b/examples/databases/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diesel = { version = "2", features = ["sqlite", "r2d2"] } serde = { version = "1", features = ["derive"] } uuid = { version = "1", features = ["v4"] } diff --git a/examples/either/Cargo.toml b/examples/either/Cargo.toml index b9e50b5..57da81d 100644 --- a/examples/either/Cargo.toml +++ b/examples/either/Cargo.toml @@ -4,4 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/errors/Cargo.toml b/examples/errors/Cargo.toml index 7da797f..bf7db46 100644 --- a/examples/errors/Cargo.toml +++ b/examples/errors/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } derive_more = "0.99" env_logger = "0.7" log = "0.4" diff --git a/examples/extractors/Cargo.toml b/examples/extractors/Cargo.toml index d538164..08e0734 100644 --- a/examples/extractors/Cargo.toml +++ b/examples/extractors/Cargo.toml @@ -4,6 +4,6 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } serde = "1.0" serde_json = "1.0" diff --git a/examples/flexible-responders/Cargo.toml b/examples/flexible-responders/Cargo.toml index 8263397..1faff02 100644 --- a/examples/flexible-responders/Cargo.toml +++ b/examples/flexible-responders/Cargo.toml @@ -4,5 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } serde = "1.0" diff --git a/examples/getting-started/Cargo.toml b/examples/getting-started/Cargo.toml index f8d792b..bb204a6 100644 --- a/examples/getting-started/Cargo.toml +++ b/examples/getting-started/Cargo.toml @@ -5,4 +5,4 @@ edition = "2018" workspace = "../" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/http2/Cargo.toml b/examples/http2/Cargo.toml index bf38c9b..8daa1ba 100644 --- a/examples/http2/Cargo.toml +++ b/examples/http2/Cargo.toml @@ -4,5 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio", "openssl"] } +ntex = { version = "0.7.2", features = ["tokio", "openssl"] } openssl = { version = "0.10", features = ["v110", "vendored"] } diff --git a/examples/main-example/Cargo.toml b/examples/main-example/Cargo.toml index d4bb8ae..6e47038 100644 --- a/examples/main-example/Cargo.toml +++ b/examples/main-example/Cargo.toml @@ -4,4 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/middleware/Cargo.toml b/examples/middleware/Cargo.toml index 45f19ff..d72e487 100644 --- a/examples/middleware/Cargo.toml +++ b/examples/middleware/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio", "cookie"] } -ntex-session = { version = "0.2.0" } +ntex = { version = "0.7.2", features = ["tokio", "cookie"] } +ntex-session = { version = "0.3.0" } futures-util = { version = "0.3.7", default-features = false, features = ["std"] } -env_logger = "0.7" +env_logger = "0.10.0" diff --git a/examples/middleware/src/errorhandler.rs b/examples/middleware/src/errorhandler.rs index 9b1abf6..89bd25d 100644 --- a/examples/middleware/src/errorhandler.rs +++ b/examples/middleware/src/errorhandler.rs @@ -2,7 +2,7 @@ // use ntex::http::header; -use ntex::service::{Middleware, Service}; +use ntex::service::{Middleware, Service, ServiceCtx}; use ntex::util::BoxFuture; use ntex::web; @@ -31,9 +31,9 @@ where ntex::forward_poll_ready!(service); - fn call(&self, req: web::WebRequest) -> Self::Future<'_> { + fn call<'a>(&'a self, req: web::WebRequest, ctx: ServiceCtx<'a, Self>) -> Self::Future<'_> { Box::pin(async move { - self.service.call(req).await.map(|mut res| { + ctx.call(&self.service, req).await.map(|mut res| { let status = res.status(); if status.is_client_error() || status.is_server_error() { res.headers_mut().insert( diff --git a/examples/middleware/src/main.rs b/examples/middleware/src/main.rs index ef1cc83..e32f5fc 100644 --- a/examples/middleware/src/main.rs +++ b/examples/middleware/src/main.rs @@ -4,7 +4,7 @@ pub mod logger; pub mod user_sessions; // -use ntex::service::{Middleware, Service}; +use ntex::service::{Middleware, Service, ServiceCtx}; use ntex::util::BoxFuture; use ntex::web; @@ -37,11 +37,10 @@ where ntex::forward_poll_ready!(service); - fn call(&self, req: web::WebRequest) -> Self::Future<'_> { + fn call<'a>(&'a self, req: web::WebRequest, ctx: ServiceCtx<'a, Self>) -> Self::Future<'_> { println!("Hi from start. You requested: {}", req.path()); - let fut = self.service.call(req); - + let fut = ctx.call(&self.service, req); Box::pin(async move { let res = fut.await?; diff --git a/examples/powerful-extractors/Cargo.toml b/examples/powerful-extractors/Cargo.toml index 22ab536..d256902 100644 --- a/examples/powerful-extractors/Cargo.toml +++ b/examples/powerful-extractors/Cargo.toml @@ -4,5 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } serde = "1.0" diff --git a/examples/request-handlers/Cargo.toml b/examples/request-handlers/Cargo.toml index 9569566..892c66c 100644 --- a/examples/request-handlers/Cargo.toml +++ b/examples/request-handlers/Cargo.toml @@ -4,4 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/request-routing/Cargo.toml b/examples/request-routing/Cargo.toml index 6737e7c..a7f1a3a 100644 --- a/examples/request-routing/Cargo.toml +++ b/examples/request-routing/Cargo.toml @@ -4,4 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/requests/Cargo.toml b/examples/requests/Cargo.toml index 0305c6b..cdae323 100644 --- a/examples/requests/Cargo.toml +++ b/examples/requests/Cargo.toml @@ -6,6 +6,6 @@ edition = "2018" [dependencies] serde = "1.0" serde_json = "1.0" -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } futures = "0.3.1" -ntex-multipart = "0.2.0" +ntex-multipart = "0.3.0" diff --git a/examples/responses/Cargo.toml b/examples/responses/Cargo.toml index 64092ce..af2f9c1 100644 --- a/examples/responses/Cargo.toml +++ b/examples/responses/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio", "compress"] } +ntex = { version = "0.7.2", features = ["tokio", "compress"] } serde = "1.0" futures = "0.3.1" bytes = "0.5" diff --git a/examples/server/Cargo.toml b/examples/server/Cargo.toml index 2ec9378..ec6c99e 100644 --- a/examples/server/Cargo.toml +++ b/examples/server/Cargo.toml @@ -5,7 +5,7 @@ workspace = "../" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio", "openssl"] } +ntex = { version = "0.7.2", features = ["tokio", "openssl"] } futures = "0.3" openssl = { version = "0.10", features = ["vendored"] } tokio = { version = "1.16.1", features = ["full"] } diff --git a/examples/static-files/Cargo.toml b/examples/static-files/Cargo.toml index 7838da4..e67e4d2 100644 --- a/examples/static-files/Cargo.toml +++ b/examples/static-files/Cargo.toml @@ -4,6 +4,6 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } -ntex-files = "0.2.0" +ntex = { version = "0.7.2", features = ["tokio"] } +ntex-files = "0.3.0" mime = "0.3" diff --git a/examples/testing/Cargo.toml b/examples/testing/Cargo.toml index 4c6ac6d..4b43dd9 100644 --- a/examples/testing/Cargo.toml +++ b/examples/testing/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } futures = "0.3" futures-util = "0.3" bytes = "0.5" diff --git a/examples/url-dispatch/Cargo.toml b/examples/url-dispatch/Cargo.toml index 235c1e2..24a1609 100644 --- a/examples/url-dispatch/Cargo.toml +++ b/examples/url-dispatch/Cargo.toml @@ -5,7 +5,7 @@ edition = "2018" workspace = "../" [dependencies] -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } futures = "0.3.1" openssl = "0.10" serde = "1.0" diff --git a/examples/websockets/Cargo.toml b/examples/websockets/Cargo.toml index 597fb15..68fd73b 100644 --- a/examples/websockets/Cargo.toml +++ b/examples/websockets/Cargo.toml @@ -5,4 +5,4 @@ edition = "2018" [dependencies] futures = "0.3.27" -ntex = { version = "0.6.5", features = ["tokio"] } +ntex = { version = "0.7.2", features = ["tokio"] } diff --git a/examples/websockets/src/main.rs b/examples/websockets/src/main.rs index a5d3cee..c988986 100644 --- a/examples/websockets/src/main.rs +++ b/examples/websockets/src/main.rs @@ -1,13 +1,12 @@ // use std::{cell::RefCell, io, rc::Rc, time::Duration, time::Instant}; -use futures::future::{ready, select, Either}; -use ntex::service::{fn_factory_with_config, fn_shutdown, Service}; -use ntex::util::Bytes; use ntex::web; -use ntex::web::ws; +use ntex::util::Bytes; +use ntex::{fn_service, chain}; use ntex::{channel::oneshot, rt, time}; -use ntex::{fn_service, pipeline}; +use futures::future::{ready, select, Either}; +use ntex::service::{fn_factory_with_config, fn_shutdown, Service}; /// How often heartbeat pings are sent const HEARTBEAT_INTERVAL: Duration = Duration::from_secs(5); @@ -22,9 +21,9 @@ struct WsState { /// WebSockets service factory async fn ws_service( - sink: ws::WsSink, + sink: web::ws::WsSink, ) -> Result< - impl Service, Error = io::Error>, + impl Service, Error = io::Error>, web::Error, > { let state = Rc::new(RefCell::new(WsState { hb: Instant::now() })); @@ -39,22 +38,22 @@ async fn ws_service( let service = fn_service(move |frame| { let item = match frame { // update heartbeat - ws::Frame::Ping(msg) => { + web::ws::Frame::Ping(msg) => { state.borrow_mut().hb = Instant::now(); - Some(ws::Message::Pong(msg)) + Some(web::ws::Message::Pong(msg)) } // update heartbeat - ws::Frame::Pong(_) => { + web::ws::Frame::Pong(_) => { state.borrow_mut().hb = Instant::now(); None } // send message back - ws::Frame::Text(text) => Some(ws::Message::Text( + web::ws::Frame::Text(text) => Some(web::ws::Message::Text( String::from_utf8(Vec::from(text.as_ref())).unwrap().into(), )), - ws::Frame::Binary(bin) => Some(ws::Message::Binary(bin)), + web::ws::Frame::Binary(bin) => Some(web::ws::Message::Binary(bin)), // close connection - ws::Frame::Close(reason) => Some(ws::Message::Close(reason)), + web::ws::Frame::Close(reason) => Some(web::ws::Message::Close(reason)), // ignore other frames _ => None, }; @@ -67,13 +66,13 @@ async fn ws_service( }); // pipe our service with on_shutdown callback - Ok(pipeline(service).and_then(on_shutdown)) + Ok(chain(service).and_then(on_shutdown)) } /// helper method that sends ping to client every heartbeat interval async fn heartbeat( state: Rc>, - sink: ws::WsSink, + sink: web::ws::WsSink, mut rx: oneshot::Receiver<()>, ) { loop { @@ -88,7 +87,7 @@ async fn heartbeat( // send ping if sink - .send(ws::Message::Ping(Bytes::default())) + .send(web::ws::Message::Ping(Bytes::default())) .await .is_err() { @@ -105,7 +104,7 @@ async fn heartbeat( /// do websocket handshake and start web sockets service async fn ws_index(req: web::HttpRequest) -> Result { - ws::start(req, fn_factory_with_config(ws_service)).await + web::ws::start(req, fn_factory_with_config(ws_service)).await } #[ntex::main]