| Index: third_party/twisted_8_1/twisted/words/im/ircsupport.py
|
| diff --git a/third_party/twisted_8_1/twisted/words/im/ircsupport.py b/third_party/twisted_8_1/twisted/words/im/ircsupport.py
|
| deleted file mode 100644
|
| index 3fe5c653ae446a81fd5d4b94a4d54c04470c1fc0..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/words/im/ircsupport.py
|
| +++ /dev/null
|
| @@ -1,268 +0,0 @@
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -"""IRC support for Instance Messenger."""
|
| -
|
| -import string
|
| -
|
| -from twisted.words.protocols import irc
|
| -from twisted.words.im.locals import ONLINE
|
| -from twisted.internet import defer, reactor, protocol
|
| -from twisted.internet.defer import succeed
|
| -from twisted.words.im import basesupport, interfaces, locals
|
| -from zope.interface import implements
|
| -
|
| -
|
| -class IRCPerson(basesupport.AbstractPerson):
|
| -
|
| - def imperson_whois(self):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - self.account.client.sendLine("WHOIS %s" % self.name)
|
| -
|
| - ### interface impl
|
| -
|
| - def isOnline(self):
|
| - return ONLINE
|
| -
|
| - def getStatus(self):
|
| - return ONLINE
|
| -
|
| - def setStatus(self,status):
|
| - self.status=status
|
| - self.chat.getContactsList().setContactStatus(self)
|
| -
|
| - def sendMessage(self, text, meta=None):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - for line in string.split(text, '\n'):
|
| - if meta and meta.get("style", None) == "emote":
|
| - self.account.client.ctcpMakeQuery(self.name,[('ACTION', line)])
|
| - else:
|
| - self.account.client.msg(self.name, line)
|
| - return succeed(text)
|
| -
|
| -class IRCGroup(basesupport.AbstractGroup):
|
| -
|
| - implements(interfaces.IGroup)
|
| -
|
| - def imgroup_testAction(self):
|
| - print 'action test!'
|
| -
|
| - def imtarget_kick(self, target):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - reason = "for great justice!"
|
| - self.account.client.sendLine("KICK #%s %s :%s" % (
|
| - self.name, target.name, reason))
|
| -
|
| - ### Interface Implementation
|
| -
|
| - def setTopic(self, topic):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - self.account.client.topic(self.name, topic)
|
| -
|
| - def sendGroupMessage(self, text, meta={}):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - if meta and meta.get("style", None) == "emote":
|
| - self.account.client.me(self.name,text)
|
| - return succeed(text)
|
| - #standard shmandard, clients don't support plain escaped newlines!
|
| - for line in string.split(text, '\n'):
|
| - self.account.client.say(self.name, line)
|
| - return succeed(text)
|
| -
|
| - def leave(self):
|
| - if self.account.client is None:
|
| - raise locals.OfflineError
|
| - self.account.client.leave(self.name)
|
| - self.account.client.getGroupConversation(self.name,1)
|
| -
|
| -
|
| -class IRCProto(basesupport.AbstractClientMixin, irc.IRCClient):
|
| - def __init__(self, account, chatui, logonDeferred=None):
|
| - basesupport.AbstractClientMixin.__init__(self, account, chatui,
|
| - logonDeferred)
|
| - self._namreplies={}
|
| - self._ingroups={}
|
| - self._groups={}
|
| - self._topics={}
|
| -
|
| - def getGroupConversation(self, name, hide=0):
|
| - name=string.lower(name)
|
| - return self.chat.getGroupConversation(self.chat.getGroup(name, self),
|
| - stayHidden=hide)
|
| -
|
| - def getPerson(self,name):
|
| - return self.chat.getPerson(name, self)
|
| -
|
| - def connectionMade(self):
|
| - # XXX: Why do I duplicate code in IRCClient.register?
|
| - try:
|
| - print 'connection made on irc service!?', self
|
| - if self.account.password:
|
| - self.sendLine("PASS :%s" % self.account.password)
|
| - self.setNick(self.account.username)
|
| - self.sendLine("USER %s foo bar :Twisted-IM user" % (self.nickname,))
|
| - for channel in self.account.channels:
|
| - self.joinGroup(channel)
|
| - self.account._isOnline=1
|
| - print 'uh, registering irc acct'
|
| - if self._logonDeferred is not None:
|
| - self._logonDeferred.callback(self)
|
| - self.chat.getContactsList()
|
| - except:
|
| - import traceback
|
| - traceback.print_exc()
|
| -
|
| - def setNick(self,nick):
|
| - self.name=nick
|
| - self.accountName="%s (IRC)"%nick
|
| - irc.IRCClient.setNick(self,nick)
|
| -
|
| - def kickedFrom(self, channel, kicker, message):
|
| - """Called when I am kicked from a channel.
|
| - """
|
| - print 'ono i was kicked', channel, kicker, message
|
| - return self.chat.getGroupConversation(
|
| - self.chat.getGroup(channel[1:], self), 1)
|
| -
|
| - def userKicked(self, kickee, channel, kicker, message):
|
| - print 'whew somebody else', kickee, channel, kicker, message
|
| -
|
| - def noticed(self, username, channel, message):
|
| - self.privmsg(username, channel, message, {"dontAutoRespond": 1})
|
| -
|
| - def privmsg(self, username, channel, message, metadata=None):
|
| - if metadata is None:
|
| - metadata = {}
|
| - username=string.split(username,'!',1)[0]
|
| - if username==self.name: return
|
| - if channel[0]=='#':
|
| - group=channel[1:]
|
| - self.getGroupConversation(group).showGroupMessage(username, message, metadata)
|
| - return
|
| - self.chat.getConversation(self.getPerson(username)).showMessage(message, metadata)
|
| -
|
| - def action(self,username,channel,emote):
|
| - username=string.split(username,'!',1)[0]
|
| - if username==self.name: return
|
| - meta={'style':'emote'}
|
| - if channel[0]=='#':
|
| - group=channel[1:]
|
| - self.getGroupConversation(group).showGroupMessage(username, emote, meta)
|
| - return
|
| - self.chat.getConversation(self.getPerson(username)).showMessage(emote,meta)
|
| -
|
| - def irc_RPL_NAMREPLY(self,prefix,params):
|
| - """
|
| - RPL_NAMREPLY
|
| - >> NAMES #bnl
|
| - << :Arlington.VA.US.Undernet.Org 353 z3p = #bnl :pSwede Dan-- SkOyg AG
|
| - """
|
| - group=string.lower(params[2][1:])
|
| - users=string.split(params[3])
|
| - for ui in range(len(users)):
|
| - while users[ui][0] in ["@","+"]: # channel modes
|
| - users[ui]=users[ui][1:]
|
| - if not self._namreplies.has_key(group):
|
| - self._namreplies[group]=[]
|
| - self._namreplies[group].extend(users)
|
| - for nickname in users:
|
| - try:
|
| - self._ingroups[nickname].append(group)
|
| - except:
|
| - self._ingroups[nickname]=[group]
|
| -
|
| - def irc_RPL_ENDOFNAMES(self,prefix,params):
|
| - group=params[1][1:]
|
| - self.getGroupConversation(group).setGroupMembers(self._namreplies[string.lower(group)])
|
| - del self._namreplies[string.lower(group)]
|
| -
|
| - def irc_RPL_TOPIC(self,prefix,params):
|
| - self._topics[params[1][1:]]=params[2]
|
| -
|
| - def irc_333(self,prefix,params):
|
| - group=params[1][1:]
|
| - self.getGroupConversation(group).setTopic(self._topics[group],params[2])
|
| - del self._topics[group]
|
| -
|
| - def irc_TOPIC(self,prefix,params):
|
| - nickname = string.split(prefix,"!")[0]
|
| - group = params[0][1:]
|
| - topic = params[1]
|
| - self.getGroupConversation(group).setTopic(topic,nickname)
|
| -
|
| - def irc_JOIN(self,prefix,params):
|
| - nickname=string.split(prefix,"!")[0]
|
| - group=string.lower(params[0][1:])
|
| - if nickname!=self.nickname:
|
| - try:
|
| - self._ingroups[nickname].append(group)
|
| - except:
|
| - self._ingroups[nickname]=[group]
|
| - self.getGroupConversation(group).memberJoined(nickname)
|
| -
|
| - def irc_PART(self,prefix,params):
|
| - nickname=string.split(prefix,"!")[0]
|
| - group=string.lower(params[0][1:])
|
| - if nickname!=self.nickname:
|
| - if group in self._ingroups[nickname]:
|
| - self._ingroups[nickname].remove(group)
|
| - self.getGroupConversation(group).memberLeft(nickname)
|
| - else:
|
| - print "%s left %s, but wasn't in the room."%(nickname,group)
|
| -
|
| - def irc_QUIT(self,prefix,params):
|
| - nickname=string.split(prefix,"!")[0]
|
| - if self._ingroups.has_key(nickname):
|
| - for group in self._ingroups[nickname]:
|
| - self.getGroupConversation(group).memberLeft(nickname)
|
| - self._ingroups[nickname]=[]
|
| - else:
|
| - print '*** WARNING: ingroups had no such key %s' % nickname
|
| -
|
| - def irc_NICK(self, prefix, params):
|
| - fromNick = string.split(prefix, "!")[0]
|
| - toNick = params[0]
|
| - if not self._ingroups.has_key(fromNick):
|
| - print "%s changed nick to %s. But she's not in any groups!?" % (fromNick, toNick)
|
| - return
|
| - for group in self._ingroups[fromNick]:
|
| - self.getGroupConversation(group).memberChangedNick(fromNick, toNick)
|
| - self._ingroups[toNick] = self._ingroups[fromNick]
|
| - del self._ingroups[fromNick]
|
| -
|
| - def irc_unknown(self, prefix, command, params):
|
| - print "unknown message from IRCserver. prefix: %s, command: %s, params: %s" % (prefix, command, params)
|
| -
|
| - # GTKIM calls
|
| - def joinGroup(self,name):
|
| - self.join(name)
|
| - self.getGroupConversation(name)
|
| -
|
| -class IRCAccount(basesupport.AbstractAccount):
|
| - implements(interfaces.IAccount)
|
| - gatewayType = "IRC"
|
| -
|
| - _groupFactory = IRCGroup
|
| - _personFactory = IRCPerson
|
| -
|
| - def __init__(self, accountName, autoLogin, username, password, host, port,
|
| - channels=''):
|
| - basesupport.AbstractAccount.__init__(self, accountName, autoLogin,
|
| - username, password, host, port)
|
| - self.channels = map(string.strip,string.split(channels,','))
|
| - if self.channels == ['']:
|
| - self.channels = []
|
| -
|
| - def _startLogOn(self, chatui):
|
| - logonDeferred = defer.Deferred()
|
| - cc = protocol.ClientCreator(reactor, IRCProto, self, chatui,
|
| - logonDeferred)
|
| - d = cc.connectTCP(self.host, self.port)
|
| - d.addErrback(logonDeferred.errback)
|
| - return logonDeferred
|
|
|