2025-10-05 14:35:44 +02:00
|
|
|
//! Implémentation des traits UPnP pour Service.
|
|
|
|
|
|
|
|
|
|
use xmltree::{Element, XMLNode};
|
|
|
|
|
|
|
|
|
|
use crate::{
|
|
|
|
|
services::{Service, ServiceInstance},
|
|
|
|
|
UpnpObject, UpnpModel, UpnpTyped, UpnpObjectType,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
impl std::fmt::Display for Service {
|
|
|
|
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
|
|
|
write!(f, "Service({}:{})", self.name(), self.version())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl UpnpTyped for Service {
|
|
|
|
|
fn as_upnp_object_type(&self) -> &UpnpObjectType {
|
|
|
|
|
&self.object
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl UpnpObject for Service {
|
|
|
|
|
fn to_xml_element(&self) -> Element {
|
|
|
|
|
let mut elem = Element::new("service");
|
|
|
|
|
|
|
|
|
|
// serviceType
|
|
|
|
|
let mut service_type = Element::new("serviceType");
|
|
|
|
|
service_type.children.push(XMLNode::Text(self.service_type()));
|
|
|
|
|
elem.children.push(XMLNode::Element(service_type));
|
|
|
|
|
|
|
|
|
|
// serviceId
|
|
|
|
|
let mut service_id = Element::new("serviceId");
|
|
|
|
|
service_id.children.push(XMLNode::Text(self.service_id()));
|
|
|
|
|
elem.children.push(XMLNode::Element(service_id));
|
|
|
|
|
|
|
|
|
|
// SCPDURL
|
|
|
|
|
let mut SCPDURL = Element::new("SCPDURL");
|
2025-10-05 21:58:36 +02:00
|
|
|
SCPDURL.children.push(XMLNode::Text(self.scpd_route()));
|
2025-10-05 14:35:44 +02:00
|
|
|
elem.children.push(XMLNode::Element(SCPDURL));
|
|
|
|
|
|
|
|
|
|
// controlURL
|
|
|
|
|
let mut controlURL = Element::new("controlURL");
|
2025-10-05 21:58:36 +02:00
|
|
|
controlURL.children.push(XMLNode::Text(self.control_route()));
|
2025-10-05 14:35:44 +02:00
|
|
|
elem.children.push(XMLNode::Element(controlURL));
|
|
|
|
|
|
2025-10-05 21:58:36 +02:00
|
|
|
// eventSubURL
|
2025-10-05 14:35:44 +02:00
|
|
|
let mut eventSubURL = Element::new("eventSubURL");
|
2025-10-05 21:58:36 +02:00
|
|
|
eventSubURL.children.push(XMLNode::Text(self.event_route()));
|
2025-10-05 14:35:44 +02:00
|
|
|
elem.children.push(XMLNode::Element(eventSubURL));
|
|
|
|
|
|
|
|
|
|
elem
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl UpnpModel for Service {
|
|
|
|
|
type Instance = ServiceInstance;
|
|
|
|
|
}
|