From e6e8767335114ebdd968cd963533a9cbe3beb6a6 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Wed, 22 Nov 2023 11:03:15 +0800 Subject: [PATCH 01/24] feat: upgrade to hyper v1.0 (#96) * feat: upgrade to hyper v1.0 * feat(viz): add serve_with_upgrades * feat(viz): export serve_with_upgrades * lint: move to workspace.lints table * lint: allow too_many_lines * lint: allow clippy::type_complexity --- .github/workflows/CI.yml | 2 +- Cargo.toml | 37 ++++++++++++++----- clippy.toml | 3 +- examples/otel/metrics/Cargo.toml | 3 +- examples/otel/metrics/src/main.rs | 11 ++---- examples/otel/tracing/Cargo.toml | 3 +- examples/otel/tracing/src/main.rs | 6 +-- examples/routing/openapi/Cargo.toml | 4 +- examples/templates/markup/Cargo.toml | 2 +- examples/templates/markup/src/main.rs | 2 + examples/websocket-chat/src/main.rs | 4 +- viz-core/Cargo.toml | 5 ++- viz-core/src/lib.rs | 8 ---- viz-core/src/middleware/cors.rs | 2 - viz-core/src/middleware/otel/tracing.rs | 49 +++++++++++++------------ viz-core/tests/handler.rs | 1 - viz-core/tests/request.rs | 21 +++++++++-- viz-core/tests/type_payload.rs | 3 +- viz-handlers/Cargo.toml | 3 ++ viz-handlers/src/lib.rs | 7 ---- viz-macros/Cargo.toml | 3 ++ viz-macros/src/lib.rs | 7 ---- viz-router/Cargo.toml | 3 ++ viz-router/src/lib.rs | 7 ---- viz-router/src/resources.rs | 1 - viz-router/src/route.rs | 1 - viz-router/src/router.rs | 1 - viz-test/Cargo.toml | 1 + viz-test/src/lib.rs | 1 + viz/Cargo.toml | 3 +- viz/src/lib.rs | 9 +---- viz/src/serve.rs | 21 ++++++++++- viz/src/tls.rs | 2 - 33 files changed, 131 insertions(+), 105 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 644bf7a6..f3b0205c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -55,7 +55,7 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@clippy - uses: Swatinem/rust-cache@v2 - - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic + - run: cargo clippy --tests fmt: name: Fmt diff --git a/Cargo.toml b/Cargo.toml index 025fb5f5..598b6313 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,12 +61,13 @@ thiserror = "1.0" path-tree = "0.7" # http -headers = "0.3" -http = "0.2" -http-body = "=1.0.0-rc.2" -http-body-util = "=0.1.0-rc.3" -hyper = { version = "=1.0.0-rc.4", features = ["server"] } -hyper-util = { git = "https://github.com/hyperium/hyper-util", rev = "63e84bf", features = ["auto"] } +# TODO: wait headers-v1.0 +headers = { git = "https://github.com/hyperium/headers.git", rev = "4400aa9" } +http = "1" +http-body = "1" +http-body-util = "0.1" +hyper = { version = "1", features = ["server"] } +hyper-util = { version = "0.1", features = ["server-auto", "tokio"] } futures-util = "0.3" tokio = { version = "1.33", features = ["net"] } @@ -86,11 +87,12 @@ hex = "0.4" rust-embed = "8" # OpenTelemetry -opentelemetry = { version = "0.20", default-features = false } -opentelemetry-prometheus = { version = "0.13", features = [ +opentelemetry = { version = "0.21", default-features = false } +opentelemetry_sdk = { version = "0.21", default-features = false } +opentelemetry-prometheus = { version = "0.14", features = [ "prometheus-encoding", ] } -opentelemetry-semantic-conventions = { version = "0.12" } +opentelemetry-semantic-conventions = { version = "0.13" } prometheus = "0.13" # Tracing @@ -102,8 +104,25 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [profile.dev] +opt-level = 1 split-debuginfo = "unpacked" [profile.dev.package."*"] opt-level = 3 debug = false + +[workspace.lints.rust] +unsafe_code = "forbid" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +non_ascii_idents = "warn" +unreachable_pub = "warn" +missing_debug_implementations = "warn" +missing_docs = "warn" + +[workspace.lints.clippy] +all = "deny" +pedantic = "deny" +module_name_repetitions = { level = "allow", priority = 1 } +too_many_lines = { level = "allow", priority = 1 } +type_complexity = { level = "allow", priority = 1 } diff --git a/clippy.toml b/clippy.toml index ad0ea4e7..938388da 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1 +1,2 @@ -msrv = "1.64" +# Clippy configuration +# https://doc.rust-lang.org/nightly/clippy/lint_configuration.html diff --git a/examples/otel/metrics/Cargo.toml b/examples/otel/metrics/Cargo.toml index c577fbb1..853e4632 100644 --- a/examples/otel/metrics/Cargo.toml +++ b/examples/otel/metrics/Cargo.toml @@ -8,4 +8,5 @@ publish = false viz = { workspace = true, features = ["otel-metrics", "otel-prometheus"] } tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } -opentelemetry = { workspace = true, default-features = false, features = ["metrics"]} +opentelemetry = { workspace = true, features = ["metrics"]} +opentelemetry_sdk = { workspace = true, features = ["metrics"] } diff --git a/examples/otel/metrics/src/main.rs b/examples/otel/metrics/src/main.rs index af23ed30..237ae5d6 100644 --- a/examples/otel/metrics/src/main.rs +++ b/examples/otel/metrics/src/main.rs @@ -4,13 +4,10 @@ use std::{net::SocketAddr, sync::Arc}; use tokio::net::TcpListener; -use opentelemetry::{ - global, - sdk::{ - metrics::{self, Aggregation, Instrument, MeterProvider, Stream}, - Resource, - }, - KeyValue, +use opentelemetry::{global, KeyValue}; +use opentelemetry_sdk::{ + metrics::{self, Aggregation, Instrument, MeterProvider, Stream}, + Resource, }; use viz::{ diff --git a/examples/otel/tracing/Cargo.toml b/examples/otel/tracing/Cargo.toml index 82154c54..e70e7dde 100644 --- a/examples/otel/tracing/Cargo.toml +++ b/examples/otel/tracing/Cargo.toml @@ -9,4 +9,5 @@ viz = { workspace = true, features = ["otel-tracing"] } tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } opentelemetry.workspace = true -opentelemetry-jaeger = { version = "0.19.0", features = ["rt-tokio-current-thread"]} +opentelemetry_sdk = { workspace = true, features = ["trace", "rt-tokio-current-thread"] } +opentelemetry-jaeger = { version = "0.20", features = ["rt-tokio-current-thread"]} diff --git a/examples/otel/tracing/src/main.rs b/examples/otel/tracing/src/main.rs index 1c34ea3b..b53fd236 100644 --- a/examples/otel/tracing/src/main.rs +++ b/examples/otel/tracing/src/main.rs @@ -1,10 +1,10 @@ #![deny(warnings)] #![allow(clippy::unused_async)] -use opentelemetry::{ - global, +use opentelemetry::global; +use opentelemetry_sdk::{ runtime::TokioCurrentThread, - sdk::{propagation::TraceContextPropagator, trace::Tracer}, + {propagation::TraceContextPropagator, trace::Tracer}, }; use std::{net::SocketAddr, sync::Arc}; use tokio::net::TcpListener; diff --git a/examples/routing/openapi/Cargo.toml b/examples/routing/openapi/Cargo.toml index 9b7fa56b..c2daeaf6 100644 --- a/examples/routing/openapi/Cargo.toml +++ b/examples/routing/openapi/Cargo.toml @@ -12,5 +12,5 @@ serde = { workspace = true, features = ["derive"] } serde_json.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } -utoipa = "4.0" -utoipa-swagger-ui = "4.0" +utoipa = "4" +utoipa-swagger-ui = "4" diff --git a/examples/templates/markup/Cargo.toml b/examples/templates/markup/Cargo.toml index d653cab0..ee497407 100644 --- a/examples/templates/markup/Cargo.toml +++ b/examples/templates/markup/Cargo.toml @@ -9,5 +9,5 @@ viz.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } -markup = "0.13" +markup = "0.14" v_htmlescape = "0.15" diff --git a/examples/templates/markup/src/main.rs b/examples/templates/markup/src/main.rs index 7eaf7e87..6383c845 100644 --- a/examples/templates/markup/src/main.rs +++ b/examples/templates/markup/src/main.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![allow(clippy::unused_async)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::inherent_to_string_shadow_display)] use std::{net::SocketAddr, sync::Arc}; use tokio::net::TcpListener; diff --git a/examples/websocket-chat/src/main.rs b/examples/websocket-chat/src/main.rs index b64f6e3c..01ec3798 100644 --- a/examples/websocket-chat/src/main.rs +++ b/examples/websocket-chat/src/main.rs @@ -6,7 +6,7 @@ use std::{net::SocketAddr, sync::Arc}; use tokio::net::TcpListener; use tokio::sync::broadcast::{channel, Sender}; use viz::{ - get, serve, + get, serve_with_upgrades, types::{Message, Params, State, WebSocket}, HandlerExt, IntoHandler, IntoResponse, Request, RequestExt, Response, ResponseExt, Result, Router, Tree, @@ -67,7 +67,7 @@ async fn main() -> Result<()> { let (stream, addr) = listener.accept().await?; let tree = tree.clone(); tokio::task::spawn(async move { - if let Err(err) = serve(stream, tree, Some(addr)).await { + if let Err(err) = serve_with_upgrades(stream, tree, Some(addr)).await { eprintln!("Error while serving HTTP connection: {err}"); } }); diff --git a/viz-core/Cargo.toml b/viz-core/Cargo.toml index 13605439..70e0a302 100644 --- a/viz-core/Cargo.toml +++ b/viz-core/Cargo.toml @@ -70,7 +70,7 @@ thiserror.workspace = true rfc7239 = "0.1" # realip cookie = { version = "0.18", features = ["percent-encode"], optional = true } -form-data = { version = "0.5.0-rc.2", optional = true } +form-data = { version = "0.5.0", optional = true } serde = { workspace = true, features = ["derive"], optional = true } serde_json = { workspace = true, optional = true } serde_urlencoded = { workspace = true, optional = true } @@ -105,3 +105,6 @@ tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/viz-core/src/lib.rs b/viz-core/src/lib.rs index 39aa6a4f..ac3c91b9 100644 --- a/viz-core/src/lib.rs +++ b/viz-core/src/lib.rs @@ -4,14 +4,6 @@ #![doc(html_logo_url = "https://viz.rs/logo.svg")] #![doc(html_favicon_url = "https://viz.rs/logo.svg")] -#![allow(clippy::module_name_repetitions)] -#![forbid(unsafe_code)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - unreachable_pub -)] #![doc(test( no_crate_inject, attr( diff --git a/viz-core/src/middleware/cors.rs b/viz-core/src/middleware/cors.rs index 57791ea9..3ca29479 100644 --- a/viz-core/src/middleware/cors.rs +++ b/viz-core/src/middleware/cors.rs @@ -24,7 +24,6 @@ pub struct Config { allow_headers: HashSet, allow_origins: HashSet, expose_headers: HashSet, - #[allow(clippy::type_complexity)] origin_verify: Option bool + Send + Sync>>, } @@ -118,7 +117,6 @@ impl Config { } /// A function to verify the origin. If the function returns false, the request will be rejected. - #[allow(clippy::type_complexity)] #[must_use] pub fn origin_verify( mut self, diff --git a/viz-core/src/middleware/otel/tracing.rs b/viz-core/src/middleware/otel/tracing.rs index 127e6a4a..d60af86c 100644 --- a/viz-core/src/middleware/otel/tracing.rs +++ b/viz-core/src/middleware/otel/tracing.rs @@ -8,10 +8,8 @@ use http::uri::Scheme; use opentelemetry::{ global, propagation::Extractor, - trace::{ - FutureExt as OtelFutureExt, OrderMap, Span, SpanKind, Status, TraceContextExt, Tracer, - }, - Context, Key, Value, + trace::{FutureExt as OtelFutureExt, Span, SpanKind, Status, TraceContextExt, Tracer}, + Context, KeyValue, }; use opentelemetry_semantic_conventions::trace::{ CLIENT_ADDRESS, CLIENT_SOCKET_ADDRESS, EXCEPTION_MESSAGE, HTTP_REQUEST_BODY_SIZE, @@ -82,7 +80,7 @@ where .tracer .span_builder(format!("{} {}", req.method(), http_route)) .with_kind(SpanKind::Server) - .with_attributes_map(attributes) + .with_attributes(attributes) .start_with_context(&*self.tracer, &parent_context); span.add_event("request.started".to_string(), vec![]); @@ -143,7 +141,7 @@ impl<'a> RequestHeaderCarrier<'a> { } } -impl<'a> Extractor for RequestHeaderCarrier<'a> { +impl Extractor for RequestHeaderCarrier<'_> { fn get(&self, key: &str) -> Option<&str> { self.headers.get(key).and_then(|v| v.to_str().ok()) } @@ -153,62 +151,65 @@ impl<'a> Extractor for RequestHeaderCarrier<'a> { } } -fn build_attributes(req: &Request, http_route: &str) -> OrderMap { - let mut attributes = OrderMap::::with_capacity(10); +fn build_attributes(req: &Request, http_route: &str) -> Vec { + let mut attributes = Vec::with_capacity(10); // - attributes.insert(HTTP_ROUTE, http_route.to_string().into()); + attributes.push(KeyValue::new(HTTP_ROUTE, http_route.to_string())); // - attributes.insert(HTTP_REQUEST_METHOD, req.method().to_string().into()); - attributes.insert( + attributes.push(KeyValue::new(HTTP_REQUEST_METHOD, req.method().to_string())); + attributes.push(KeyValue::new( NETWORK_PROTOCOL_VERSION, - format!("{:?}", req.version()).into(), - ); + format!("{:?}", req.version()), + )); let remote_addr = req.remote_addr(); if let Some(remote_addr) = remote_addr { - attributes.insert(CLIENT_ADDRESS, remote_addr.to_string().into()); + attributes.push(KeyValue::new(CLIENT_ADDRESS, remote_addr.to_string())); } if let Some(realip) = req.realip().map(|value| value.0).filter(|realip| { remote_addr .map(SocketAddr::ip) .map_or(true, |remoteip| &remoteip != realip) }) { - attributes.insert(CLIENT_SOCKET_ADDRESS, realip.to_string().into()); + attributes.push(KeyValue::new(CLIENT_SOCKET_ADDRESS, realip.to_string())); } let uri = req.uri(); if let Some(host) = uri.host() { - attributes.insert(SERVER_ADDRESS, host.to_string().into()); + attributes.push(KeyValue::new(SERVER_ADDRESS, host.to_string())); } if let Some(port) = uri .port_u16() .map(i64::from) .filter(|port| *port != 80 && *port != 443) { - attributes.insert(SERVER_PORT, port.into()); + attributes.push(KeyValue::new(SERVER_PORT, port.to_string())); } if let Some(path_query) = uri.path_and_query() { if path_query.path() != "/" { - attributes.insert(URL_PATH, path_query.path().to_string().into()); + attributes.push(KeyValue::new(URL_PATH, path_query.path().to_string())); } if let Some(query) = path_query.query() { - attributes.insert(URL_QUERY, query.to_string().into()); + attributes.push(KeyValue::new(URL_QUERY, query.to_string())); } } - attributes.insert( + attributes.push(KeyValue::new( URL_SCHEME, - uri.scheme().unwrap_or(&Scheme::HTTP).to_string().into(), - ); + uri.scheme().unwrap_or(&Scheme::HTTP).to_string(), + )); if let Some(content_length) = req .content_length() .and_then(|len| i64::try_from(len).ok()) .filter(|len| *len > 0) { - attributes.insert(HTTP_REQUEST_BODY_SIZE, content_length.into()); + attributes.push(KeyValue::new( + HTTP_REQUEST_BODY_SIZE, + content_length.to_string(), + )); } if let Some(user_agent) = req @@ -216,7 +217,7 @@ fn build_attributes(req: &Request, http_route: &str) -> OrderMap { .as_ref() .map(UserAgent::as_str) { - attributes.insert(USER_AGENT_ORIGINAL, user_agent.to_string().into()); + attributes.push(KeyValue::new(USER_AGENT_ORIGINAL, user_agent.to_string())); } attributes diff --git a/viz-core/tests/handler.rs b/viz-core/tests/handler.rs index b404dbfd..ca582ca5 100644 --- a/viz-core/tests/handler.rs +++ b/viz-core/tests/handler.rs @@ -1,7 +1,6 @@ #![allow(dead_code)] #![allow(clippy::unused_async)] #![allow(clippy::similar_names)] -#![allow(clippy::too_many_lines)] #![allow(clippy::wildcard_imports)] use http_body_util::Full; diff --git a/viz-core/tests/request.rs b/viz-core/tests/request.rs index 30f52e28..afaca620 100644 --- a/viz-core/tests/request.rs +++ b/viz-core/tests/request.rs @@ -4,10 +4,19 @@ use headers::{authorization::Bearer, Authorization, ContentType, HeaderValue}; use http::uri::Scheme; use serde::{Deserialize, Serialize}; use viz_core::{ - header::{AUTHORIZATION, CONTENT_TYPE, COOKIE, SET_COOKIE}, + // TODO: reqwest and hyper haven't used the same version of `http`. + // header::{AUTHORIZATION, CONTENT_TYPE, COOKIE, SET_COOKIE}, + // StatusCode, + header::CONTENT_TYPE, types::{self, PayloadError}, - Error, IncomingBody, IntoResponse, Request, RequestExt, Response, ResponseExt, Result, - StatusCode, + Error, + IncomingBody, + IntoResponse, + Request, + RequestExt, + Response, + ResponseExt, + Result, }; #[derive(Debug, Deserialize, Serialize, PartialEq)] @@ -62,7 +71,6 @@ fn request_ext() -> Result<()> { Ok(()) } -#[allow(clippy::too_many_lines)] #[tokio::test] async fn request_body() -> Result<()> { use futures_util::stream::TryStreamExt; @@ -70,6 +78,10 @@ async fn request_body() -> Result<()> { middleware::{cookie, limits}, Router, }; + use viz_test::http::{ + header::{AUTHORIZATION, COOKIE}, + StatusCode, + }; use viz_test::TestServer; let router = Router::new() @@ -300,6 +312,7 @@ async fn request_session() -> Result<()> { middleware::{cookie, helper::CookieOptions, session}, Router, }; + use viz_test::http::header::{COOKIE, SET_COOKIE}; use viz_test::{nano_id, sessions, TestServer}; let router = Router::new() diff --git a/viz-core/tests/type_payload.rs b/viz-core/tests/type_payload.rs index 233bca61..b8db5383 100644 --- a/viz-core/tests/type_payload.rs +++ b/viz-core/tests/type_payload.rs @@ -1,9 +1,10 @@ use std::collections::HashMap; -use viz_core::{types, Error, Request, RequestExt, Response, ResponseExt, Result, StatusCode}; +use viz_core::{types, Error, Request, RequestExt, Response, ResponseExt, Result}; #[tokio::test] async fn payload() -> Result<()> { use viz::{middleware::limits, Router}; + use viz_test::http::StatusCode; use viz_test::TestServer; let router = Router::new() diff --git a/viz-handlers/Cargo.toml b/viz-handlers/Cargo.toml index 7713b577..0b077150 100644 --- a/viz-handlers/Cargo.toml +++ b/viz-handlers/Cargo.toml @@ -66,3 +66,6 @@ tokio = { workspace = true, features = ["rt", "macros"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/viz-handlers/src/lib.rs b/viz-handlers/src/lib.rs index 7ec4742a..eb8843d8 100644 --- a/viz-handlers/src/lib.rs +++ b/viz-handlers/src/lib.rs @@ -2,13 +2,6 @@ #![doc(html_logo_url = "https://viz.rs/logo.svg")] #![doc(html_favicon_url = "https://viz.rs/logo.svg")] -#![forbid(unsafe_code)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - unreachable_pub -)] #![doc(test( no_crate_inject, attr( diff --git a/viz-macros/Cargo.toml b/viz-macros/Cargo.toml index 127838e0..b206f019 100644 --- a/viz-macros/Cargo.toml +++ b/viz-macros/Cargo.toml @@ -28,3 +28,6 @@ tokio = { workspace = true, features = ["rt", "macros"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/viz-macros/src/lib.rs b/viz-macros/src/lib.rs index 8e4a4f8e..d23e8dbe 100644 --- a/viz-macros/src/lib.rs +++ b/viz-macros/src/lib.rs @@ -27,13 +27,6 @@ #![doc(html_logo_url = "https://viz.rs/logo.svg")] #![doc(html_favicon_url = "https://viz.rs/logo.svg")] -#![forbid(unsafe_code)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - unreachable_pub -)] #![doc(test( no_crate_inject, attr( diff --git a/viz-router/Cargo.toml b/viz-router/Cargo.toml index abddc76f..bae3bf21 100644 --- a/viz-router/Cargo.toml +++ b/viz-router/Cargo.toml @@ -30,3 +30,6 @@ serde_derive.workspace = true hyper.workspace = true http-body-util.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } + +[lints] +workspace = true diff --git a/viz-router/src/lib.rs b/viz-router/src/lib.rs index a9d17d56..f339ff62 100644 --- a/viz-router/src/lib.rs +++ b/viz-router/src/lib.rs @@ -2,13 +2,6 @@ #![doc(html_logo_url = "https://viz.rs/logo.svg")] #![doc(html_favicon_url = "https://viz.rs/logo.svg")] -#![forbid(unsafe_code)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - unreachable_pub -)] #![doc(test( no_crate_inject, attr( diff --git a/viz-router/src/resources.rs b/viz-router/src/resources.rs index 21106f70..bd3ca803 100644 --- a/viz-router/src/resources.rs +++ b/viz-router/src/resources.rs @@ -254,7 +254,6 @@ impl IntoIterator for Resources { #[cfg(test)] #[allow(clippy::unused_async)] -#[allow(clippy::too_many_lines)] mod tests { use super::Kind; use crate::{get, Resources}; diff --git a/viz-router/src/route.rs b/viz-router/src/route.rs index 8d8d6d23..d9142ca2 100644 --- a/viz-router/src/route.rs +++ b/viz-router/src/route.rs @@ -212,7 +212,6 @@ impl fmt::Debug for Route { #[cfg(test)] #[allow(dead_code)] #[allow(clippy::unused_async)] -#[allow(clippy::too_many_lines)] mod tests { use super::Route; use http_body_util::BodyExt; diff --git a/viz-router/src/router.rs b/viz-router/src/router.rs index 2312032f..b98c1c05 100644 --- a/viz-router/src/router.rs +++ b/viz-router/src/router.rs @@ -182,7 +182,6 @@ impl Router { #[cfg(test)] #[allow(clippy::unused_async)] -#[allow(clippy::too_many_lines)] mod tests { use http_body_util::{BodyExt, Full}; use std::sync::Arc; diff --git a/viz-test/Cargo.toml b/viz-test/Cargo.toml index 7a7aa053..a46ea389 100644 --- a/viz-test/Cargo.toml +++ b/viz-test/Cargo.toml @@ -19,5 +19,6 @@ viz.workspace = true sessions = { version = "0.5", features = ["memory"] } nano-id = "0.3" +http = "0.2" reqwest = { version = "0.11", features = ["cookies", "json", "multipart"]} tokio = { workspace = true, features = ["full"] } diff --git a/viz-test/src/lib.rs b/viz-test/src/lib.rs index 169d06f8..7267bd22 100644 --- a/viz-test/src/lib.rs +++ b/viz-test/src/lib.rs @@ -3,6 +3,7 @@ use std::{net::SocketAddr, sync::Arc}; use tokio::net::TcpListener; use viz::{serve, Error, Result, Router, Tree}; +pub use http; pub use nano_id; pub use sessions; diff --git a/viz/Cargo.toml b/viz/Cargo.toml index 0421a38f..e1aaf52b 100644 --- a/viz/Cargo.toml +++ b/viz/Cargo.toml @@ -87,4 +87,5 @@ tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] } all-features = true rustdoc-args = ["--cfg", "docsrs"] -[package.metadata.playground] +[lints] +workspace = true diff --git a/viz/src/lib.rs b/viz/src/lib.rs index 2e7d912d..3ec2b174 100644 --- a/viz/src/lib.rs +++ b/viz/src/lib.rs @@ -514,13 +514,6 @@ #![doc(html_logo_url = "https://viz.rs/logo.svg")] #![doc(html_favicon_url = "https://viz.rs/logo.svg")] -#![forbid(unsafe_code)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - unreachable_pub -)] #![doc(test( no_crate_inject, attr( @@ -538,7 +531,7 @@ pub use responder::Responder; #[cfg(any(feature = "http1", feature = "http2"))] mod serve; #[cfg(any(feature = "http1", feature = "http2"))] -pub use serve::serve; +pub use serve::{serve, serve_with_upgrades}; /// TLS pub mod tls; diff --git a/viz/src/serve.rs b/viz/src/serve.rs index cd4b62c9..0d9af2d3 100644 --- a/viz/src/serve.rs +++ b/viz/src/serve.rs @@ -18,7 +18,26 @@ where I: AsyncRead + AsyncWrite + Unpin + Send + 'static, { Builder::new(TokioExecutor::new()) - .serve_connection_with_upgrades(Io::new(stream).into_inner(), Responder::new(tree, addr)) + .serve_connection(Io::new(stream), Responder::new(tree, addr)) + .await + .map_err(Into::into) +} + +/// Serve the connections with upgrades. +/// +/// # Errors +/// +/// Will return `Err` if the connection does not be served. +pub async fn serve_with_upgrades( + stream: I, + tree: Arc, + addr: Option, +) -> Result<()> +where + I: AsyncRead + AsyncWrite + Unpin + Send + 'static, +{ + Builder::new(TokioExecutor::new()) + .serve_connection_with_upgrades(Io::new(stream), Responder::new(tree, addr)) .await .map_err(Into::into) } diff --git a/viz/src/tls.rs b/viz/src/tls.rs index 10479993..7907ad36 100644 --- a/viz/src/tls.rs +++ b/viz/src/tls.rs @@ -1,5 +1,3 @@ -#![allow(clippy::module_name_repetitions)] - mod listener; pub use listener::Listener; From e81e0b62b6640cead0997648a69c0254595b1577 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sun, 26 Nov 2023 05:00:17 +0800 Subject: [PATCH 02/24] feat(viz): headers v0.4 --- Cargo.toml | 2 +- viz-core/src/middleware/cors.rs | 5 ++--- viz-core/src/types/websocket.rs | 5 ++--- viz-handlers/src/serve.rs | 3 ++- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 598b6313..0440d6f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ path-tree = "0.7" # http # TODO: wait headers-v1.0 -headers = { git = "https://github.com/hyperium/headers.git", rev = "4400aa9" } +headers = "0.4" http = "1" http-body = "1" http-body-util = "0.1" diff --git a/viz-core/src/middleware/cors.rs b/viz-core/src/middleware/cors.rs index 3ca29479..2790330a 100644 --- a/viz-core/src/middleware/cors.rs +++ b/viz-core/src/middleware/cors.rs @@ -208,9 +208,8 @@ where type Output = Result; async fn call(&self, req: Request) -> Self::Output { - let origin = match req.header(ORIGIN).filter(is_not_empty) { - Some(origin) => origin, - None => return self.h.call(req).await.map(IntoResponse::into_response), + let Some(origin) = req.header(ORIGIN).filter(is_not_empty) else { + return self.h.call(req).await.map(IntoResponse::into_response); }; if !self.config.allow_origins.contains(&origin) diff --git a/viz-core/src/types/websocket.rs b/viz-core/src/types/websocket.rs index f72d6d7c..8169b086 100644 --- a/viz-core/src/types/websocket.rs +++ b/viz-core/src/types/websocket.rs @@ -76,9 +76,8 @@ impl WebSocket { let on_upgrade = self.on_upgrade.take().expect("missing OnUpgrade"); tokio::task::spawn(async move { - let upgraded = match on_upgrade.await { - Ok(upgraded) => upgraded, - Err(_) => return, + let Ok(upgraded) = on_upgrade.await else { + return; }; let socket = diff --git a/viz-handlers/src/serve.rs b/viz-handlers/src/serve.rs index 887d2286..09280c90 100644 --- a/viz-handlers/src/serve.rs +++ b/viz-handlers/src/serve.rs @@ -196,9 +196,10 @@ fn serve(path: &Path, headers: &HeaderMap) -> Result { last_modified.replace(LastModified::from(modified)); } + // See https://github.com/hyperium/headers/pull/155 if let Some((start, end)) = headers .typed_get::() - .and_then(|range| range.iter().next()) + .and_then(|range| range.satisfiable_ranges(100).next()) { let start = match start { Bound::Included(n) => n, From 4cbdadeec4a65bf2d372f9b504dc9e1ca5da9b42 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 27 Nov 2023 09:29:11 +0800 Subject: [PATCH 03/24] chore(examples): markup 0.15 --- Cargo.toml | 1 - examples/templates/markup/Cargo.toml | 2 +- viz-test/Cargo.toml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0440d6f8..645ea1f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,6 @@ thiserror = "1.0" path-tree = "0.7" # http -# TODO: wait headers-v1.0 headers = "0.4" http = "1" http-body = "1" diff --git a/examples/templates/markup/Cargo.toml b/examples/templates/markup/Cargo.toml index ee497407..58245d05 100644 --- a/examples/templates/markup/Cargo.toml +++ b/examples/templates/markup/Cargo.toml @@ -9,5 +9,5 @@ viz.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } -markup = "0.14" +markup = "0.15" v_htmlescape = "0.15" diff --git a/viz-test/Cargo.toml b/viz-test/Cargo.toml index a46ea389..6a86aef4 100644 --- a/viz-test/Cargo.toml +++ b/viz-test/Cargo.toml @@ -19,6 +19,6 @@ viz.workspace = true sessions = { version = "0.5", features = ["memory"] } nano-id = "0.3" -http = "0.2" +http = "=0.2" reqwest = { version = "0.11", features = ["cookies", "json", "multipart"]} tokio = { workspace = true, features = ["full"] } From 08301b65faa43a52eaa150233ccb3a309fc73e4a Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 27 Nov 2023 09:59:01 +0800 Subject: [PATCH 04/24] chore: MSRV --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 645ea1f4..69d9aa52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,6 +39,7 @@ homepage = "https://viz.rs" documentation = "https://docs.rs/viz" repository = "https://github.com/viz-rs/viz" license = "MIT" +rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] viz = { version = "0.5.0-rc.2", path = "viz" } From a1d044d298c174643b037ff197645217e35bfc02 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 27 Nov 2023 10:01:21 +0800 Subject: [PATCH 05/24] chore: MSRV --- viz-core/Cargo.toml | 1 + viz-handlers/Cargo.toml | 1 + viz-macros/Cargo.toml | 1 + viz-router/Cargo.toml | 1 + viz-test/Cargo.toml | 1 + 5 files changed, 5 insertions(+) diff --git a/viz-core/Cargo.toml b/viz-core/Cargo.toml index 70e0a302..b6d8230c 100644 --- a/viz-core/Cargo.toml +++ b/viz-core/Cargo.toml @@ -6,6 +6,7 @@ license.workspace = true authors.workspace = true homepage.workspace = true repository.workspace = true +rust-version.workspace = true readme = "README.md" documentation = "https://docs.rs/viz-core" description = "The core traits and types in for Viz" diff --git a/viz-handlers/Cargo.toml b/viz-handlers/Cargo.toml index 0b077150..d34c6aa9 100644 --- a/viz-handlers/Cargo.toml +++ b/viz-handlers/Cargo.toml @@ -6,6 +6,7 @@ license.workspace = true authors.workspace = true homepage.workspace = true repository.workspace = true +rust-version.workspace = true readme = "README.md" documentation = "https://docs.rs/viz-handlers" description = "The handlers for Viz" diff --git a/viz-macros/Cargo.toml b/viz-macros/Cargo.toml index b206f019..5e2676c5 100644 --- a/viz-macros/Cargo.toml +++ b/viz-macros/Cargo.toml @@ -6,6 +6,7 @@ license.workspace = true authors.workspace = true homepage.workspace = true repository.workspace = true +rust-version.workspace = true readme = "README.md" documentation = "https://docs.rs/viz-macros" description = "The proc macros for Viz" diff --git a/viz-router/Cargo.toml b/viz-router/Cargo.toml index bae3bf21..e4e1a73a 100644 --- a/viz-router/Cargo.toml +++ b/viz-router/Cargo.toml @@ -6,6 +6,7 @@ license.workspace = true authors.workspace = true homepage.workspace = true repository.workspace = true +rust-version.workspace = true readme = "README.md" documentation = "https://docs.rs/viz-router" description = "The router for Viz" diff --git a/viz-test/Cargo.toml b/viz-test/Cargo.toml index 6a86aef4..008e00ef 100644 --- a/viz-test/Cargo.toml +++ b/viz-test/Cargo.toml @@ -6,6 +6,7 @@ license.workspace = true authors.workspace = true homepage.workspace = true repository.workspace = true +rust-version.workspace = true readme = "README.md" documentation = "https://docs.rs/viz-test" description = "The core traits and types in for Viz" From 69b1975d975580f896b73781a099538d54a7b294 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 27 Nov 2023 10:59:30 +0800 Subject: [PATCH 06/24] test(ci): remove rust cache --- .github/workflows/{CI.yml => ci.yml} | 5 ----- 1 file changed, 5 deletions(-) rename .github/workflows/{CI.yml => ci.yml} (90%) diff --git a/.github/workflows/CI.yml b/.github/workflows/ci.yml similarity index 90% rename from .github/workflows/CI.yml rename to .github/workflows/ci.yml index f3b0205c..841165c5 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - - uses: Swatinem/rust-cache@v2 - run: cargo test --workspace --verbose coverage: @@ -39,7 +38,6 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: taiki-e/install-action@cargo-llvm-cov - - uses: Swatinem/rust-cache@v2 - name: Generate code coverage run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info - name: Upload coverage to Codecov @@ -54,7 +52,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@clippy - - uses: Swatinem/rust-cache@v2 - run: cargo clippy --tests fmt: @@ -63,7 +60,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - run: cargo fmt --all -- --check docs: @@ -74,5 +70,4 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - - uses: Swatinem/rust-cache@v2 - run: cargo doc --workspace --all-features --no-deps From 102ae4e0bd7706d109ddaec6ce8e5fce1edf7d86 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Mon, 27 Nov 2023 11:35:34 +0800 Subject: [PATCH 07/24] test(ci): remove RUSTFLAGS env --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 841165c5..e63fa727 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,6 @@ env: CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 - RUSTFLAGS: -Dwarnings RUSTUP_MAX_RETRIES: 10 jobs: From 3d1e46dc1976caa1836eb320df06954e29eeb79d Mon Sep 17 00:00:00 2001 From: Liangdi Date: Wed, 29 Nov 2023 19:46:34 +0800 Subject: [PATCH 08/24] feat(example): sea-orm (#101) --- Cargo.toml | 1 + examples/databases/README.md | 4 + examples/databases/sea-orm/Cargo.toml | 17 ++ examples/databases/sea-orm/README.md | 25 +++ examples/databases/sea-orm/public/index.html | 154 ++++++++++++++++++ examples/databases/sea-orm/sea-orm-demo.gif | Bin 0 -> 353261 bytes examples/databases/sea-orm/src/api.rs | 78 +++++++++ examples/databases/sea-orm/src/db.rs | 54 ++++++ .../databases/sea-orm/src/entities/mod.rs | 2 + .../databases/sea-orm/src/entities/todo.rs | 23 +++ examples/databases/sea-orm/src/lib.rs | 6 + examples/databases/sea-orm/src/main.rs | 34 ++++ 12 files changed, 398 insertions(+) create mode 100644 examples/databases/README.md create mode 100644 examples/databases/sea-orm/Cargo.toml create mode 100644 examples/databases/sea-orm/README.md create mode 100644 examples/databases/sea-orm/public/index.html create mode 100644 examples/databases/sea-orm/sea-orm-demo.gif create mode 100644 examples/databases/sea-orm/src/api.rs create mode 100644 examples/databases/sea-orm/src/db.rs create mode 100644 examples/databases/sea-orm/src/entities/mod.rs create mode 100644 examples/databases/sea-orm/src/entities/todo.rs create mode 100644 examples/databases/sea-orm/src/lib.rs create mode 100644 examples/databases/sea-orm/src/main.rs diff --git a/Cargo.toml b/Cargo.toml index 69d9aa52..c6e458e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ members = [ "examples/templates/*", "examples/tracing", "examples/graceful-shutdown", + "examples/databases/*", ] resolver = "2" diff --git a/examples/databases/README.md b/examples/databases/README.md new file mode 100644 index 00000000..bfd2fe0c --- /dev/null +++ b/examples/databases/README.md @@ -0,0 +1,4 @@ +# Databases + +## Examples +- [sea-orm](./sea-orm/README.md) \ No newline at end of file diff --git a/examples/databases/sea-orm/Cargo.toml b/examples/databases/sea-orm/Cargo.toml new file mode 100644 index 00000000..0c4db0e9 --- /dev/null +++ b/examples/databases/sea-orm/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "sea-orm-example" +version = "0.1.0" +edition.workspace = true +publish = false + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +viz = { workspace = true, features = ["serve"] } +serde.workspace = true + +tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } +sea-orm = { version = "0.12.7", features = ["runtime-tokio-rustls", "sqlx-sqlite"] } + +[lints] +workspace = true diff --git a/examples/databases/sea-orm/README.md b/examples/databases/sea-orm/README.md new file mode 100644 index 00000000..275a3dbd --- /dev/null +++ b/examples/databases/sea-orm/README.md @@ -0,0 +1,25 @@ +# Viz SeaOrm example + +UI inspired by: https://github.com/HapticX/happyx/blob/master/examples/todo/README.md + +## USAGE +sqlite use `in-memory`` mode,every time run the app, content reset! +```base +carog run +``` + +## FUNCTION IMPL + +- [x] list +- [x] create +- [x] update +- [ ] delete + +## SCREENSHOT + +![SeaOrm Demo](./sea-orm-demo.gif) + +## FAQ +- libsqlite3 error: you need install libsqlite3 for your system + +- sea-orm doc: https://www.sea-ql.org/sea-orm-tutorial/ch01-00-build-backend-getting-started.html diff --git a/examples/databases/sea-orm/public/index.html b/examples/databases/sea-orm/public/index.html new file mode 100644 index 00000000..9a20b0fc --- /dev/null +++ b/examples/databases/sea-orm/public/index.html @@ -0,0 +1,154 @@ + + + + + + + + Viz SeaOrm Todo Demo + + + +
+
+
+ + +
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/examples/databases/sea-orm/sea-orm-demo.gif b/examples/databases/sea-orm/sea-orm-demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cce83340f2ae3dfc8d6474feeef72dbf79d9928 GIT binary patch literal 353261 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 z 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�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�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 literal 0 HcmV?d00001 diff --git a/examples/databases/sea-orm/src/api.rs b/examples/databases/sea-orm/src/api.rs new file mode 100644 index 00000000..f3e806c1 --- /dev/null +++ b/examples/databases/sea-orm/src/api.rs @@ -0,0 +1,78 @@ +//! web api mod + +use crate::entities::todo::{ActiveModel, Entity as todoEntity, Model as Todo}; + +use sea_orm::{ + ActiveModelTrait, ActiveValue::NotSet, DatabaseConnection, EntityTrait, Set, TryIntoModel, +}; +use viz::{ + types::{Json, Params, State}, + IntoResponse, Request, RequestExt, Response, ResponseExt, Result, +}; + +/// list todos +/// # Errors +/// - `viz::Error` +pub async fn list(mut req: Request) -> Result { + let State(db) = req.extract::>().await?; + let todos = todoEntity::find() + .all(&db) + .await + .map_err(|err| err.to_string().into_error())?; + Ok(Response::json(todos)?) +} + +/// create todos +/// # Errors +/// - `viz::Error` +pub async fn create(mut req: Request) -> Result { + let (State(db), Json(todo)) = req + .extract::<(State, Json)>() + .await?; + + let mut todo_am: ActiveModel = todo.into(); + todo_am.id = NotSet; + let result = todo_am + .insert(&db) + .await + .map_err(|err| err.to_string().into_error())?; + let todo_new: Todo = result + .try_into_model() + .map_err(|err| err.to_string().into_error())?; + Ok(Response::json(todo_new)?) +} + +/// update todos +/// PUT /todos/:id +/// # Errors +/// - `viz::Error` +pub async fn update(mut req: Request) -> Result { + let (State(db), Params(id), Json(todo)) = req + .extract::<(State, Params, Json)>() + .await?; + let mut todo_am: ActiveModel = todo.clone().into(); + todo_am.id = Set(id); + todo_am.completed = Set(todo.completed); + let model = todo_am + .update(&db) + .await + .map_err(|err| err.to_string().into_error())?; + + Ok(Response::json(model)?) +} + +/// delete todos +/// DELETE /todos/:id +/// # Errors +/// - `viz::Error` +pub async fn delete(mut req: Request) -> Result { + let (State(db), Params(id)) = req + .extract::<(State, Params)>() + .await?; + let delete_result = todoEntity::delete_by_id(id) + .exec(&db) + .await + .map_err(|err| err.to_string().into_error())?; + let rows_affected = delete_result.rows_affected; + Ok(Response::json(rows_affected)?) +} diff --git a/examples/databases/sea-orm/src/db.rs b/examples/databases/sea-orm/src/db.rs new file mode 100644 index 00000000..d8ac6418 --- /dev/null +++ b/examples/databases/sea-orm/src/db.rs @@ -0,0 +1,54 @@ +//! db module , init sqlite db + +use crate::entities::todo::Entity; +use sea_orm::{ + sea_query::{ColumnDef, SqliteQueryBuilder, Table, TableCreateStatement}, + ConnectionTrait, Database, DatabaseConnection, DbBackend, Schema, +}; + +/// +/// # Errors +/// - `DbErr` +pub async fn init_db() -> Result> { + let db = Database::connect("sqlite::memory:").await?; + setup_schema(&db).await; + Ok(db) +} + +/// setup sqlite schema +async fn setup_schema(db: &DatabaseConnection) { + // Setup Schema helper + let schema = Schema::new(DbBackend::Sqlite); + + // Derive from Entity + let stmt: TableCreateStatement = schema.create_table_from_entity(Entity); + + // Or setup manually + assert_eq!( + stmt.build(SqliteQueryBuilder), + Table::create() + .table(Entity) + .col( + ColumnDef::new(::Column::Id) + .primary_key() + .auto_increment() + .integer() + .not_null() + ) + .col( + ColumnDef::new(::Column::Text) + .text() + .not_null() + ) + .col( + ColumnDef::new(::Column::Completed) + .boolean() + .not_null() + ) + //... + .build(SqliteQueryBuilder) + ); + + // Execute create table statement + let _ = db.execute(db.get_database_backend().build(&stmt)).await; +} diff --git a/examples/databases/sea-orm/src/entities/mod.rs b/examples/databases/sea-orm/src/entities/mod.rs new file mode 100644 index 00000000..a8a4793b --- /dev/null +++ b/examples/databases/sea-orm/src/entities/mod.rs @@ -0,0 +1,2 @@ +//! sea-orm entities mod +pub mod todo; diff --git a/examples/databases/sea-orm/src/entities/todo.rs b/examples/databases/sea-orm/src/entities/todo.rs new file mode 100644 index 00000000..80a531d2 --- /dev/null +++ b/examples/databases/sea-orm/src/entities/todo.rs @@ -0,0 +1,23 @@ +//! todo model + +use sea_orm::entity::prelude::*; +use serde::{Deserialize, Serialize}; + +/// +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Deserialize, Serialize)] +#[sea_orm(table_name = "todos")] +pub struct Model { + /// + #[sea_orm(primary_key)] + #[serde[skip_deserializing]] + pub id: i32, + /// + pub text: String, + /// + pub completed: bool, +} +/// +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/examples/databases/sea-orm/src/lib.rs b/examples/databases/sea-orm/src/lib.rs new file mode 100644 index 00000000..d0254bce --- /dev/null +++ b/examples/databases/sea-orm/src/lib.rs @@ -0,0 +1,6 @@ +#![deny(warnings)] +//! `SeaOrm` example for Viz framework. + +pub mod api; +pub mod db; +pub mod entities; diff --git a/examples/databases/sea-orm/src/main.rs b/examples/databases/sea-orm/src/main.rs new file mode 100644 index 00000000..ba968495 --- /dev/null +++ b/examples/databases/sea-orm/src/main.rs @@ -0,0 +1,34 @@ +#![deny(warnings)] +#![allow(clippy::unused_async)] + +//! `SeaOrm` example for Viz framework. +use sea_orm_example::{api, db::init_db}; +use std::{env, net::SocketAddr, sync::Arc}; +use tokio::net::TcpListener; +use viz::{handlers::serve, middleware, serve, types::State, Result, Router, Tree}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + let listener = TcpListener::bind(addr).await?; + + let db = init_db().await?; + + println!("listening on http://{addr}"); + let dir = env::current_dir().unwrap(); + let app = Router::new() + .get("/", serve::File::new(dir.join("public/index.html"))) + .get("/todos", api::list) + .post("/todos", api::create) + .put("/todos/:id", api::update) + .delete("/todos/:id", api::delete) + .with(State::new(db.clone())) + .with(middleware::limits::Config::new()); + let tree = Arc::new(Tree::from(app)); + + loop { + let (stream, addr) = listener.accept().await?; + let tree = tree.clone(); + tokio::task::spawn(serve(stream, tree, Some(addr))); + } +} From 556f667f92c09090dd2e54773efb5d5b9eb99918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=B0=E9=98=85?= <43716063+Baiyuetribe@users.noreply.github.com> Date: Fri, 1 Dec 2023 12:59:59 +0800 Subject: [PATCH 09/24] add Static embed example (#102) * add static-embed * embed * Revert "embed" This reverts commit 15ad319f5b5a8472fc32e2e8418e3e85431c2d7d. * move --- Cargo.toml | 3 +- examples/static-files/static-embed/Cargo.toml | 12 ++++ .../static-embed/html/assets/style.css | 3 + .../static-files/static-embed/html/index.html | 13 +++++ .../static-files/static-embed/src/main.rs | 55 +++++++++++++++++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 examples/static-files/static-embed/Cargo.toml create mode 100644 examples/static-files/static-embed/html/assets/style.css create mode 100644 examples/static-files/static-embed/html/index.html create mode 100644 examples/static-files/static-embed/src/main.rs diff --git a/Cargo.toml b/Cargo.toml index c6e458e8..7f48f0b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ members = [ "examples/unix-socket", "examples/static-files/embed", "examples/static-files/serve", + "examples/static-files/static-embed", "examples/limits", "examples/forms/form", "examples/forms/multipart", @@ -40,7 +41,7 @@ homepage = "https://viz.rs" documentation = "https://docs.rs/viz" repository = "https://github.com/viz-rs/viz" license = "MIT" -rust-version = "1.63" # follows `tokio` and `hyper` +rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] viz = { version = "0.5.0-rc.2", path = "viz" } diff --git a/examples/static-files/static-embed/Cargo.toml b/examples/static-files/static-embed/Cargo.toml new file mode 100644 index 00000000..011985f3 --- /dev/null +++ b/examples/static-files/static-embed/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "static-embed" +version = "0.1.0" +edition.workspace = true +publish = false + +[dependencies] +viz.workspace = true +include_dir = "0.7.3" +http-body-util = "0.1" + +tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } diff --git a/examples/static-files/static-embed/html/assets/style.css b/examples/static-files/static-embed/html/assets/style.css new file mode 100644 index 00000000..5b652ae9 --- /dev/null +++ b/examples/static-files/static-embed/html/assets/style.css @@ -0,0 +1,3 @@ +h2 { + color: red; +} diff --git a/examples/static-files/static-embed/html/index.html b/examples/static-files/static-embed/html/index.html new file mode 100644 index 00000000..679e4dfe --- /dev/null +++ b/examples/static-files/static-embed/html/index.html @@ -0,0 +1,13 @@ + + + + + + Document + + + +

hello word!

+

hello word!

+ + diff --git a/examples/static-files/static-embed/src/main.rs b/examples/static-files/static-embed/src/main.rs new file mode 100644 index 00000000..fd9947c0 --- /dev/null +++ b/examples/static-files/static-embed/src/main.rs @@ -0,0 +1,55 @@ +#![deny(warnings)] +#![allow(clippy::unused_async)] + +use http_body_util::Full; +use include_dir::{include_dir, Dir}; +use std::{net::SocketAddr, sync::Arc}; +use tokio::net::TcpListener; +use viz::{ + serve, IntoResponse, Request, RequestExt, Response, ResponseExt, Result, Router, StatusCode, + Tree, +}; + +const ASSETS: Dir = include_dir!("examples/static-files/static-embed/html"); // frontend dir + +pub async fn index(_: Request) -> Result { + let file_content = ASSETS + .get_file("index.html") + .unwrap() + .contents_utf8() + .unwrap(); + Ok(Response::html(file_content)) +} + +pub async fn assets(req: Request) -> Result { + let path = req.path().trim_start_matches('/'); + if path.contains("..") { + return Ok(StatusCode::FORBIDDEN.into_response()); + } + Ok(match ASSETS.get_file(path) { + Some(v) => { + let data = v.contents(); + Response::builder().body(Full::from(data).into())? + } + None => StatusCode::NOT_FOUND.into_response(), + }) +} + +#[tokio::main] +async fn main() -> Result<()> { + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + let listener = TcpListener::bind(addr).await?; + println!("listening on http://{addr}"); + + let app = Router::new() + .any("/*", |_| async { Ok(StatusCode::NOT_FOUND) }) + .get("/", index) + .get("/*", assets); + let tree = Arc::new(Tree::from(app)); + + loop { + let (stream, addr) = listener.accept().await?; + let tree = tree.clone(); + tokio::task::spawn(serve(stream, tree, Some(addr))); + } +} From 2869844cd750bcea79603b6163c72cbebd1db7fb Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Fri, 1 Dec 2023 21:06:36 +0800 Subject: [PATCH 10/24] chore(examples): rename static-embed to include-dir --- .../static-files/{static-embed => include-dir}/Cargo.toml | 8 ++++---- .../{static-embed => include-dir}/html/assets/style.css | 0 .../{static-embed => include-dir}/html/index.html | 0 .../{static-embed => include-dir}/src/main.rs | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename examples/static-files/{static-embed => include-dir}/Cargo.toml (82%) rename examples/static-files/{static-embed => include-dir}/html/assets/style.css (100%) rename examples/static-files/{static-embed => include-dir}/html/index.html (100%) rename examples/static-files/{static-embed => include-dir}/src/main.rs (100%) diff --git a/examples/static-files/static-embed/Cargo.toml b/examples/static-files/include-dir/Cargo.toml similarity index 82% rename from examples/static-files/static-embed/Cargo.toml rename to examples/static-files/include-dir/Cargo.toml index 011985f3..8080e100 100644 --- a/examples/static-files/static-embed/Cargo.toml +++ b/examples/static-files/include-dir/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "static-embed" +name = "include-dir" version = "0.1.0" edition.workspace = true publish = false [dependencies] viz.workspace = true -include_dir = "0.7.3" -http-body-util = "0.1" - tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } + +include_dir = "0.7" +http-body-util = "0.1" diff --git a/examples/static-files/static-embed/html/assets/style.css b/examples/static-files/include-dir/html/assets/style.css similarity index 100% rename from examples/static-files/static-embed/html/assets/style.css rename to examples/static-files/include-dir/html/assets/style.css diff --git a/examples/static-files/static-embed/html/index.html b/examples/static-files/include-dir/html/index.html similarity index 100% rename from examples/static-files/static-embed/html/index.html rename to examples/static-files/include-dir/html/index.html diff --git a/examples/static-files/static-embed/src/main.rs b/examples/static-files/include-dir/src/main.rs similarity index 100% rename from examples/static-files/static-embed/src/main.rs rename to examples/static-files/include-dir/src/main.rs From 8114d0c4de32df6627adae0d56be34a4e5708120 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Fri, 1 Dec 2023 21:11:39 +0800 Subject: [PATCH 11/24] fix(cargo): include-dir path --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 7f48f0b5..44e93691 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ "examples/unix-socket", "examples/static-files/embed", "examples/static-files/serve", - "examples/static-files/static-embed", + "examples/static-files/include-dir", "examples/limits", "examples/forms/form", "examples/forms/multipart", From ebbd771478dfa8ec9735c11673858e57b2ba6d8a Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 09:42:08 +0800 Subject: [PATCH 12/24] fix(cargo): include-dir path --- examples/static-files/include-dir/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/static-files/include-dir/src/main.rs b/examples/static-files/include-dir/src/main.rs index fd9947c0..64218e76 100644 --- a/examples/static-files/include-dir/src/main.rs +++ b/examples/static-files/include-dir/src/main.rs @@ -10,7 +10,7 @@ use viz::{ Tree, }; -const ASSETS: Dir = include_dir!("examples/static-files/static-embed/html"); // frontend dir +const ASSETS: Dir = include_dir!("examples/static-files/include-dir/html"); // frontend dir pub async fn index(_: Request) -> Result { let file_content = ASSETS From 0a0a7f70094dc17c77471738f799b0009d4d765f Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 10:40:24 +0800 Subject: [PATCH 13/24] chore(examples): update deps --- examples/routing/openapi/Cargo.toml | 2 +- examples/static-routes/Cargo.toml | 2 +- examples/templates/tera/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/routing/openapi/Cargo.toml b/examples/routing/openapi/Cargo.toml index c2daeaf6..7e8ba191 100644 --- a/examples/routing/openapi/Cargo.toml +++ b/examples/routing/openapi/Cargo.toml @@ -13,4 +13,4 @@ serde_json.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } utoipa = "4" -utoipa-swagger-ui = "4" +utoipa-swagger-ui = "5" diff --git a/examples/static-routes/Cargo.toml b/examples/static-routes/Cargo.toml index 3c13eb22..798134b7 100644 --- a/examples/static-routes/Cargo.toml +++ b/examples/static-routes/Cargo.toml @@ -9,4 +9,4 @@ viz.workspace = true hyper.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } -once_cell = "1.17" +once_cell = "1.18" diff --git a/examples/templates/tera/Cargo.toml b/examples/templates/tera/Cargo.toml index b02cf390..b69cb145 100644 --- a/examples/templates/tera/Cargo.toml +++ b/examples/templates/tera/Cargo.toml @@ -10,4 +10,4 @@ viz.workspace = true serde.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } tera = "1.18" -once_cell = "1.17" +once_cell = "1.18" From 07630ccd31c33ab07e779752681aed45c79aecd9 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 11:22:40 +0800 Subject: [PATCH 14/24] bump: v0.5.0 --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 44e93691..b68de22c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ members = [ resolver = "2" [workspace.package] -version = "0.5.0-rc.2" +version = "0.5.0" authors = ["Fangdun Tsai "] edition = "2021" homepage = "https://viz.rs" @@ -44,10 +44,10 @@ license = "MIT" rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] -viz = { version = "0.5.0-rc.2", path = "viz" } -viz-core = { version = "0.5.0-rc.2", path = "viz-core" } -viz-router = { version = "0.5.0-rc.2", path = "viz-router" } -viz-handlers = { version = "0.5.0-rc.2", path = "viz-handlers", default-features = false } +viz = { version = "0.5.0", path = "viz" } +viz-core = { version = "0.5.0", path = "viz-core" } +viz-router = { version = "0.5.0", path = "viz-router" } +viz-handlers = { version = "0.5.0", path = "viz-handlers", default-features = false } viz-macros = { version = "0.1", path = "viz-macros" } viz-test = { version = "0.1", path = "viz-test" } From 8d3fb42a9efc430148729610b526f27ec6f5658f Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 21:53:02 +0800 Subject: [PATCH 15/24] chore: move some tests to viz --- Cargo.toml | 2 +- viz-core/Cargo.toml | 2 - viz-core/tests/request.rs | 291 +---------------- viz-core/tests/response.rs | 27 -- viz/Cargo.toml | 7 + {viz-core => viz}/tests/body.rs | 0 .../type_payload.rs => viz/tests/payload.rs | 0 viz/tests/request.rs | 303 ++++++++++++++++++ viz/tests/response.rs | 152 +++++++++ 9 files changed, 465 insertions(+), 319 deletions(-) rename {viz-core => viz}/tests/body.rs (100%) rename viz-core/tests/type_payload.rs => viz/tests/payload.rs (100%) create mode 100644 viz/tests/request.rs create mode 100644 viz/tests/response.rs diff --git a/Cargo.toml b/Cargo.toml index b68de22c..578df91f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ license = "MIT" rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] -viz = { version = "0.5.0", path = "viz" } +viz = { version = "0.5.0-rc.2", path = "viz" } viz-core = { version = "0.5.0", path = "viz-core" } viz-router = { version = "0.5.0", path = "viz-router" } viz-handlers = { version = "0.5.0", path = "viz-handlers", default-features = false } diff --git a/viz-core/Cargo.toml b/viz-core/Cargo.toml index b6d8230c..4964d33b 100644 --- a/viz-core/Cargo.toml +++ b/viz-core/Cargo.toml @@ -99,8 +99,6 @@ tokio-stream = { workspace = true, optional = true } tokio-util = { workspace = true, optional = true } [dev-dependencies] -viz = { workspace = true, features = ["session"] } -viz-test.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } [package.metadata.docs.rs] diff --git a/viz-core/tests/request.rs b/viz-core/tests/request.rs index afaca620..e1f74c65 100644 --- a/viz-core/tests/request.rs +++ b/viz-core/tests/request.rs @@ -1,6 +1,4 @@ -use std::collections::{BTreeMap, HashMap}; - -use headers::{authorization::Bearer, Authorization, ContentType, HeaderValue}; +use headers::{ContentType, HeaderValue}; use http::uri::Scheme; use serde::{Deserialize, Serialize}; use viz_core::{ @@ -8,14 +6,10 @@ use viz_core::{ // header::{AUTHORIZATION, CONTENT_TYPE, COOKIE, SET_COOKIE}, // StatusCode, header::CONTENT_TYPE, - types::{self, PayloadError}, - Error, + types::PayloadError, IncomingBody, - IntoResponse, Request, RequestExt, - Response, - ResponseExt, Result, }; @@ -70,284 +64,3 @@ fn request_ext() -> Result<()> { Ok(()) } - -#[tokio::test] -async fn request_body() -> Result<()> { - use futures_util::stream::TryStreamExt; - use viz::{ - middleware::{cookie, limits}, - Router, - }; - use viz_test::http::{ - header::{AUTHORIZATION, COOKIE}, - StatusCode, - }; - use viz_test::TestServer; - - let router = Router::new() - .get("/:id", |req: Request| async move { - let id = req.param::("id")?; - Ok(id) - }) - .get("/:username/:repo", |req: Request| async move { - let (username, repo): (String, String) = req.params()?; - Ok(format!("{username}/{repo}")) - }) - .get("/extract-token", |mut req: Request| async move { - let header: types::Header> = req.extract().await?; - Ok(header.into_inner().token().to_string()) - }) - .post("/extract-body", |mut req: Request| async move { - let form: types::Form> = req.extract().await?; - Ok(Response::json(form.into_inner())) - }) - .get("/cookies", |req: Request| async move { - let cookies = req.cookies()?; - let jar = cookies - .jar() - .lock() - .map_err(|e| Error::Responder(e.to_string().into_response()))?; - Ok(jar.iter().count().to_string()) - }) - .get("/cookie", |req: Request| async move { - Ok(req.cookie("viz").unwrap().value().to_string()) - }) - .with(cookie::Config::default()) - .post("/bytes", |mut req: Request| async move { - let data = req.bytes().await?; - Ok(data) - }) - .post("/bytes-with-limit", |mut req: Request| async move { - let data = req.bytes_with(None, 4).await?; - Ok(data) - }) - .post("/bytes-used", |mut req: Request| async move { - req.bytes().await?; - let data = req.bytes().await?; - Ok(data) - }) - .post("/text", |mut req: Request| async move { - let data = req.text().await?; - Ok(Response::text(data)) - }) - .post("/json", |mut req: Request| async move { - let data = req.json::().await?; - Ok(Response::json(data)) - }) - .post("/form", |mut req: Request| async move { - let data = req.form::>().await?; - Ok(Response::json(data)) - }) - .post("/multipart", |mut req: Request| async move { - let mut multipart = req.multipart().await?; - let mut data = HashMap::new(); - - while let Some(mut field) = multipart.try_next().await? { - let buf = field.bytes().await?.to_vec(); - data.insert(field.name, String::from_utf8(buf).map_err(Error::normal)?); - } - - Ok(Response::json(data)) - }) - .with(limits::Config::new().limits(types::Limits::new())); - - let client = TestServer::new(router).await?; - - let resp = client.get("/7").send().await.map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "7"); - - let resp = client - .get("/viz-rs/viz") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "viz-rs/viz"); - - let resp = client - .get("/extract-token") - .header(AUTHORIZATION, "Bearer viz.rs") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "viz.rs"); - - let mut form = BTreeMap::new(); - form.insert("password", "rs"); - form.insert("username", "viz"); - let resp = client - .post("/extract-body") - .form(&form) - .send() - .await - .map_err(Error::normal)?; - assert_eq!( - resp.text().await.map_err(Error::normal)?, - r#"{"password":"rs","username":"viz"}"# - ); - - let resp = client - .get("/cookie") - .header(COOKIE, "viz=crate") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "crate"); - - let resp = client - .get("/cookies") - .header(COOKIE, "auth=true;dark=false") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "2"); - - let resp = client - .post("/bytes") - .body("bytes") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "bytes"); - - let resp = client - .post("/bytes-with-limit") - .body("rust") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.status(), StatusCode::OK); - assert_eq!(resp.text().await.map_err(Error::normal)?, "rust"); - - let resp = client - .post("/bytes-with-limit") - .body("crate") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.status(), StatusCode::PAYLOAD_TOO_LARGE); - assert_eq!( - resp.text().await.map_err(Error::normal)?, - "payload is too large" - ); - - let resp = client - .post("/bytes-used") - .body("used") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.status(), StatusCode::INTERNAL_SERVER_ERROR); - assert_eq!( - resp.text().await.map_err(Error::normal)?, - "payload has been used" - ); - - let resp = client - .post("/text") - .body("text") - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "text"); - - let resp = client - .post("/json") - .json(&Page { p: 1 }) - .send() - .await - .map_err(Error::normal)?; - assert_eq!( - resp.json::().await.map_err(Error::normal)?, - Page { p: 1 } - ); - - let mut form = HashMap::new(); - form.insert("username", "viz"); - form.insert("password", "rs"); - let resp = client - .post("/form") - .form(&form) - .send() - .await - .map_err(Error::normal)?; - assert_eq!( - resp.json::>() - .await - .map_err(Error::normal)?, - { - let mut form = HashMap::new(); - form.insert("username".to_string(), "viz".to_string()); - form.insert("password".to_string(), "rs".to_string()); - form - } - ); - - let form = viz_test::multipart::Form::new() - .text("key3", "3") - .text("key4", "4"); - let resp = client - .post("/multipart") - .multipart(form) - .send() - .await - .map_err(Error::normal)?; - assert_eq!( - resp.json::>() - .await - .map_err(Error::normal)?, - { - let mut form = HashMap::new(); - form.insert("key3".to_string(), "3".to_string()); - form.insert("key4".to_string(), "4".to_string()); - form - } - ); - - Ok(()) -} - -#[tokio::test] -async fn request_session() -> Result<()> { - use viz::{ - middleware::{cookie, helper::CookieOptions, session}, - Router, - }; - use viz_test::http::header::{COOKIE, SET_COOKIE}; - use viz_test::{nano_id, sessions, TestServer}; - - let router = Router::new() - .post("/session/set", |req: Request| async move { - let counter = req.session().get::("counter")?.unwrap_or_default() + 1; - req.session().set("counter", counter)?; - Ok(counter.to_string()) - }) - .with(session::Config::new( - session::Store::new( - sessions::MemoryStorage::new(), - nano_id::base64::<32>, - |sid: &str| sid.len() == 32, - ), - CookieOptions::default(), - )) - .with(cookie::Config::default()); - - let client = TestServer::new(router).await?; - - let resp = client - .post("/session/set") - .send() - .await - .map_err(Error::normal)?; - let cookie = resp.headers().get(SET_COOKIE).cloned().unwrap(); - assert_eq!(resp.text().await.map_err(Error::normal)?, "1"); - - let resp = client - .post("/session/set") - .header(COOKIE, cookie) - .send() - .await - .map_err(Error::normal)?; - assert_eq!(resp.text().await.map_err(Error::normal)?, "2"); - - Ok(()) -} diff --git a/viz-core/tests/response.rs b/viz-core/tests/response.rs index 763b8c25..b3bbcb05 100644 --- a/viz-core/tests/response.rs +++ b/viz-core/tests/response.rs @@ -123,30 +123,3 @@ async fn response_ext() -> Result<()> { fn response_ext_panic() { Response::redirect_with_status("/oauth", StatusCode::OK); } - -#[tokio::test] -async fn response_ext_with_server() -> Result<()> { - use viz::{Request, Router}; - use viz_test::TestServer; - - let router = Router::new() - .get("/", |_: Request| async move { Ok("") }) - .post("/", |_: Request| async move { - Ok(Response::with( - Full::new("".into()), - mime::TEXT_XML.as_ref(), - )) - }); - - let client = TestServer::new(router).await?; - - let resp = client.get("/").send().await.map_err(Error::normal)?; - assert_eq!(resp.content_length(), Some(0)); - assert_eq!(resp.text().await.map_err(Error::normal)?, ""); - - let resp = client.post("/").send().await.map_err(Error::normal)?; - assert_eq!(resp.content_length(), Some(6)); - assert_eq!(resp.text().await.map_err(Error::normal)?, ""); - - Ok(()) -} diff --git a/viz/Cargo.toml b/viz/Cargo.toml index e1aaf52b..047706a8 100644 --- a/viz/Cargo.toml +++ b/viz/Cargo.toml @@ -81,6 +81,13 @@ tokio-rustls = { workspace = true, optional = true } tokio-native-tls = { workspace = true, optional = true } [dev-dependencies] +viz-test.workspace = true +bytes.workspace = true +headers.workspace = true +http.workspace = true +http-body-util.workspace = true +mime.workspace = true +serde.workspace = true tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] } [package.metadata.docs.rs] diff --git a/viz-core/tests/body.rs b/viz/tests/body.rs similarity index 100% rename from viz-core/tests/body.rs rename to viz/tests/body.rs diff --git a/viz-core/tests/type_payload.rs b/viz/tests/payload.rs similarity index 100% rename from viz-core/tests/type_payload.rs rename to viz/tests/payload.rs diff --git a/viz/tests/request.rs b/viz/tests/request.rs new file mode 100644 index 00000000..f0659d91 --- /dev/null +++ b/viz/tests/request.rs @@ -0,0 +1,303 @@ +use std::collections::{BTreeMap, HashMap}; + +use headers::{authorization::Bearer, Authorization}; +use serde::{Deserialize, Serialize}; +use viz_core::{ + // TODO: reqwest and hyper haven't used the same version of `http`. + // header::{AUTHORIZATION, CONTENT_TYPE, COOKIE, SET_COOKIE}, + // StatusCode, + types::{self}, + Error, + IntoResponse, + Request, + RequestExt, + Response, + ResponseExt, + Result, +}; + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +struct Page { + p: u8, +} + +#[tokio::test] +async fn request_body() -> Result<()> { + use futures_util::stream::TryStreamExt; + use viz::{ + middleware::{cookie, limits}, + Router, + }; + use viz_test::http::{ + header::{AUTHORIZATION, COOKIE}, + StatusCode, + }; + use viz_test::TestServer; + + let router = Router::new() + .get("/:id", |req: Request| async move { + let id = req.param::("id")?; + Ok(id) + }) + .get("/:username/:repo", |req: Request| async move { + let (username, repo): (String, String) = req.params()?; + Ok(format!("{username}/{repo}")) + }) + .get("/extract-token", |mut req: Request| async move { + let header: types::Header> = req.extract().await?; + Ok(header.into_inner().token().to_string()) + }) + .post("/extract-body", |mut req: Request| async move { + let form: types::Form> = req.extract().await?; + Ok(Response::json(form.into_inner())) + }) + .get("/cookies", |req: Request| async move { + let cookies = req.cookies()?; + let jar = cookies + .jar() + .lock() + .map_err(|e| Error::Responder(e.to_string().into_response()))?; + Ok(jar.iter().count().to_string()) + }) + .get("/cookie", |req: Request| async move { + Ok(req.cookie("viz").unwrap().value().to_string()) + }) + .with(cookie::Config::default()) + .post("/bytes", |mut req: Request| async move { + let data = req.bytes().await?; + Ok(data) + }) + .post("/bytes-with-limit", |mut req: Request| async move { + let data = req.bytes_with(None, 4).await?; + Ok(data) + }) + .post("/bytes-used", |mut req: Request| async move { + req.bytes().await?; + let data = req.bytes().await?; + Ok(data) + }) + .post("/text", |mut req: Request| async move { + let data = req.text().await?; + Ok(Response::text(data)) + }) + .post("/json", |mut req: Request| async move { + let data = req.json::().await?; + Ok(Response::json(data)) + }) + .post("/form", |mut req: Request| async move { + let data = req.form::>().await?; + Ok(Response::json(data)) + }) + .post("/multipart", |mut req: Request| async move { + let mut multipart = req.multipart().await?; + let mut data = HashMap::new(); + + while let Some(mut field) = multipart.try_next().await? { + let buf = field.bytes().await?.to_vec(); + data.insert(field.name, String::from_utf8(buf).map_err(Error::normal)?); + } + + Ok(Response::json(data)) + }) + .with(limits::Config::new().limits(types::Limits::new())); + + let client = TestServer::new(router).await?; + + let resp = client.get("/7").send().await.map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "7"); + + let resp = client + .get("/viz-rs/viz") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "viz-rs/viz"); + + let resp = client + .get("/extract-token") + .header(AUTHORIZATION, "Bearer viz.rs") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "viz.rs"); + + let mut form = BTreeMap::new(); + form.insert("password", "rs"); + form.insert("username", "viz"); + let resp = client + .post("/extract-body") + .form(&form) + .send() + .await + .map_err(Error::normal)?; + assert_eq!( + resp.text().await.map_err(Error::normal)?, + r#"{"password":"rs","username":"viz"}"# + ); + + let resp = client + .get("/cookie") + .header(COOKIE, "viz=crate") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "crate"); + + let resp = client + .get("/cookies") + .header(COOKIE, "auth=true;dark=false") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "2"); + + let resp = client + .post("/bytes") + .body("bytes") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "bytes"); + + let resp = client + .post("/bytes-with-limit") + .body("rust") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.status(), StatusCode::OK); + assert_eq!(resp.text().await.map_err(Error::normal)?, "rust"); + + let resp = client + .post("/bytes-with-limit") + .body("crate") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.status(), StatusCode::PAYLOAD_TOO_LARGE); + assert_eq!( + resp.text().await.map_err(Error::normal)?, + "payload is too large" + ); + + let resp = client + .post("/bytes-used") + .body("used") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.status(), StatusCode::INTERNAL_SERVER_ERROR); + assert_eq!( + resp.text().await.map_err(Error::normal)?, + "payload has been used" + ); + + let resp = client + .post("/text") + .body("text") + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "text"); + + let resp = client + .post("/json") + .json(&Page { p: 1 }) + .send() + .await + .map_err(Error::normal)?; + assert_eq!( + resp.json::().await.map_err(Error::normal)?, + Page { p: 1 } + ); + + let mut form = HashMap::new(); + form.insert("username", "viz"); + form.insert("password", "rs"); + let resp = client + .post("/form") + .form(&form) + .send() + .await + .map_err(Error::normal)?; + assert_eq!( + resp.json::>() + .await + .map_err(Error::normal)?, + { + let mut form = HashMap::new(); + form.insert("username".to_string(), "viz".to_string()); + form.insert("password".to_string(), "rs".to_string()); + form + } + ); + + let form = viz_test::multipart::Form::new() + .text("key3", "3") + .text("key4", "4"); + let resp = client + .post("/multipart") + .multipart(form) + .send() + .await + .map_err(Error::normal)?; + assert_eq!( + resp.json::>() + .await + .map_err(Error::normal)?, + { + let mut form = HashMap::new(); + form.insert("key3".to_string(), "3".to_string()); + form.insert("key4".to_string(), "4".to_string()); + form + } + ); + + Ok(()) +} + +#[tokio::test] +async fn request_session() -> Result<()> { + use viz::{ + middleware::{cookie, helper::CookieOptions, session}, + Router, + }; + use viz_test::http::header::{COOKIE, SET_COOKIE}; + use viz_test::{nano_id, sessions, TestServer}; + + let router = Router::new() + .post("/session/set", |req: Request| async move { + let counter = req.session().get::("counter")?.unwrap_or_default() + 1; + req.session().set("counter", counter)?; + Ok(counter.to_string()) + }) + .with(session::Config::new( + session::Store::new( + sessions::MemoryStorage::new(), + nano_id::base64::<32>, + |sid: &str| sid.len() == 32, + ), + CookieOptions::default(), + )) + .with(cookie::Config::default()); + + let client = TestServer::new(router).await?; + + let resp = client + .post("/session/set") + .send() + .await + .map_err(Error::normal)?; + let cookie = resp.headers().get(SET_COOKIE).cloned().unwrap(); + assert_eq!(resp.text().await.map_err(Error::normal)?, "1"); + + let resp = client + .post("/session/set") + .header(COOKIE, cookie) + .send() + .await + .map_err(Error::normal)?; + assert_eq!(resp.text().await.map_err(Error::normal)?, "2"); + + Ok(()) +} diff --git a/viz/tests/response.rs b/viz/tests/response.rs new file mode 100644 index 00000000..763b8c25 --- /dev/null +++ b/viz/tests/response.rs @@ -0,0 +1,152 @@ +use futures_util::{stream, Stream, StreamExt}; +use headers::{ContentDisposition, ContentType, HeaderMapExt}; +use http_body_util::{BodyExt, Full}; +use hyper::body::Body; +use serde::{Deserialize, Serialize}; +use viz_core::{ + header::{CONTENT_DISPOSITION, CONTENT_LOCATION, LOCATION}, + Error, OutgoingBody, Response, ResponseExt, Result, StatusCode, +}; + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +struct Page { + p: u8, +} + +#[tokio::test] +async fn response_ext() -> Result<()> { + let resp = Response::with(Full::new("".into()), mime::TEXT_XML.as_ref()); + assert!(resp.ok()); + assert!(resp.content_length().is_none()); + let content_type = resp.headers().typed_get::(); + assert_eq!( + Into::::into(content_type.unwrap()), + mime::TEXT_XML + ); + + let body: OutgoingBody = resp.into_body(); + assert_eq!(Body::size_hint(&body).exact(), Some(b"".len() as u64)); + assert_eq!( + BodyExt::collect(body).await.unwrap().to_bytes().to_vec(), + b"" + ); + + let mut resp = Response::text(""); + *resp.status_mut() = StatusCode::NOT_FOUND; + assert!(!resp.ok()); + let content_type = resp.headers().typed_get::(); + assert_eq!( + Into::::into(content_type.unwrap()), + mime::TEXT_PLAIN_UTF_8 + ); + let mut body: OutgoingBody = resp.into_body(); + assert_eq!(Body::size_hint(&body).exact(), Some(0)); + assert!(body.frame().await.is_none()); + assert!(body.is_end_stream()); + + let resp = Response::html(""); + assert!(resp.ok()); + let content_type = resp.headers().typed_get::(); + assert_eq!( + Into::::into(content_type.unwrap()), + mime::TEXT_HTML_UTF_8 + ); + let mut body: OutgoingBody = resp.into_body(); + assert_eq!(Body::size_hint(&body).exact(), Some(7)); + assert_eq!( + body.frame().await.unwrap().unwrap().into_data().unwrap(), + "" + ); + assert!(body.is_end_stream()); + + let resp = Response::json(Page { p: 255 })?; + assert!(resp.ok()); + let content_type = resp.headers().typed_get::(); + assert_eq!( + Into::::into(content_type.unwrap()), + mime::APPLICATION_JSON + ); + + let resp = Response::stream(stream::repeat("viz").take(2).map(Result::<_, Error>::Ok)); + assert!(resp.ok()); + let body: OutgoingBody = resp.into_body(); + assert_eq!(Stream::size_hint(&body), (0, None)); + let (item, stream) = body.into_future().await; + assert_eq!(item.unwrap().unwrap().to_vec(), b"viz"); + let (item, stream) = stream.into_future().await; + assert_eq!(item.unwrap().unwrap().to_vec(), b"viz"); + let (item, _) = stream.into_future().await; + assert!(item.is_none()); + + let resp = Response::attachment("inline"); + let content_disposition = resp.headers().typed_get::().unwrap(); + assert!(content_disposition.is_inline()); + + let resp = Response::attachment("attachment"); + let content_disposition = resp.headers().typed_get::().unwrap(); + assert!(content_disposition.is_attachment()); + + let resp = Response::attachment(r#"attachment; filename="filename.jpg""#); + let content_disposition = resp.headers().get(CONTENT_DISPOSITION).unwrap(); + assert_eq!( + content_disposition, + r#"attachment; filename="filename.jpg""# + ); + + let resp = Response::location("/login"); + let location = resp.headers().get(CONTENT_LOCATION).unwrap(); + assert_eq!(location, "/login"); + + let resp = Response::redirect("/oauth"); + let location = resp.headers().get(LOCATION).unwrap(); + assert_eq!(location, "/oauth"); + + let resp = Response::redirect_with_status("/oauth", StatusCode::TEMPORARY_REDIRECT); + let location = resp.headers().get(LOCATION).unwrap(); + assert_eq!(location, "/oauth"); + assert_eq!(resp.status(), 307); + + let resp = Response::see_other("/oauth"); + assert_eq!(resp.status(), 303); + + let resp = Response::temporary("/oauth"); + assert_eq!(resp.status(), 307); + + let resp = Response::permanent("/oauth"); + assert_eq!(resp.status(), 308); + + Ok(()) +} + +#[test] +#[should_panic(expected = "not a redirection status code")] +fn response_ext_panic() { + Response::redirect_with_status("/oauth", StatusCode::OK); +} + +#[tokio::test] +async fn response_ext_with_server() -> Result<()> { + use viz::{Request, Router}; + use viz_test::TestServer; + + let router = Router::new() + .get("/", |_: Request| async move { Ok("") }) + .post("/", |_: Request| async move { + Ok(Response::with( + Full::new("".into()), + mime::TEXT_XML.as_ref(), + )) + }); + + let client = TestServer::new(router).await?; + + let resp = client.get("/").send().await.map_err(Error::normal)?; + assert_eq!(resp.content_length(), Some(0)); + assert_eq!(resp.text().await.map_err(Error::normal)?, ""); + + let resp = client.post("/").send().await.map_err(Error::normal)?; + assert_eq!(resp.content_length(), Some(6)); + assert_eq!(resp.text().await.map_err(Error::normal)?, ""); + + Ok(()) +} From 7145e74ea7e5df5d3d512653eee5bc0fea5a8777 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 22:22:40 +0800 Subject: [PATCH 16/24] chore: move some tests to viz-tests --- viz-test/Cargo.toml | 9 ++++++++- {viz => viz-test}/tests/body.rs | 7 +++---- {viz => viz-test}/tests/payload.rs | 2 +- {viz => viz-test}/tests/request.rs | 2 +- {viz => viz-test}/tests/response.rs | 2 +- viz/Cargo.toml | 7 ------- 6 files changed, 14 insertions(+), 15 deletions(-) rename {viz => viz-test}/tests/body.rs (98%) rename {viz => viz-test}/tests/payload.rs (97%) rename {viz => viz-test}/tests/request.rs (99%) rename {viz => viz-test}/tests/response.rs (99%) diff --git a/viz-test/Cargo.toml b/viz-test/Cargo.toml index 008e00ef..05e8b342 100644 --- a/viz-test/Cargo.toml +++ b/viz-test/Cargo.toml @@ -12,11 +12,18 @@ documentation = "https://docs.rs/viz-test" description = "The core traits and types in for Viz" keywords = ["async", "framework", "http", "service", "web"] categories = ["asynchronous", "network-programming", "web-programming"] -publish = false [dependencies] viz.workspace = true +bytes.workspace = true +futures-util.workspace = true +headers.workspace = true +http-body.workspace = true +http-body-util.workspace = true +hyper.workspace = true +mime.workspace = true +serde.workspace = true sessions = { version = "0.5", features = ["memory"] } nano-id = "0.3" diff --git a/viz/tests/body.rs b/viz-test/tests/body.rs similarity index 98% rename from viz/tests/body.rs rename to viz-test/tests/body.rs index e35d9c0d..ffed2441 100644 --- a/viz/tests/body.rs +++ b/viz-test/tests/body.rs @@ -1,11 +1,10 @@ use http_body_util::{combinators::BoxBody, BodyExt, Full}; -use viz_core::{Bytes, Error, IncomingBody, OutgoingBody, Request, RequestExt, Result}; +use viz::{Bytes, Error, IncomingBody, OutgoingBody, Request, RequestExt, Result}; #[tokio::test] async fn incoming_body() -> Result<()> { use bytes::Buf; - use viz::Router; - use viz_core::Body; + use viz::{Body, Router}; use viz_test::TestServer; let mut empty = IncomingBody::Empty; @@ -135,7 +134,7 @@ async fn incoming_stream() -> Result<()> { #[tokio::test] async fn outgoing_body() -> Result<()> { - use viz_core::Body; + use viz::Body; let mut empty = OutgoingBody::::Empty; assert!(empty.is_end_stream()); diff --git a/viz/tests/payload.rs b/viz-test/tests/payload.rs similarity index 97% rename from viz/tests/payload.rs rename to viz-test/tests/payload.rs index b8db5383..2161abd4 100644 --- a/viz/tests/payload.rs +++ b/viz-test/tests/payload.rs @@ -1,5 +1,5 @@ use std::collections::HashMap; -use viz_core::{types, Error, Request, RequestExt, Response, ResponseExt, Result}; +use viz::{types, Error, Request, RequestExt, Response, ResponseExt, Result}; #[tokio::test] async fn payload() -> Result<()> { diff --git a/viz/tests/request.rs b/viz-test/tests/request.rs similarity index 99% rename from viz/tests/request.rs rename to viz-test/tests/request.rs index f0659d91..4c80d193 100644 --- a/viz/tests/request.rs +++ b/viz-test/tests/request.rs @@ -2,7 +2,7 @@ use std::collections::{BTreeMap, HashMap}; use headers::{authorization::Bearer, Authorization}; use serde::{Deserialize, Serialize}; -use viz_core::{ +use viz::{ // TODO: reqwest and hyper haven't used the same version of `http`. // header::{AUTHORIZATION, CONTENT_TYPE, COOKIE, SET_COOKIE}, // StatusCode, diff --git a/viz/tests/response.rs b/viz-test/tests/response.rs similarity index 99% rename from viz/tests/response.rs rename to viz-test/tests/response.rs index 763b8c25..0a67b9e8 100644 --- a/viz/tests/response.rs +++ b/viz-test/tests/response.rs @@ -3,7 +3,7 @@ use headers::{ContentDisposition, ContentType, HeaderMapExt}; use http_body_util::{BodyExt, Full}; use hyper::body::Body; use serde::{Deserialize, Serialize}; -use viz_core::{ +use viz::{ header::{CONTENT_DISPOSITION, CONTENT_LOCATION, LOCATION}, Error, OutgoingBody, Response, ResponseExt, Result, StatusCode, }; diff --git a/viz/Cargo.toml b/viz/Cargo.toml index 047706a8..e1aaf52b 100644 --- a/viz/Cargo.toml +++ b/viz/Cargo.toml @@ -81,13 +81,6 @@ tokio-rustls = { workspace = true, optional = true } tokio-native-tls = { workspace = true, optional = true } [dev-dependencies] -viz-test.workspace = true -bytes.workspace = true -headers.workspace = true -http.workspace = true -http-body-util.workspace = true -mime.workspace = true -serde.workspace = true tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] } [package.metadata.docs.rs] From 24f224fb45a820e2f8b6cb0c6ed735f42609fc88 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 2 Dec 2023 22:27:35 +0800 Subject: [PATCH 17/24] chore: viz-test --- viz-test/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 viz-test/README.md diff --git a/viz-test/README.md b/viz-test/README.md new file mode 100644 index 00000000..71709cdb --- /dev/null +++ b/viz-test/README.md @@ -0,0 +1,30 @@ +

+ +

+ +

+ Viz Test +

+ +
+

Viz Test

+
+ +
+ + + Safety! + + + Docs.rs docs + + + Crates.io version + + + Download +
From 7fc08df47bb0d4e6ae719f1cba56b1cc67b9ad1b Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sun, 3 Dec 2023 14:12:02 +0800 Subject: [PATCH 18/24] fix(cargo): viz version --- Cargo.toml | 2 +- viz/README.md | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 578df91f..b68de22c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ license = "MIT" rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] -viz = { version = "0.5.0-rc.2", path = "viz" } +viz = { version = "0.5.0", path = "viz" } viz-core = { version = "0.5.0", path = "viz-core" } viz-router = { version = "0.5.0", path = "viz-router" } viz-handlers = { version = "0.5.0", path = "viz-handlers", default-features = false } diff --git a/viz/README.md b/viz/README.md index e697804e..7c29ea59 100644 --- a/viz/README.md +++ b/viz/README.md @@ -37,10 +37,6 @@ alt="Discord"> -> **Note**: viz's [main](https://github.com/viz-rs/viz) branch is -> currently preparing breaking changes. For the most recently *released* code, -> look to the [0.4.x branch](https://github.com/viz-rs/viz/tree/0.4.x). - ## Features - **Safety** `#![forbid(unsafe_code)]` From c90addf954fe0365e4f0a1cc650e4df852274342 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sun, 3 Dec 2023 14:51:16 +0800 Subject: [PATCH 19/24] fix(clippy): remove is_64 --- viz-core/src/middleware/csrf.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/viz-core/src/middleware/csrf.rs b/viz-core/src/middleware/csrf.rs index 55152276..40584707 100644 --- a/viz-core/src/middleware/csrf.rs +++ b/viz-core/src/middleware/csrf.rs @@ -97,7 +97,7 @@ where Some(raw_token) => base64::engine::general_purpose::URL_SAFE_NO_PAD .decode(raw_token) .ok() - .filter(is_64) + .filter(|b| b.len() == 64) .map(unmask::<32>) .map(Option::Some) .ok_or_else(|| { @@ -252,10 +252,13 @@ pub fn generate(secret: &[u8], otp: Vec) -> Vec { /// Verifys Token with a secret #[must_use] pub fn verify(secret: &[u8], raw_token: String) -> bool { - if let Ok(token) = base64::engine::general_purpose::URL_SAFE_NO_PAD.decode(raw_token) { - return is_64(&token) && secret == unmask::<32>(token); - } - false + base64::engine::general_purpose::URL_SAFE_NO_PAD + .decode(raw_token) + .ok() + .filter(|b| b.len() == 64) + .map(unmask::<32>) + .filter(|t| t == secret) + .is_some() } /// Retures masked token @@ -282,10 +285,6 @@ fn unmask(mut token: Vec) -> Vec { secret } -fn is_64(buf: &Vec) -> bool { - buf.len() == 64 -} - #[cfg(test)] mod tests { use super::*; From df8deecf5d6b0fbd3b4bb4e3a2b78816e6ecc1bc Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sun, 3 Dec 2023 15:43:10 +0800 Subject: [PATCH 20/24] fix(handlers): root path "/" without filename in serve --- examples/README.md | 2 +- examples/static-files/serve/src/main.rs | 6 +++++- viz-handlers/src/serve/directory.rs | 10 +++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/examples/README.md b/examples/README.md index e6395a1c..2eddf67f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -32,7 +32,7 @@ Here you can find a lot of small crabs 🦀. ## Usage -### Run it +### Run it in `viz` directory ```console $ cargo run --bin hello-world -- --nocapture diff --git a/examples/static-files/serve/src/main.rs b/examples/static-files/serve/src/main.rs index b35ea63a..eac6aa3f 100644 --- a/examples/static-files/serve/src/main.rs +++ b/examples/static-files/serve/src/main.rs @@ -15,12 +15,16 @@ async fn main() -> Result<()> { let listener = TcpListener::bind(addr).await?; println!("listening on http://{addr}"); + // in `viz` directory let dir = env::current_dir().unwrap(); let app = Router::new() .get("/", index) .get("/cargo.toml", serve::File::new(dir.join("Cargo.toml"))) - .get("/examples/*", serve::Dir::new(dir).listing()) + .get( + "/examples/*", + serve::Dir::new(dir.join("examples")).listing(), + ) .any("/*", |_| async { Ok(Response::text("Welcome!")) }); let tree = Arc::new(Tree::from(app)); diff --git a/viz-handlers/src/serve/directory.rs b/viz-handlers/src/serve/directory.rs index a43ec367..196cbc9b 100644 --- a/viz-handlers/src/serve/directory.rs +++ b/viz-handlers/src/serve/directory.rs @@ -6,7 +6,7 @@ use std::{ ffi::OsStr, fmt::{Display, Formatter, Result}, fs::read_dir, - path::PathBuf, + path::{Path, PathBuf}, str::FromStr, string::ToString, }; @@ -24,7 +24,7 @@ impl Directory { pub(crate) fn new( base: &str, prev: bool, - root: &std::path::Path, + root: &Path, unlisted: &Option>, ) -> Option { let mut entries = read_dir(root).ok()?; @@ -66,7 +66,11 @@ impl Directory { 0, ( parent.join("").to_str()?.strip_prefix('/')?.to_string(), - parent.file_name().and_then(OsStr::to_str)?.to_string(), + parent + .file_name() + .and_then(OsStr::to_str) + .unwrap_or("") + .to_string(), false, None, "..".to_string(), From 2a7836eb02225d352304bec063fdc3821d1fac28 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sun, 3 Dec 2023 16:46:44 +0800 Subject: [PATCH 21/24] bump: v0.5.1 --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b68de22c..f20a4cb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ members = [ resolver = "2" [workspace.package] -version = "0.5.0" +version = "0.5.1" authors = ["Fangdun Tsai "] edition = "2021" homepage = "https://viz.rs" @@ -44,10 +44,10 @@ license = "MIT" rust-version = "1.63" # follows `tokio` and `hyper` [workspace.dependencies] -viz = { version = "0.5.0", path = "viz" } -viz-core = { version = "0.5.0", path = "viz-core" } -viz-router = { version = "0.5.0", path = "viz-router" } -viz-handlers = { version = "0.5.0", path = "viz-handlers", default-features = false } +viz = { version = "0.5.1", path = "viz" } +viz-core = { version = "0.5.1", path = "viz-core" } +viz-router = { version = "0.5.1", path = "viz-router" } +viz-handlers = { version = "0.5.1", path = "viz-handlers", default-features = false } viz-macros = { version = "0.1", path = "viz-macros" } viz-test = { version = "0.1", path = "viz-test" } From 4a771bec8681b68b095616873790d307fd776b0d Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Tue, 5 Dec 2023 17:57:54 +0800 Subject: [PATCH 22/24] feat(examples): enable tracing on embed (#105) * feat(examples): enable tracing on embed * fix(ci): docs --- .github/workflows/ci.yml | 1 + examples/static-files/embed/Cargo.toml | 11 +++++++++++ examples/static-files/embed/src/main.rs | 3 +++ 3 files changed, 15 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e63fa727..ea3ac5e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,6 +65,7 @@ jobs: name: Doc runs-on: ubuntu-latest env: + RUSTFLAGS: --cfg hyper_unstable_tracing RUSTDOCFLAGS: -Dwarnings --cfg docsrs steps: - uses: actions/checkout@v4 diff --git a/examples/static-files/embed/Cargo.toml b/examples/static-files/embed/Cargo.toml index 73f24174..a5445f17 100644 --- a/examples/static-files/embed/Cargo.toml +++ b/examples/static-files/embed/Cargo.toml @@ -4,8 +4,19 @@ version = "0.1.0" edition.workspace = true publish = false +[features] +tracing = [ + "dep:hyper", + "dep:tracing", + "dep:tracing-subscriber" +] + [dependencies] viz = { workspace = true, features = ["embed"] } tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } rust-embed.workspace = true + +hyper = { workspace = true, features = ["tracing"], optional = true } +tracing = { workspace = true, optional = true } +tracing-subscriber = { workspace = true, features = ["env-filter"], optional = true } diff --git a/examples/static-files/embed/src/main.rs b/examples/static-files/embed/src/main.rs index 5e880e5d..8c7cdb58 100644 --- a/examples/static-files/embed/src/main.rs +++ b/examples/static-files/embed/src/main.rs @@ -10,6 +10,9 @@ struct Asset; #[tokio::main] async fn main() -> Result<()> { + #[cfg(feature = "tracing")] + tracing_subscriber::fmt::init(); + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); let listener = TcpListener::bind(addr).await?; println!("listening on http://{addr}"); From cb618681cae78d6f52e80e01d12c9af076b687e2 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Thu, 7 Dec 2023 23:33:00 +0800 Subject: [PATCH 23/24] chore(examples): once_cell 0.19 --- examples/static-routes/Cargo.toml | 2 +- examples/templates/tera/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/static-routes/Cargo.toml b/examples/static-routes/Cargo.toml index 798134b7..cc9fb714 100644 --- a/examples/static-routes/Cargo.toml +++ b/examples/static-routes/Cargo.toml @@ -9,4 +9,4 @@ viz.workspace = true hyper.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } -once_cell = "1.18" +once_cell = "1.19" diff --git a/examples/templates/tera/Cargo.toml b/examples/templates/tera/Cargo.toml index b69cb145..13b740a7 100644 --- a/examples/templates/tera/Cargo.toml +++ b/examples/templates/tera/Cargo.toml @@ -10,4 +10,4 @@ viz.workspace = true serde.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } tera = "1.18" -once_cell = "1.18" +once_cell = "1.19" From cfdac85b2106f3c56e93517b8360753f6e496735 Mon Sep 17 00:00:00 2001 From: Fangdun Tsai Date: Sat, 9 Dec 2023 13:34:17 +0800 Subject: [PATCH 24/24] chore(deps): tokio 1.35, tokio-ungstensite 0.21 --- Cargo.toml | 4 ++-- examples/databases/sea-orm/Cargo.toml | 4 +--- examples/static-files/embed/README.md | 5 +++++ 3 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 examples/static-files/embed/README.md diff --git a/Cargo.toml b/Cargo.toml index f20a4cb7..a3c094f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,8 +72,8 @@ hyper = { version = "1", features = ["server"] } hyper-util = { version = "0.1", features = ["server-auto", "tokio"] } futures-util = "0.3" -tokio = { version = "1.33", features = ["net"] } -tokio-tungstenite = "0.20" +tokio = { version = "1.35", features = ["net"] } +tokio-tungstenite = "0.21" tokio-stream = "0.1" tokio-util = "0.7" rustls-pemfile = "1.0" diff --git a/examples/databases/sea-orm/Cargo.toml b/examples/databases/sea-orm/Cargo.toml index 0c4db0e9..2f4199b7 100644 --- a/examples/databases/sea-orm/Cargo.toml +++ b/examples/databases/sea-orm/Cargo.toml @@ -4,14 +4,12 @@ version = "0.1.0" edition.workspace = true publish = false -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] viz = { workspace = true, features = ["serve"] } serde.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "macros" ] } -sea-orm = { version = "0.12.7", features = ["runtime-tokio-rustls", "sqlx-sqlite"] } +sea-orm = { version = "0.12", features = ["runtime-tokio-rustls", "sqlx-sqlite"] } [lints] workspace = true diff --git a/examples/static-files/embed/README.md b/examples/static-files/embed/README.md new file mode 100644 index 00000000..338af464 --- /dev/null +++ b/examples/static-files/embed/README.md @@ -0,0 +1,5 @@ +## embed + +```console +RUSTFLAGS="--cfg hyper_unstable_tracing" RUST_LOG='trace,hyper=trace' cargo run --bin embed --features tracing +```