forked from lavina/lavina
				
			Sketch x tag internals
This commit is contained in:
		
							parent
							
								
									1b59250042
								
							
						
					
					
						commit
						3724465c72
					
				| 
						 | 
				
			
			@ -487,6 +487,7 @@ impl<T: ToXml> ToXml for Iq<T> {
 | 
			
		|||
 | 
			
		||||
#[derive(PartialEq, Eq, Debug)]
 | 
			
		||||
pub struct Presence<T> {
 | 
			
		||||
    pub id: Option<String>,
 | 
			
		||||
    pub to: Option<Jid>,
 | 
			
		||||
    pub from: Option<Jid>,
 | 
			
		||||
    pub priority: Option<PresencePriority>,
 | 
			
		||||
| 
						 | 
				
			
			@ -499,6 +500,7 @@ pub struct Presence<T> {
 | 
			
		|||
impl<T> Default for Presence<T> {
 | 
			
		||||
    fn default() -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            id: Default::default(),
 | 
			
		||||
            to: Default::default(),
 | 
			
		||||
            from: Default::default(),
 | 
			
		||||
            priority: Default::default(),
 | 
			
		||||
| 
						 | 
				
			
			@ -573,6 +575,10 @@ impl<T: FromXml> FromXml for Presence<T> {
 | 
			
		|||
                        let s = std::str::from_utf8(&attr.value)?;
 | 
			
		||||
                        p.r#type = Some(s.into());
 | 
			
		||||
                    }
 | 
			
		||||
                    b"id" => {
 | 
			
		||||
                        let s = std::str::from_utf8(&attr.value)?;
 | 
			
		||||
                        p.r#type = Option::from(s.to_string());
 | 
			
		||||
                    }
 | 
			
		||||
                    _ => {}
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -660,6 +666,12 @@ impl<T: ToXml> ToXml for Presence<T> {
 | 
			
		|||
                value: from.to_string().as_bytes().into(),
 | 
			
		||||
            }]);
 | 
			
		||||
        }
 | 
			
		||||
        if let Some(ref id) = self.id {
 | 
			
		||||
            start.extend_attributes([Attribute {
 | 
			
		||||
                key: QName(b"id"),
 | 
			
		||||
                value: id.to_string().as_bytes().into(),
 | 
			
		||||
            }]);
 | 
			
		||||
        }
 | 
			
		||||
        events.push(Event::Start(start));
 | 
			
		||||
        if let Some(ref priority) = self.priority {
 | 
			
		||||
            let s = priority.0.to_string();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#![allow(unused_variables)]
 | 
			
		||||
 | 
			
		||||
use quick_xml::events::{BytesStart, Event};
 | 
			
		||||
use quick_xml::events::{BytesEnd, BytesStart, Event};
 | 
			
		||||
use quick_xml::name::ResolveResult;
 | 
			
		||||
 | 
			
		||||
use crate::xml::*;
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +150,23 @@ impl ToXml for XUser {
 | 
			
		|||
    fn serialize(&self, output: &mut Vec<Event<'static>>) {
 | 
			
		||||
        let mut tag = BytesStart::new("x");
 | 
			
		||||
        tag.push_attribute(("xmlns", XMLNS_USER));
 | 
			
		||||
        output.push(Event::Empty(tag));
 | 
			
		||||
        output.push(Event::Start(tag));
 | 
			
		||||
 | 
			
		||||
        let mut meg = BytesStart::new("item");
 | 
			
		||||
        meg.push_attribute(("affiliation", "owner"));
 | 
			
		||||
        meg.push_attribute(("role", "moderator"));
 | 
			
		||||
        meg.push_attribute(("jid", "sauer@localhost"));
 | 
			
		||||
        output.push(Event::Empty(meg));
 | 
			
		||||
 | 
			
		||||
        let mut veg = BytesStart::new("status");
 | 
			
		||||
        veg.push_attribute(("code", "100"));
 | 
			
		||||
        output.push(Event::Empty(veg));
 | 
			
		||||
 | 
			
		||||
        let mut veg = BytesStart::new("status");
 | 
			
		||||
        veg.push_attribute(("code", "110"));
 | 
			
		||||
        output.push(Event::Empty(veg));
 | 
			
		||||
 | 
			
		||||
        output.push(Event::End(BytesEnd::new("x")));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue