Files
wz-phone/crates/wzp-client/Cargo.toml
Siavash Sameni ad16ddb903 feat: WZP-S-2 relay auth + WZP-S-3 featherChat signaling bridge
WZP-S-2: Relay token authentication
- New --auth-url flag: relay calls POST {url} with bearer token
- Clients must send SignalMessage::AuthToken as first signal
- Relay validates against featherChat's /v1/auth/validate endpoint
- Rejects unauthenticated clients before they join rooms
- New auth.rs module with validate_token() + tests

WZP-S-3: featherChat signaling bridge
- New featherchat.rs module for CallSignal interop
- WzpCallPayload: wraps SignalMessage + relay_addr + room name
- encode_call_payload/decode_call_payload for JSON serialization
- CallSignalType enum mirrors featherChat's variant
- signal_to_call_type maps WZP signals to FC types

Protocol: Added SignalMessage::AuthToken { token } variant

129 tests passing across all crates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 09:23:46 +04:00

43 lines
1009 B
TOML

[package]
name = "wzp-client"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
description = "WarzonePhone client library — for Android (JNI) and Windows desktop"
[dependencies]
wzp-proto = { workspace = true }
wzp-codec = { workspace = true }
wzp-fec = { workspace = true }
wzp-crypto = { workspace = true }
wzp-transport = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
async-trait = { workspace = true }
bytes = { workspace = true }
anyhow = "1"
serde = { workspace = true }
serde_json = "1"
cpal = { version = "0.15", optional = true }
[features]
default = []
audio = ["cpal"]
[[bin]]
name = "wzp-client"
path = "src/cli.rs"
[[bin]]
name = "wzp-bench"
path = "src/bench_cli.rs"
[dev-dependencies]
tokio = { workspace = true }
wzp-relay = { path = "../wzp-relay" }
wzp-crypto = { workspace = true }
wzp-proto = { workspace = true }
async-trait = { workspace = true }