Changeset 9

Show
Ignore:
Timestamp:
01/27/04 20:13:24 (5 years ago)
Author:
jajcus
Message:

- MUC basics for JJIGW

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/jjigw.py

    r7 r9  
    1313from pyxmpp import ClientStream,JID,Iq,Presence,Message,StreamError 
    1414import pyxmpp.jabberd 
     15from pyxmpp.jabber.muc import MucPresence,MucX,MucUserX,MucItem,MUC_NS 
    1516 
    1617class ConnectConfig: 
     
    172173        if channel: 
    173174            channel.sync_user(self) 
     175 
     176    def jid(self): 
     177        return JID(nick_to_node(self.nick,self.session.default_encoding), 
     178                self.session.network.jid.domain, 
     179                unicode(self.user+'@'+self.host,self.session.default_encoding,"replace")) 
    174180         
    175181    def debug(self,msg): 
     
    223229        self.stanza=stanza.copy() 
    224230        self.state="join" 
     231        if stanza.get_join_info(): 
     232            self.muc=1 
    225233 
    226234    def leave(self,stanza): 
     
    236244            self.state=None 
    237245            self.stanza=None 
    238         p=Presence(type="unavailable",fr=stanza.get_to(),to=stanza.get_from(),status=status) 
     246        p=MucPresence(type="unavailable",fr=stanza.get_to(),to=stanza.get_from(),status=status) 
    239247        self.session.component.send(p) 
    240248        for u in self.users: 
     
    253261    def get_user_presence(self,user): 
    254262        if self.state and user in self.users: 
    255             p=Presence(fr=self.nick_to_jid(user.nick),to=self.session.jid) 
    256         else: 
    257             p=Presence(type="unavailable",fr=self.nick_to_jid(user.nick),to=self.session.jid) 
     263            p=MucPresence(fr=self.nick_to_jid(user.nick),to=self.session.jid) 
     264        else: 
     265            p=MucPresence(type="unavailable",fr=self.nick_to_jid(user.nick),to=self.session.jid) 
     266        if self.muc: 
     267            ui=p.make_muc_userinfo() 
     268            it=MucItem("none","participant",user.jid(),unicode(user.nick,self.encoding,"replace")) 
     269            ui.add_item(it) 
    258270        return p 
    259271 
     
    302314            if self.state=="join": 
    303315                self.debug("Channel %r joined!" % (self.name,)) 
    304                 p=Presence(type="available",fr=self.stanza.get_to(), 
    305                         to=self.stanza.get_from()) 
    306                 self.session.component.send(p) 
     316                self.session.user.join_channel(self) 
    307317                self.state="joined" 
    308318                self.stanza=None 
     
    381391        self.channels={} 
    382392        self.users={} 
     393        self.user=IRCUser(self,nick) 
    383394 
    384395    def register_user(self,user): 
     
    681692        self.disco_info.add_feature("jabber:iq:version") 
    682693        self.disco_info.add_feature("jabber:iq:register") 
     694        self.disco_info.add_feature(MUC_NS) 
    683695        self.stream.set_presence_handler("available",self.presence_available) 
    684696        self.stream.set_presence_handler("unavailable",self.presence_unavailable) 
     
    788800            self.irc_sessions[fr.as_unicode()]=sess 
    789801        if to.node: 
    790             sess.join(stanza
     802            sess.join(MucPresence(stanza)
    791803        else: 
    792804            p=Presence(