[package]
edition = "2021"
name = "ullun-api"
version = "0.4.9"
authors = ["yedoma-labs"]
build = false
exclude = [
".github/*",
".dockerignore",
".githooks/*",
"release-plz.toml",
"Dockerfile",
"target/*",
"bench/*",
"scripts/*",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Express.js-inspired web framework for Rust - simple, fast, batteries-included"
homepage = "https://github.com/yedoma-labs/ullun-api"
documentation = "https://docs.rs/ullun-api"
readme = "README.md"
keywords = [
"web",
"framework",
"api",
"microservices",
"http",
]
categories = ["web-programming::http-server"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/yedoma-labs/ullun-api"
[package.metadata.docs.rs]
all-features = true
[features]
client-tls = [
"dep:tokio-rustls",
"dep:webpki-roots",
]
compression = ["dep:flate2"]
default = []
full = [
"jwt",
"compression",
"websocket",
"tls",
"client-tls",
]
jwt = [
"dep:hmac",
"dep:sha2",
"dep:base64",
]
tls = ["dep:tokio-rustls"]
websocket = [
"dep:tokio-tungstenite",
"dep:futures-util",
]
[lib]
name = "ullun"
path = "src/lib.rs"
[[example]]
name = "blog"
path = "examples/blog/main.rs"
[[example]]
name = "chat"
path = "examples/chat/main.rs"
required-features = [
"websocket",
"jwt",
]
[[example]]
name = "complete_api"
path = "examples/complete_api.rs"
[[example]]
name = "drive"
path = "examples/drive/main.rs"
[[example]]
name = "features_0_2_0"
path = "examples/features_0_2_0.rs"
[[example]]
name = "full_api"
path = "examples/full_api.rs"
[[example]]
name = "gateway"
path = "examples/gateway/main.rs"
[[example]]
name = "hello_world"
path = "examples/hello_world.rs"
[[example]]
name = "html_forms"
path = "examples/html_forms.rs"
[[example]]
name = "jwt_auth"
path = "examples/jwt_auth.rs"
required-features = ["jwt"]
[[example]]
name = "microservice"
path = "examples/microservice.rs"
[[example]]
name = "orders"
path = "examples/orders/main.rs"
[[example]]
name = "pastebin"
path = "examples/pastebin/main.rs"
[[example]]
name = "public_api"
path = "examples/public_api.rs"
[[example]]
name = "realtime_chat"
path = "examples/realtime_chat.rs"
required-features = ["websocket"]
[[example]]
name = "secure_api"
path = "examples/secure_api/main.rs"
required-features = ["tls"]
[[example]]
name = "shortener"
path = "examples/shortener/main.rs"
[[example]]
name = "spa_backend"
path = "examples/spa_backend.rs"
[[example]]
name = "statuspage"
path = "examples/statuspage/main.rs"
[[example]]
name = "taskboard"
path = "examples/taskboard/main.rs"
required-features = ["jwt"]
[[example]]
name = "templates_site"
path = "examples/templates_site.rs"
required-features = ["compression"]
[[example]]
name = "todo_api"
path = "examples/todo_api.rs"
[[example]]
name = "webhook_receiver"
path = "examples/webhook_receiver.rs"
[[example]]
name = "webhooks"
path = "examples/webhooks/main.rs"
[[test]]
name = "body_limit_test"
path = "tests/body_limit_test.rs"
[[test]]
name = "cache_test"
path = "tests/cache_test.rs"
[[test]]
name = "client_test"
path = "tests/client_test.rs"
[[test]]
name = "conditional_test"
path = "tests/conditional_test.rs"
[[test]]
name = "cors_test"
path = "tests/cors_test.rs"
[[test]]
name = "e2e_test"
path = "tests/e2e_test.rs"
[[test]]
name = "example_blog"
path = "tests/example_blog.rs"
[[test]]
name = "example_chat"
path = "tests/example_chat.rs"
[[test]]
name = "example_drive"
path = "tests/example_drive.rs"
[[test]]
name = "example_gateway"
path = "tests/example_gateway.rs"
[[test]]
name = "example_orders"
path = "tests/example_orders.rs"
[[test]]
name = "example_pastebin"
path = "tests/example_pastebin.rs"
[[test]]
name = "example_secure_api"
path = "tests/example_secure_api.rs"
[[test]]
name = "example_shortener"
path = "tests/example_shortener.rs"
[[test]]
name = "example_statuspage"
path = "tests/example_statuspage.rs"
[[test]]
name = "example_taskboard"
path = "tests/example_taskboard.rs"
[[test]]
name = "example_webhooks"
path = "tests/example_webhooks.rs"
[[test]]
name = "files_test"
path = "tests/files_test.rs"
[[test]]
name = "health_test"
path = "tests/health_test.rs"
[[test]]
name = "idempotency_test"
path = "tests/idempotency_test.rs"
[[test]]
name = "integration_test"
path = "tests/integration_test.rs"
[[test]]
name = "limits_test"
path = "tests/limits_test.rs"
[[test]]
name = "middleware_test"
path = "tests/middleware_test.rs"
[[test]]
name = "observability_test"
path = "tests/observability_test.rs"
[[test]]
name = "openapi_test"
path = "tests/openapi_test.rs"
[[test]]
name = "pentest"
path = "tests/pentest.rs"
[[test]]
name = "problem_test"
path = "tests/problem_test.rs"
[[test]]
name = "routing_test"
path = "tests/routing_test.rs"
[[test]]
name = "session_test"
path = "tests/session_test.rs"
[[test]]
name = "shutdown_test"
path = "tests/shutdown_test.rs"
[[test]]
name = "state_test"
path = "tests/state_test.rs"
[[test]]
name = "static_files_test"
path = "tests/static_files_test.rs"
[[test]]
name = "streaming_test"
path = "tests/streaming_test.rs"
[[test]]
name = "testing_test"
path = "tests/testing_test.rs"
[[test]]
name = "tls_test"
path = "tests/tls_test.rs"
[[test]]
name = "websocket_test"
path = "tests/websocket_test.rs"
[[bench]]
name = "http_benchmark"
path = "benches/http_benchmark.rs"
harness = false
[[bench]]
name = "middleware_benchmark"
path = "benches/middleware_benchmark.rs"
harness = false
[[bench]]
name = "router_benchmark"
path = "benches/router_benchmark.rs"
harness = false
[dependencies.async-trait]
version = "0.1.92"
[dependencies.base64]
version = "0.23"
optional = true
[dependencies.bytes]
version = "1.12"
[dependencies.flate2]
version = "1.1"
optional = true
[dependencies.futures-util]
version = "0.3"
features = ["sink"]
optional = true
default-features = false
[dependencies.getrandom]
version = "0.4"
[dependencies.hmac]
version = "0.13"
optional = true
[dependencies.http]
version = "1.5"
[dependencies.http-body-util]
version = "0.1.5"
[dependencies.hyper]
version = "1.12"
features = ["full"]
[dependencies.hyper-util]
version = "0.1.21"
features = ["tokio"]
[dependencies.matchit]
version = "0.9.2"
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.154"
[dependencies.serde_urlencoded]
version = "0.7.1"
[dependencies.sha2]
version = "0.11"
optional = true
[dependencies.tokio]
version = "1.54"
features = ["full"]
[dependencies.tokio-rustls]
version = "0.26"
features = [
"ring",
"tls12",
]
optional = true
default-features = false
[dependencies.tokio-tungstenite]
version = "0.30"
features = ["handshake"]
optional = true
default-features = false
[dependencies.urlencoding]
version = "2.1.3"
[dependencies.webpki-roots]
version = "1.0"
optional = true
[dev-dependencies.argon2]
version = "0.6"
[dev-dependencies.chrono]
version = "0.4.45"
features = ["clock"]
default-features = false
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.hmac]
version = "0.13"
[dev-dependencies.hyper-util]
version = "0.1.21"
features = [
"client-legacy",
"http1",
"tokio",
]
[dev-dependencies.pulldown-cmark]
version = "0.13"
features = ["html"]
default-features = false
[dev-dependencies.rcgen]
version = "0.14"
features = [
"crypto",
"pem",
"ring",
]
default-features = false
[dev-dependencies.sha2]
version = "0.11"
[dev-dependencies.tokio-tungstenite]
version = "0.30"
features = ["connect"]