[workspace] [workspace.package] license = "MIT OR Apache-2.0" edition = "2021" categories = [ "web-programming", "web-programming::http-server", "web-programming::websocket", "network-programming", "asynchronous", ] keywords = ["web", "framework", "server", "http"] [workspace.dependencies] bytes = "1" http = "1" http-body = "1" http-body-util = "0.1" futures-util = "0.3" thiserror = "1" mime = "0.3" [workspace.lints.rust] unsafe_code = "forbid" [package] name = "argan" version = "0.1.2" description = "A web framework for Rust." authors = ["Shohruh Adham"] license.workspace = true edition.workspace = true categories.workspace = true keywords.workspace = true repository = "https://github.com/argan-rs/argan" readme = "README.md" exclude = [".github"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [features] cookies = ["dep:cookie"] private-cookies = ["cookies", "cookie/private", "cookie/key-expansion"] signed-cookies = ["cookies", "cookie/signed", "cookie/key-expansion"] query-params = ["dep:serde_urlencoded"] json = ["dep:serde_json", "multer/json"] form = ["dep:serde_urlencoded"] multipart-form = ["dep:multer"] sse = [] file-stream = ["dep:rand", "dep:mime_guess", "dep:flate2", "dep:brotli"] websockets = ["dep:fastwebsockets", "dep:base64", "dep:sha1"] peer-addr = [] tls = ["dep:tokio-rustls"] full = [ "regex", "private-cookies", "signed-cookies", "query-params", "json", "form", "multipart-form", "sse", "file-stream", "websockets", "peer-addr", "tls", ] default = ["private-cookies", "query-params", "json", "form"] [dependencies] argan-core = { version = "0.1", path = "argan-core" } bytes = { workspace = true } http = { workspace = true } http-body = { workspace = true } http-body-util = { workspace = true } futures-util = { workspace = true } thiserror = {workspace = true} mime = { workspace = true } httparse = "1" httpdate = "1" hyper = { version = "1", features = ["full"] } hyper-util = { version = "0.1", features = ["server-auto", "server-graceful", "tokio"] } percent-encoding = "2" pin-project = "1" serde = { version = "1", features = ["derive"] } tokio = { version = "1", features = ["macros", "signal"] } tower-layer = "0.3" tower-service = "0.3" # optional regex = { version = "1", optional = true } cookie = { version = "0.18", features = ["percent-encode"], optional = true } serde_json = { version = "1", optional = true } serde_urlencoded = { version = "0.7", optional = true } multer = { version = "3", optional = true } mime_guess = { version = "2", optional = true } brotli = { version = "6", optional = true} flate2 = { version = "1", optional = true } rand = { version = "0.8", default-features = false, features = ["small_rng"], optional = true } fastwebsockets = { version = "0.7", features = ["upgrade"], optional = true } base64 = { version = "0.22", optional = true } sha1 = { version = "0.10", optional = true } tokio-rustls = { version = "0.26", default-features = false, optional = true } [dev-dependencies] tokio = { version = "1", features = ["rt-multi-thread", "macros", "test-util", "parking_lot"] } criterion = { version = "0.5", features = ["async_tokio"] } tower-http = { version = "0.5", features = ["compression-gzip", "decompression-gzip", "timeout"] } rustls-pemfile = "2" rustls-pki-types = "1" rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs"] } [[bench]] name = "request_routing" harness = false