[package]
name = "structured-proxy"
description = "Universal gRPC→REST transcoding proxy — config-driven, works with any gRPC service"
version = "2.0.0"
edition = "2021"
authors = ["Structured World Foundation contributors"]
license = "Apache-2.0"
repository = "https://github.com/structured-world/structured-proxy"
homepage = "https://github.com/structured-world/structured-proxy"
documentation = "https://docs.rs/structured-proxy"
readme = "README.md"
keywords = ["grpc", "rest", "proxy", "transcoding", "protobuf"]
categories = ["network-programming", "web-programming::http-server"]
[[bin]]
name = "structured-proxy"
path = "src/main.rs"
[lib]
name = "structured_proxy"
path = "src/lib.rs"
[dependencies]
axum = { version = "0.8", features = ["macros"] }
tower = "0.5"
tower-http = { version = "0.7", features = ["cors", "trace"] }
tonic = "0.14"
tonic-health = "0.14"
prost = "0.14"
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_urlencoded = "0.7"
serde_yaml = "0.9"
futures = "0.3"
prost-reflect = { version = "0.16", features = ["serde"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
thiserror = "2"
anyhow = "1"
prometheus = "0.14"
dashmap = "6"
async-trait = "0.1"
ipnet = "2"
redis = { version = "0.27", features = ["tokio-comp"], optional = true }
jsonwebtoken = { version = "10", features = ["rust_crypto"] }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
globset = "0.4"
base64 = "0.22"
sha2 = "0.11"
url = "2"
getrandom = "0.4"
clap = { version = "4", features = ["derive"] }
envoy-types = "0.7"
[features]
redis = ["dep:redis"]
[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
ed25519-dalek = "2"
rand = "0.10"
chrono = "0.4"
tokio-stream = "0.1"