[package]
name = "localsend"
version = "0.1.0"
edition = "2021"

[dependencies]
anyhow = "1.0.104"
base64 = "0.23.0"
bytes = "1.12.1"
ed25519-dalek = { version = "3.0.0", features = ["pem", "rand_core"], optional = true }
flate2 = { version = "1.1.9", optional = true }
form_urlencoded = { version = "1.2.2", optional = true }
futures-util = { version = "0.3.33", features = ["sink"] }
http-body-util = { version = "0.1.4", optional = true }
hyper = { version = "1.11.0", optional = true }
if-addrs = { version = "0.15.0", optional = true }
hyper-util = { version = "0.1.20", features = ["server"], optional = true }
lru = "0.18.1"
pem = { version = "4.0.0", optional = true }
percent-encoding = { version = "2.3.2", optional = true }
rcgen = { version = "0.14.8", default-features = false, features = ["crypto", "pem", "ring"], optional = true }
reqwest = { version = "0.13.4", features = ["charset", "http2", "system-proxy", "json", "rustls-no-provider", "stream"], default-features = false, optional = true }
rand = "0.10.2"
rsa = { version = "0.9.10", features = ["sha2"], optional = true }
rustls = { version = "0.23.43", default-features = false, features = ["ring", "tls12", "std"], optional = true }
serde = { version = "1.0.229", features = ["derive"] }
serde_json = "1.0.151"
sha2 = { version = "0.11.0", optional = true }
socket2 = { version = "0.6.5", optional = true }
thiserror = "2.0.19"
time = { version = "0.3.54", features = ["parsing"], optional = true }
tokio = { version = "1.53.1", features = ["full"] }
tokio-rustls = { version = "0.26.4", default-features = false, features = ["ring", "tls12"], optional = true }
tokio-stream = "0.1.19"
tokio-tungstenite = { version = "0.30.0", features = ["rustls-tls-webpki-roots"], optional = true }
tokio-util = { version = "0.7.19", features = ["rt"], optional = true }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23" }
tungstenite = "0.30.0"
uuid = { version = "1.24.0", features = ["serde", "v4"] }
webrtc = { version = "0.14.0", optional = true }
x509-parser = { version = "0.18.1", features = ["verify"], optional = true }

[[example]]
name = "stress_send"
required-features = ["http"]

[features]
default = []
crypto = ["ed25519-dalek", "rcgen", "rsa", "sha2", "tokio-util"]
discovery = ["http", "multicast"]
http = ["crypto", "form_urlencoded", "http-body-util", "hyper", "hyper-util", "if-addrs", "pem", "percent-encoding", "reqwest", "rustls", "socket2", "time", "tokio-rustls", "tokio-util", "x509-parser"]
multicast = ["if-addrs", "socket2", "tokio-util"]
webrtc-signaling = ["tokio-tungstenite"]
webrtc = ["crypto", "flate2", "dep:webrtc", "webrtc-signaling", "x509-parser"]
full = ["crypto", "discovery", "http", "multicast", "webrtc"]
