This is a UPNP client library for Rust.
Add this to your Cargo.toml
:
toml
[dependencies]
upnp-client = "0.1"
This example will print out all the devices found on the network.
```rust use coloredjson::prelude::*; use futuresutil::StreamExt;
use crate::discovery::discoverpnplocations;
mod discovery; mod types;
async fn main() -> Result<(), Box
while let Some(device) = devices.next().await {
let json = serde_json::to_string_pretty(&device)?;
println!("{}", json.to_colored_json_auto()?);
}
Ok(())
} ```
Output:
json
{
"device_type": "urn:schemas-upnp-org:device:MediaRenderer:1",
"friendly_name": "Kodi (MacBook-Pro-de-Tsiry-4.local)",
"location": "http://192.168.8.101:1825/",
"manufacturer": "XBMC Foundation",
"manufacturer_url": "http://kodi.tv/",
"model_description": "Kodi - Media Renderer",
"model_name": "Kodi",
"model_number": "18.4 Git:20190831-3ade758ceb",
"services": [
{
"control_url": "/AVTransport/d599320b-2d3b-e0d7-3224-dc1c4b074dae/control.xml",
"event_sub_url": "/AVTransport/d599320b-2d3b-e0d7-3224-dc1c4b074dae/event.xml",
"scpd_url": "/AVTransport/d599320b-2d3b-e0d7-3224-dc1c4b074dae/scpd.xml",
"service_id": "urn:upnp-org:serviceId:AVTransport",
"service_type": "urn:schemas-upnp-org:service:AVTransport:1"
},
{
"control_url": "/ConnectionManager/d599320b-2d3b-e0d7-3224-dc1c4b074dae/control.xml",
"event_sub_url": "/ConnectionManager/d599320b-2d3b-e0d7-3224-dc1c4b074dae/event.xml",
"scpd_url": "/ConnectionManager/d599320b-2d3b-e0d7-3224-dc1c4b074dae/scpd.xml",
"service_id": "urn:upnp-org:serviceId:ConnectionManager",
"service_type": "urn:schemas-upnp-org:service:ConnectionManager:1"
},
{
"control_url": "/RenderingControl/d599320b-2d3b-e0d7-3224-dc1c4b074dae/control.xml",
"event_sub_url": "/RenderingControl/d599320b-2d3b-e0d7-3224-dc1c4b074dae/event.xml",
"scpd_url": "/RenderingControl/d599320b-2d3b-e0d7-3224-dc1c4b074dae/scpd.xml",
"service_id": "urn:upnp-org:serviceId:RenderingControl",
"service_type": "urn:schemas-upnp-org:service:RenderingControl:1"
}
]
}
MIT