[package] name = "openpxe-http-api" version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true # v0.5.0: inherit the workspace repository so CARGO_PKG_REPOSITORY is # populated at build time — the About-tab update check derives the # Gitea releases API URL from it. repository.workspace = true description = "HTTP server: ISO uploads, iPXE script generation, ISO streaming" [lints] workspace = true [dependencies] openpxe-core.workspace = true openpxe-iso-store.workspace = true openpxe-ipxe-assets.workspace = true openpxe-webui.workspace = true tokio.workspace = true tokio-util.workspace = true tokio-stream.workspace = true time.workspace = true axum.workspace = true tower.workspace = true tower-http.workspace = true hyper.workspace = true serde.workspace = true serde_json.workspace = true tracing.workspace = true thiserror.workspace = true anyhow.workspace = true bytes.workspace = true futures.workspace = true mime.workspace = true mime_guess.workspace = true uuid.workspace = true # v0.4.5 Forms auth: lock-free session store and cookie helpers. parking_lot.workspace = true # v0.5.0: outbound HTTP for chat webhooks (Slack/Teams/Discord) and the # About-tab "check for updates" call to the Gitea releases API; SMTP for # email notifications. Both use rustls so the static musl binary stays # OpenSSL-free. reqwest.workspace = true lettre.workspace = true # v0.5.1: decode the base64 SAMLResponse at the ACS endpoint. base64.workspace = true [dev-dependencies] tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread", "time"] } tower = { workspace = true } tempfile = "3.12" serde_json = { workspace = true } time = { workspace = true } # v0.4.61: integration tests need to generate real PNG bytes for the # `/branding/pxe-logo` compositor; hand-rolled CRCs are too fragile. image = { version = "0.25", default-features = false, features = ["png"] } # v0.5.1: the SAML ACS integration tests mint a throwaway IdP keypair # (rcgen) and sign a SAMLResponse with bergshamra so the happy-path, # replay, and IdP-initiated-gating flows exercise real signatures. rcgen = "0.13" bergshamra = { workspace = true }