tower-http 0.6.1

Tower middleware and utilities for HTTP clients and servers
Documentation
[package]
name = "tower-http"
description = "Tower middleware and utilities for HTTP clients and servers"
version = "0.6.1"
authors = ["Tower Maintainers <team@tower-rs.com>"]
edition = "2018"
license = "MIT"
readme = "../README.md"
repository = "https://github.com/tower-rs/tower-http"
homepage = "https://github.com/tower-rs/tower-http"
categories = ["asynchronous", "network-programming", "web-programming"]
keywords = ["io", "async", "futures", "service", "http"]
rust-version = "1.66"

[dependencies]
bitflags = "2.0.2"
bytes = "1"
http = "1.0"
pin-project-lite = "0.2.7"
tower-layer = "0.3.3"
tower-service = "0.3"

# optional dependencies
async-compression = { version = "0.4", optional = true, features = ["tokio"] }
base64 = { version = "0.22", optional = true }
futures-core = { version = "0.3", optional = true, default-features = false }
futures-util = { version = "0.3.14", optional = true, default-features = false }
http-body = { version = "1.0.0", optional = true }
http-body-util = { version = "0.1.0", optional = true }
http-range-header = { version = "0.4.0", optional = true }
iri-string = { version = "0.7.0", optional = true }
mime = { version = "0.3.17", optional = true, default-features = false }
mime_guess = { version = "2", optional = true, default-features = false }
percent-encoding = { version = "2.1.0", optional = true }
tokio = { version = "1.6", optional = true, default-features = false }
tokio-util = { version = "0.7", optional = true, default-features = false, features = ["io"] }
tower = { version = "0.5", optional = true }
tracing = { version = "0.1", default-features = false, optional = true }
httpdate = { version = "1.0", optional = true }
uuid = { version = "1.0", features = ["v4"], optional = true }

[dev-dependencies]
async-trait = "0.1"
brotli = "6"
bytes = "1"
flate2 = "1.0"
futures-util = "0.3.14"
http-body = "1.0.0"
http-body-util = "0.1.0"
hyper-util = { version = "0.1", features = ["client-legacy", "http1", "tokio"] }
once_cell = "1"
serde_json = "1.0"
sync_wrapper = "1"
tokio = { version = "1", features = ["full"] }
tower = { version = "0.5", features = ["buffer", "util", "retry", "make", "timeout"] }
tracing-subscriber = "0.3"
uuid = { version = "1.0", features = ["v4"] }
zstd = "0.13"

[features]
default = []
full = [
    "add-extension",
    "auth",
    "catch-panic",
    "compression-full",
    "cors",
    "decompression-full",
    "follow-redirect",
    "fs",
    "limit",
    "map-request-body",
    "map-response-body",
    "metrics",
    "normalize-path",
    "propagate-header",
    "redirect",
    "request-id",
    "sensitive-headers",
    "set-header",
    "set-status",
    "timeout",
    "trace",
    "util",
    "validate-request",
]

add-extension = []
auth = ["base64", "validate-request"]
catch-panic = ["tracing", "futures-util/std", "dep:http-body", "dep:http-body-util"]
cors = []
follow-redirect = ["futures-util", "dep:http-body", "iri-string", "tower/util"]
fs = ["futures-util", "dep:http-body", "dep:http-body-util", "tokio/fs", "tokio-util/io", "tokio/io-util", "dep:http-range-header", "mime_guess", "mime", "percent-encoding", "httpdate", "set-status", "futures-util/alloc", "tracing"]
limit = ["dep:http-body", "dep:http-body-util"]
map-request-body = []
map-response-body = []
metrics = ["dep:http-body", "tokio/time"]
normalize-path = []
propagate-header = []
redirect = []
request-id = ["uuid"]
sensitive-headers = []
set-header = []
set-status = []
timeout = ["dep:http-body", "tokio/time"]
trace = ["dep:http-body", "tracing"]
util = ["tower"]
validate-request = ["mime"]

compression-br = ["async-compression/brotli", "futures-core", "dep:http-body", "tokio-util", "tokio"]
compression-deflate = ["async-compression/zlib", "futures-core", "dep:http-body", "tokio-util", "tokio"]
compression-full = ["compression-br", "compression-deflate", "compression-gzip", "compression-zstd"]
compression-gzip = ["async-compression/gzip", "futures-core", "dep:http-body", "tokio-util", "tokio"]
compression-zstd = ["async-compression/zstd", "futures-core", "dep:http-body", "tokio-util", "tokio"]

decompression-br = ["async-compression/brotli", "futures-core", "dep:http-body", "dep:http-body-util", "tokio-util", "tokio"]
decompression-deflate = ["async-compression/zlib", "futures-core", "dep:http-body", "dep:http-body-util", "tokio-util", "tokio"]
decompression-full = ["decompression-br", "decompression-deflate", "decompression-gzip", "decompression-zstd"]
decompression-gzip = ["async-compression/gzip", "futures-core", "dep:http-body", "dep:http-body-util", "tokio-util", "tokio"]
decompression-zstd = ["async-compression/zstd", "futures-core", "dep:http-body", "dep:http-body-util", "tokio-util", "tokio"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[package.metadata.playground]
features = ["full"]

[package.metadata.cargo-public-api-crates]
allowed = [
    "bytes",
    "http",
    "http_body",
    "mime",
    "tokio",
    "tower",
    "tower_layer",
    "tower_service",
    "tracing",
    "tracing_core",
]