Module twisted.protocols.msn
MSNP7 Protocol (client only)
Stability: unstable.
This module provides support for clients using the MSN Protocol
(MSNP7). There are basically 3 servers involved in any MSN session:
-
Dispatch server
The MSNDispatchClient class handles connections to the dispatch
server, which basically delegates users to a suitable notification
server.
You will want to subclass this and handle the gotReferral method
appropriately.
-
Notification Server
The MSNNotificationClient class handles connections to the
notification server, which acts as a session server (state updates,
message negotiation etc...)
-
Switcboard Server
The MSNSwitchboardClient handles connections to switchboard
servers which are used to conduct conversations with other users.
There are also two classes (MSNFileSend and MSNFileReceive) used for
file transfers.
Clients handle events in two ways.
-
each client request requiring a response will return a Deferred,
the callback for same will be fired when the server sends the
required response .
-
Events which are not in response to any client request have
respective methods which should be overridden and handled in an
adequate manner
Most client request callbacks require more than one argument, and
since Deferreds can only pass the callback one result, most of the time
the callback argument will be a tuple of values (documented in the
respective request method). To make reading/writing code easier,
callbacks can be defined in a number of ways to handle this 'cleanly'.
One way would be to define methods like: def callBack(self, (arg1, arg2,
arg)): ... another way would be to do something like d.addCallback(lambda
result: myCallback(*result)).
If the server sends an error response to a client request, the errback
of the corresponding Deferred will be called, the argument being the
corresponding error code.
NOTE Due to the lack of an 'official' spec for MSNP7, extra
checking than may be deemed necessary often takes place considering the
server is never 'wrong'. Thus, if gotBadLine (in any of the 3 main
clients) is called, or an MSNProtocolError is raised, it's probably a
good idea to submit a bug report. ;)
TODO
-
check message hooks with invalid x-msgsinvite messages.
-
font handling
-
create factories for each respective client
Author: Sam Jordan
Classes |
MSNContact |
This class represents a contact (user). |
MSNContactList |
This class represents a basic MSN contact list. |
MSNDispatchClient |
This class provides support for clients connecting to the dispatch
server |
MSNEventBase |
This class provides support for handling / dispatching events and is
the base class of the three main client protocols (MSNDispatchClient,
MSNNotificationClient, MSNSwitchboardClient) |
MSNFileReceive |
This class provides support for receiving files from contacts. |
MSNFileSend |
This class provides support for sending files to other contacts. |
MSNMessage |
I am the class used to represent an 'instant' message. |
MSNNotificationClient |
This class provides support for clients connecting to the notification
server. |
MSNSwitchboardClient |
this class provides support for clients connecting to a switchboard
server. |
Exceptions |
MSNProtocolError |
This Exception is basically used for debugging purposes, as the
official MSN server should never send anything _wrong_ and nobody in
their right mind would run their own MSN server...if it is raised
by default command handlers (handle_BLAH) the error will be logged. |
Function Summary |
|
checkParamLen(num,
expected,
cmd,
error)
|
ALLOW_LIST
-
- Type:
-
str
- Value:
|
BLOCK_LIST
-
- Type:
-
str
- Value:
|
errorCodes
-
- Type:
-
dict
- Value:
{200: 'Syntax error',
201: 'Invalid parameter',
205: 'Invalid user',
206: 'Domain name missing',
207: 'Already logged in',
208: 'Invalid username',
209: 'Invalid screen name',
210: 'User list full',
...
|
|
FORWARD_LIST
-
- Type:
-
str
- Value:
|
HAS_PAGER
-
- Type:
-
str
- Value:
|
HOME_PHONE
-
- Type:
-
str
- Value:
|
MOBILE_PHONE
-
- Type:
-
str
- Value:
|
REVERSE_LIST
-
- Type:
-
str
- Value:
|
STATUS_AWAY
-
- Type:
-
str
- Value:
|
STATUS_BRB
-
- Type:
-
str
- Value:
|
STATUS_BUSY
-
- Type:
-
str
- Value:
|
STATUS_HIDDEN
-
- Type:
-
str
- Value:
|
STATUS_IDLE
-
- Type:
-
str
- Value:
|
STATUS_LUNCH
-
- Type:
-
str
- Value:
|
STATUS_OFFLINE
-
- Type:
-
str
- Value:
|
STATUS_ONLINE
-
- Type:
-
str
- Value:
|
STATUS_PHONE
-
- Type:
-
str
- Value:
|
statusCodes
-
- Type:
-
dict
- Value:
{'AWY': 'Away',
'BRB': 'Be Right Back',
'BSY': 'Busy',
'FLN': 'Offline',
'HDN': 'Appear Offline',
'IDL': 'Idle',
'LUN': 'Out to Lunch',
'NLN': 'Online',
...
|
|
WORK_PHONE
-
- Type:
-
str
- Value:
|