Files
qbz/crates/qconnect-lan/Cargo.toml
T
vicrodh c60cdec064 feat(qconnect): the controller half of the official LAN wire
qconnect-lan gains what QBZ calls on another receiver: a
_qobuz-connect._tcp browser (own device_uuid filtered, Electron's SDK
floor), the get-display-info / get-connect-info probe (IPv4 first, 10 s,
Connection: close) and the connect-to-qconnect handoff body — the
controller's session uuid, the delegated API token and the delegated QWS
token under its LAN name jwt_qconnect, become_active. qbz-qobuz mints the
delegated pair with POST /qws/delegateAuth (q_app_id), the step every
official controller takes before the handoff. The receiver DTOs learn to
deserialize (unknown enum values collapse to Unknown). Pure helpers tested.

cc
2026-09-13 13:29:35 -06:00

29 lines
825 B
TOML

[package]
name = "qconnect-lan"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "Official Qobuz Connect LAN receiver wire and discovery"
[dependencies]
if-addrs = "0.15"
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
mdns-sd = "0.21"
reqwest = { workspace = true }
socket2 = "0.6"
url = "2"
zeroize = "1"
[dev-dependencies]
base64 = { workspace = true }
qbz-credentials = { path = "../qbz-credentials" }
qbz-qobuz = { path = "../qbz-qobuz" }
qconnect-core = { path = "../qconnect-core" }
qconnect-protocol = { path = "../qconnect-protocol" }
qconnect-transport-ws = { path = "../qconnect-transport-ws" }
rustls = { version = "0.23", features = ["aws_lc_rs"] }
tokio = { workspace = true }
uuid = { version = "1", features = ["v4"] }