connection: Adapt C2S and Component2S impl for quickxml; Thanks eijebong

Maxime “pep” Buquet created

Change summary

src/connection.rs | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)

Detailed changes

src/connection.rs 🔗

@@ -2,7 +2,7 @@ use transport::Transport;
 use error::Error;
 use ns;
 
-use xml::writer::XmlEvent as WriterEvent;
+use quick_xml::events::{Event as WriterEvent, BytesStart, BytesEnd};
 
 pub trait Connection {
     type InitError;
@@ -23,17 +23,19 @@ impl Connection for C2S {
     fn namespace() -> &'static str { ns::CLIENT }
 
     fn init<T: Transport>(transport: &mut T, domain: &str, id: &str) -> Result<(), Error> {
-        transport.write_event(WriterEvent::start_element("stream:stream")
-                                          .attr("to", domain)
-                                          .attr("id", id)
-                                          .default_ns(ns::CLIENT)
-                                          .ns("stream", ns::STREAM))?;
-        Ok(())
+        let name = "stream:stream";
+        let mut elem = BytesStart::borrowed(name.as_bytes(), name.len());
+        elem.push_attribute(("to", domain));
+        elem.push_attribute(("id", id));
+        elem.push_attribute(("xmlns", ns::CLIENT));
+        elem.push_attribute(("xmlns:stream", ns::STREAM));
+        transport.write_event(WriterEvent::Start(elem))
     }
 
     fn close<T: Transport>(transport: &mut T) -> Result<(), Error> {
-        transport.write_event(WriterEvent::end_element())?;
-        Ok(())
+        let name = "stream:stream";
+        let elem = BytesEnd::borrowed(name.as_bytes());
+        transport.write_event(WriterEvent::End(elem))
     }
 }
 
@@ -46,16 +48,18 @@ impl Connection for Component2S {
     fn namespace() -> &'static str { ns::COMPONENT_ACCEPT }
 
     fn init<T: Transport>(transport: &mut T, domain: &str, id: &str) -> Result<(), Error> {
-        transport.write_event(WriterEvent::start_element("stream:stream")
-                                          .attr("to", domain)
-                                          .attr("id", id)
-                                          .default_ns(ns::COMPONENT_ACCEPT)
-                                          .ns("stream", ns::STREAM))?;
-        Ok(())
+        let name = "stream:stream";
+        let mut elem = BytesStart::borrowed(name.as_bytes(), name.len());
+        elem.push_attribute(("to", domain));
+        elem.push_attribute(("id", id));
+        elem.push_attribute(("xmlns", ns::COMPONENT_ACCEPT));
+        elem.push_attribute(("xmlns:stream", ns::STREAM));
+        transport.write_event(WriterEvent::Start(elem))
     }
 
     fn close<T: Transport>(transport: &mut T) -> Result<(), Error> {
-        transport.write_event(WriterEvent::end_element())?;
-        Ok(())
+        let name = "stream:stream";
+        let elem = BytesEnd::borrowed(name.as_bytes());
+        transport.write_event(WriterEvent::End(elem))
     }
 }