onvif_server/
wsdl_loader.rs1use soap_server::{WsdlError, WsdlLoader};
2
3pub struct EmbeddedWsdlLoader;
9
10impl WsdlLoader for EmbeddedWsdlLoader {
11 fn load(&self, location: &str) -> Result<Vec<u8>, WsdlError> {
12 let filename = location.rsplit('/').next().unwrap_or(location);
14 match filename {
15 "devicemgmt.wsdl" => Ok(include_bytes!("../wsdl/devicemgmt.wsdl").to_vec()),
16 "media.wsdl" => Ok(include_bytes!("../wsdl/media.wsdl").to_vec()),
17 "ptz.wsdl" => Ok(include_bytes!("../wsdl/ptz.wsdl").to_vec()),
18 "imaging.wsdl" => Ok(include_bytes!("../wsdl/imaging.wsdl").to_vec()),
19 "events.wsdl" | "event.wsdl" => Ok(include_bytes!("../wsdl/events.wsdl").to_vec()),
21 "onvif.xsd" => Ok(include_bytes!("../wsdl/onvif.xsd").to_vec()),
22 "common.xsd" => Ok(include_bytes!("../wsdl/common.xsd").to_vec()),
23 "xmlmime" | "xmlmime.xsd" => Ok(include_bytes!("../wsdl/xmlmime.xsd").to_vec()),
31 "soap-envelope" | "soap-envelope.xsd" => {
32 Ok(include_bytes!("../wsdl/soap-envelope.xsd").to_vec())
33 }
34 "b-2.xsd" => Ok(include_bytes!("../wsdl/wsn-b2.xsd").to_vec()),
35 "bw-2.wsdl" => Ok(include_bytes!("../wsdl/wsn-bw2.wsdl").to_vec()),
37 "rw-2.wsdl" => Ok(include_bytes!("../wsdl/wsrf-rw2.wsdl").to_vec()),
38 "ws-addr.xsd" => Ok(include_bytes!("../wsdl/ws-addr.xsd").to_vec()),
40 "t-1.xsd" => Ok(include_bytes!("../wsdl/wsn-t1.xsd").to_vec()),
41 "include" | "xop-include.xsd" => Ok(include_bytes!("../wsdl/xop-include.xsd").to_vec()),
42 other => Err(WsdlError::MalformedXml(format!(
43 "Unknown WSDL/XSD: {other}"
44 ))),
45 }
46 }
47}