summaryrefslogtreecommitdiff
path: root/src/upnp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/upnp.rs')
-rw-r--r--src/upnp.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/upnp.rs b/src/upnp.rs
index a4628ab..f6afe06 100644
--- a/src/upnp.rs
+++ b/src/upnp.rs
@@ -22,19 +22,20 @@ User-Agent: slingr/0.1.0\r\n\r\n";
pub struct Device {
usn: String,
- host: String,
xml: String,
}
const USN_REGEX: &'static str = r"uuid:([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})";
+const XML_REGEX: &'static str = r"Location: (http(s?)://.*)";
fn parse_udp_message(msg: &str) -> Device {
- let re = Regex::new(USN_REGEX).unwrap();
- let usn = re.captures(msg).unwrap().get(1).unwrap().as_str().to_string();
+ let usn_re = Regex::new(USN_REGEX).unwrap();
+ let xml_re = Regex::new(XML_REGEX).unwrap();
+ let usn = usn_re.captures(msg).unwrap().get(1).unwrap().as_str().to_string();
+ let xml = xml_re.captures(msg).unwrap().get(1).unwrap().as_str().to_string();
Device {
usn,
- host: "192.168.33.44:38400".to_string(),
- xml: "http://192.168.33.44:38400/deviceDescription/MediaRenderer".to_string()
+ xml
}
}
@@ -44,7 +45,7 @@ pub fn discover() {
socket.send_to(SEARCH_REQUEST.as_bytes(), MULTICAST_ADDRESS).expect("couldn't send data");
let mut devices = HashMap::new();
- let d = Device {usn: "a".to_string(), host: "b".to_string(), xml: "c".to_string()};
+ let d = Device {usn: "a".to_string(), xml: "c".to_string()};
devices.insert("foo", d);
let mut buf = [0; 1024];
@@ -73,10 +74,10 @@ mod tests {
Date: Fri, 02 Jan 1970 22:25:35 GMT
ST: urn:schemas-upnp-org:service:ConnectionManager:1
USN: uuid:9acb38e1-09cc-dba0-ffff-ffffe156cab7::urn:schemas-upnp-org:service:ConnectionManager:1
- Location: http://192.168.33.44:38400/deviceDescription/MediaRenderer"#);
+ Location: http://192.168.33.44:38400/deviceDescription/MediaRenderer
+ Foo: foo"#);
let d = parse_udp_message(msg);
assert_eq!(d.usn, "9acb38e1-09cc-dba0-ffff-ffffe156cab7");
assert_eq!(d.xml, "http://192.168.33.44:38400/deviceDescription/MediaRenderer");
- assert_eq!(d.host, "192.168.33.44:38400")
}
}