mockforge-http 0.3.64

HTTP/REST protocol support for MockForge
Documentation
[package]
name = "mockforge-http"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
description = "HTTP/REST protocol support for MockForge"
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords = ["http", "rest", "api", "mock", "testing"]
categories = ["development-tools::testing", "web-programming::http-server"]

[lints.rust]
missing_docs = "deny"

[dependencies]
axum = { workspace = true }
http = "1.3"
hyper = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
regex = { workspace = true }
urlencoding = { workspace = true }
url = { workspace = true }
base64 = { workspace = true }
reqwest = { workspace = true }
chrono = { workspace = true }
uuid = { workspace = true }
tracing = { workspace = true }
tokio = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
mockforge-smtp = { version = "0.3.31", path = "../mockforge-smtp", optional = true }
async-trait = { workspace = true }
glob = { workspace = true }
globwalk = { workspace = true }
sha2 = { workspace = true }
hex = { workspace = true }
rand = { workspace = true }
json-patch = { workspace = true }
jsonpath = "0.1"
roxmltree = "0.21"
anyhow = { workspace = true }
thiserror = { workspace = true }
itertools = { workspace = true }
mime_guess = { workspace = true }
futures = { workspace = true }
tokio-stream = "0.1"
jsonwebtoken = { workspace = true }
oauth2 = { workspace = true }
ring = { workspace = true }
governor = "0.8"
mockforge-core = { version = "0.3.31", path = "../mockforge-core" }
mockforge-data = { version = "0.3.31", path = "../mockforge-data" }
mockforge-observability = { version = "0.3.31", path = "../mockforge-observability" }
mockforge-recorder = { version = "0.3.31", path = "../mockforge-recorder" }
mockforge-scenarios = { version = "0.3.31", path = "../mockforge-scenarios" }
mockforge-tracing = { version = "0.3.31", path = "../mockforge-tracing" }
opentelemetry = { version = "0.22", features = ["trace"] }
mockforge-mqtt = { version = "0.3.31", path = "../mockforge-mqtt", optional = true }
mockforge-chaos = { version = "0.3.31", path = "../mockforge-chaos" }
mockforge-performance = { version = "0.3.31", path = "../mockforge-performance" }
mockforge-world-state = { version = "0.3.31", path = "../mockforge-world-state" }
mockforge-template-expansion = { version = "0.3.31", path = "../mockforge-template-expansion" }
mockforge-route-chaos = { version = "0.3.31", path = "../mockforge-route-chaos" }
futures-util = "0.3"
rustls = "0.23"
rustls-pemfile = "2.0"
tokio-rustls = "0.26"
axum-server = { version = "0.8", features = ["tls-rustls-no-provider"] }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "chrono", "uuid", "migrate"], optional = true }
dashmap = { version = "6.1", optional = true }
mockforge-pipelines = { version = "0.3.31", path = "../mockforge-pipelines", optional = true }
mockforge-runtime-daemon = { version = "0.3.31", path = "../mockforge-runtime-daemon", optional = true }

[features]
default = []
# Enable richer faker-backed tokens in templating via mockforge-data
data-faker = []
# Database-backed analytics/forecasting handlers
database = ["sqlx"]
# Pipeline handler routes
pipelines = ["mockforge-pipelines", "dashmap"]
# Persona graph response enrichment
persona-graph = []
# Behavioral cloning middleware and handlers
behavioral-cloning = []
# Runtime daemon integration hooks
runtime-daemon = ["mockforge-runtime-daemon"]
# Enable SMTP support
smtp = ["mockforge-smtp"]
# Enable MQTT integration
mqtt = ["mockforge-mqtt"]

[dev-dependencies]
tokio = { version = "1.48", features = ["macros", "rt-multi-thread"] }
reqwest = { version = "0.12", features = ["json"] }
tempfile = "3"
tokio-tungstenite = "0.28"
futures-util = "0.3"
mockforge-ws = { version = "0.3.31", path = "../mockforge-ws" }
mockforge-plugin-core = { version = "0.3.31", path = "../mockforge-plugin-core" }
opentelemetry_sdk = "0.22"
uuid = { version = "1.0", features = ["v4"] }
once_cell = { workspace = true }