component: Remove duplicate call to read_event

This commit is contained in:
Maxime “pep” Buquet 2017-12-28 06:04:50 +01:00
parent 37148b9097
commit 44a03c37d5

View file

@ -1,4 +1,3 @@
use xml;
use jid::Jid; use jid::Jid;
use transport::{Transport, PlainTransport}; use transport::{Transport, PlainTransport};
use error::Error; use error::Error;
@ -10,8 +9,9 @@ use sha_1::{Sha1, Digest};
use minidom::Element; use minidom::Element;
use xml::reader::XmlEvent as ReaderEvent; use quick_xml::events::Event as XmlEvent;
use std::str;
use std::fmt::Write; use std::fmt::Write;
use std::sync::{Mutex, Arc}; use std::sync::{Mutex, Arc};
@ -131,25 +131,30 @@ impl Component {
self.transport.lock().unwrap().write_element(elem) self.transport.lock().unwrap().write_element(elem)
} }
fn read_event(&self) -> Result<xml::reader::XmlEvent, Error> {
self.transport.lock().unwrap().read_event()
}
fn connect(&mut self, secret: String) -> Result<(), Error> { fn connect(&mut self, secret: String) -> Result<(), Error> {
let mut sid = String::new(); let mut sid = String::new();
loop { loop {
let e = self.read_event()?; let mut transport = self.transport.lock().unwrap();
let e = transport.read_event()?;
match e { match e {
ReaderEvent::StartElement { attributes, .. } => { XmlEvent::Start(ref e) => {
for attribute in attributes { let mut attributes = e.attributes()
if attribute.name.namespace == None && attribute.name.local_name == "id" { .map(|o| {
sid = attribute.value; let o = o?;
let key = str::from_utf8(o.key)?;
let value = str::from_utf8(&o.value)?;
Ok((key, value))
}
)
.collect::<Result<Vec<(&str, &str)>, Error>>()?;
for &(name, value) in &attributes {
if name == "id" {
sid = value.to_owned();
} }
} }
break; }
},
_ => (),
} }
break
} }
let concatenated = format!("{}{}", sid, secret); let concatenated = format!("{}{}", sid, secret);
let mut hasher = Sha1::default(); let mut hasher = Sha1::default();