[package]
edition = "2024"
rust-version = "1.99"
name = "sofie-http"
version = "0.4.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "The HTTP server, areas, routes and the handler model."
homepage = "https://sofie.rs"
readme = false
license = "MIT OR Apache-2.0"
repository = "https://github.com/sofie-rs/sofie"
[package.metadata.docs.rs]
all-features = true
[features]
browser-telemetry = ["engine"]
chosen-screens = ["engine"]
client-headers = []
clients = [
"engine",
"gates",
"sofie-engine/clients",
"dep:serde",
"serde/derive",
]
compression = [
"dep:brotli",
"dep:flate2",
"sofie-engine?/compression",
]
cors = []
csv = []
default = ["engine"]
development = [
"engine",
"parse",
"sofie-engine/development",
]
engine = [
"dep:sofie-engine",
"dep:sofie-values",
]
entitlements = ["gates"]
etag = ["sofie-db/etag"]
flags = [
"gates",
"dep:sofie-flags",
]
flows = []
gates = ["sofie-engine?/gates"]
groups = [
"gates",
"sofie-db/children",
]
history = ["sofie-db/history"]
i18n = [
"engine",
"gates",
"sofie-engine/i18n",
]
idempotency = ["sofie-db/idempotency"]
islands = [
"engine",
"sofie-engine/islands",
]
jobs = ["sofie-db/jobs"]
listing = [
"engine",
"gates",
"sofie-db/listing",
"sofie-engine/listing",
"sofie-values/filter",
]
live = [
"engine",
"sofie-db/live",
]
menu = [
"engine",
"gates",
]
metrics = [
"sofie-telemetry/metrics",
"sofie-db/metrics",
]
parse = [
"engine",
"sofie-engine/parse",
]
permissions = ["gates"]
product-events = ["sofie-telemetry/product-events"]
remote-contracts = [
"dep:serde",
"sofie-db/remote-contracts",
]
resources = [
"gates",
"listing",
"parse",
"sofie-db/resources",
]
screen-cache = [
"engine",
"sofie-db/live",
]
session-list = [
"client-headers",
"sofie-db/live",
]
shield = ["sofie-db/shield"]
signed-links = []
steps = []
storage = [
"dep:sofie-storage",
"tokio/sync",
]
testing = []
tls = [
"dep:rustls",
"dep:tokio-rustls",
]
tokens = ["permissions"]
toolbar = [
"engine",
"sofie-telemetry/development",
"sofie-flags?/toolbar",
"sofie-core/development",
]
trusted-proxies = []
uploads = [
"storage",
"dep:serde",
"serde/derive",
]
webhooks = ["idempotency"]
[lib]
name = "sofie_http"
path = "src/lib.rs"
[[test]]
name = "actions"
path = "tests/actions.rs"
[[test]]
name = "actor"
path = "tests/actor.rs"
[[test]]
name = "clients"
path = "tests/clients.rs"
[[test]]
name = "content_security"
path = "tests/content_security.rs"
[[test]]
name = "cors"
path = "tests/cors.rs"
[[test]]
name = "csv"
path = "tests/csv.rs"
[[test]]
name = "documents"
path = "tests/documents.rs"
[[test]]
name = "entitled_tags"
path = "tests/entitled_tags.rs"
[[test]]
name = "etag"
path = "tests/etag.rs"
[[test]]
name = "gates"
path = "tests/gates.rs"
[[test]]
name = "hardening"
path = "tests/hardening.rs"
[[test]]
name = "idempotency"
path = "tests/idempotency.rs"
[[test]]
name = "live"
path = "tests/live.rs"
[[test]]
name = "middleware"
path = "tests/middleware.rs"
[[test]]
name = "modules"
path = "tests/modules.rs"
[[test]]
name = "observability"
path = "tests/observability.rs"
[[test]]
name = "preferred_language"
path = "tests/preferred_language.rs"
[[test]]
name = "queue"
path = "tests/queue.rs"
[[test]]
name = "screen_cache"
path = "tests/screen_cache.rs"
[[test]]
name = "server"
path = "tests/server.rs"
[[test]]
name = "session_cache"
path = "tests/session_cache.rs"
[[test]]
name = "sessions"
path = "tests/sessions.rs"
[[test]]
name = "shield"
path = "tests/shield.rs"
[[test]]
name = "signed_pages"
path = "tests/signed_pages.rs"
[[test]]
name = "telemetry"
path = "tests/telemetry.rs"
[[test]]
name = "tls"
path = "tests/tls.rs"
[[test]]
name = "toolbar"
path = "tests/toolbar.rs"
[[test]]
name = "toolbar_release"
path = "tests/toolbar_release.rs"
[[test]]
name = "uploads"
path = "tests/uploads.rs"
[[test]]
name = "withheld"
path = "tests/withheld.rs"
[dependencies.brotli]
version = "=9.0.0"
features = ["std"]
optional = true
default-features = false
[dependencies.bytes]
version = "1.12.1"
[dependencies.flate2]
version = "=1.1.10"
optional = true
[dependencies.http]
version = "1.5.0"
[dependencies.http-body-util]
version = "0.1.5"
[dependencies.hyper]
version = "1.12.0"
features = [
"http1",
"http2",
"server",
]
[dependencies.hyper-util]
version = "0.1.21"
features = [
"tokio",
"server-auto",
"server-graceful",
]
[dependencies.matchit]
version = "0.9.2"
[dependencies.rustls]
version = "=0.23.45"
features = [
"ring",
"std",
"tls12",
]
optional = true
default-features = false
[dependencies.serde]
version = "1.0.229"
optional = true
[dependencies.serde_json]
version = "1.0.151"
[dependencies.sofie-auth]
version = "0.4.0"
[dependencies.sofie-core]
version = "0.4.0"
[dependencies.sofie-db]
version = "0.4.0"
[dependencies.sofie-engine]
version = "0.4.0"
optional = true
[dependencies.sofie-flags]
version = "0.4.0"
optional = true
[dependencies.sofie-storage]
version = "0.4.0"
optional = true
[dependencies.sofie-telemetry]
version = "0.4.0"
[dependencies.sofie-values]
version = "0.4.0"
optional = true
[dependencies.tokio]
version = "1.53.2"
features = [
"rt",
"net",
"sync",
"time",
]
[dependencies.tokio-rustls]
version = "=0.26.6"
features = [
"ring",
"tls12",
]
optional = true
default-features = false
[dependencies.tracing]
version = "0.1.44"
features = ["std"]
default-features = false
[dev-dependencies.rustls]
version = "=0.23.45"
features = [
"ring",
"std",
"tls12",
]
default-features = false
[dev-dependencies.tokio]
version = "1.53.2"
features = [
"rt",
"io-util",
"macros",
"sync",
"test-util",
]
[dev-dependencies.tokio-rustls]
version = "=0.26.6"
features = [
"ring",
"tls12",
]
default-features = false
[build-dependencies.sofie-engine]
version = "0.4.0"
features = ["compile"]
optional = true
[lints.clippy]
missing_errors_doc = "allow"
missing_panics_doc = "allow"
unused_async = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
unsafe_code = "forbid"