Package twisted :: Package protocols :: Module msn :: Class NotificationClient

[frames | no frames]

## Class NotificationClient

    BaseProtocol --+
                   |
            Protocol --+
                       |
            LineReceiver --+
                           |
                MSNEventBase --+
                               |
                              NotificationClient

This class provides support for clients connecting to the notification server.

Method Summary
| `__init__(self, currentID)`
| `_getState(self)`
| `_getStateData(self, key)`
| `_passportError(self, failure)`
| `_passportLogin(self, result)`
| `_remStateData(self, *args)`
| `_setState(self, state)`
| `_setStateData(self, key, value)`
| ``addContact`(self, listType, userHandle, groupID)` Used to add a contact to the desired list.
| ``addListGroup`(self, name)` Used to create a new list group.
| ``changeScreenName`(self, newName)` Used to change your current screen name.
| ``changeStatus`(self, status)` Change my current status.
| ``checkMessage`(self, message)` hook used for detecting specific notification messages
| `connectionLost(self, reason)`
| ``connectionMade`(self)` Called when a connection is made.
| ``contactOffline`(self, userHandle)` Called when a contact goes offline.
| ``contactStatusChanged`(self, statusCode, userHandle, screenName)` Called when we're notified that a contact's status has changed.
| ``gotContactStatus`(self, statusCode, userHandle, screenName)` Called after loggin in when the server sends status of online contacts.
| ``gotPhoneNumber`(self, listVersion, userHandle, phoneType, number)` Called when the server sends us phone details about a specific user (for example after a user is added the server will send their status, phone details etc.
| ``gotProfile`(self, message)` Called after logging in when the server sends an initial message with MSN/passport specific profile information such as country, number of kids, etc.
| ``gotSwitchboardInvitation`(self, sessionID, host, port, key, userHandle, screenName)` Called when we get an invitation to a switchboard server.
| `handle_ADD(self, params)`
| `handle_ADG(self, params)`
| `handle_BLP(self, params)`
| `handle_BPR(self, params)`
| `handle_CHG(self, params)`
| `handle_CHL(self, params)`
| `handle_CVR(self, params)`
| `handle_FLN(self, params)`
| `handle_GTC(self, params)`
| `handle_ILN(self, params)`
| `handle_LSG(self, params)`
| `handle_LST(self, params)`
| `handle_NLN(self, params)`
| `handle_OUT(self, params)`
| `handle_PRP(self, params)`
| `handle_QRY(self, params)`
| `handle_REA(self, params)`
| `handle_REG(self, params)`
| `handle_REM(self, params)`
| `handle_RMG(self, params)`
| `handle_RNG(self, params)`
| `handle_SYN(self, params)`
| `handle_USR(self, params)`
| `handle_VER(self, params)`
| `handle_XFR(self, params)`
| ``listSynchronized`(self, *args)` Lists are now synchronized by default upon logging in, this method is called after the synchronization has finished and the factory now has the up-to-date contacts.
| ``loggedIn`(self, userHandle, screenName, verified)` Called when the client has logged in.
| ``loginFailure`(self, message)` Called when the client fails to login.
| ``logOut`(self)` Used to log out of the notification server.
| ``multipleLogin`(self)` Called when the server says there has been another login under our account, the server should disconnect us right away.
| ``remContact`(self, listType, userHandle, groupID)` Used to remove a contact from the desired list.
| ``remListGroup`(self, groupID)` Used to remove a list group.
| ``renameListGroup`(self, groupID, newName)` Used to rename an existing list group.
| ``requestSwitchboardServer`(self)` Used to request a switchboard server to use for conversations.
| ``serverGoingDown`(self)` Called when the server has notified us that it is going down for maintenance.
| ``setPhoneDetails`(self, phoneType, value)` Set/change my phone numbers stored on the server.
| ``setPrivacyMode`(self, privLevel)` Set my privacy mode on the server.
| ``statusChanged`(self, statusCode)` Called when our status changes and it isn't in response to a client command.
| ``syncList`(self, version)` Used for keeping an up-to-date contact list.
| ``userAddedMe`(self, userHandle, screenName, listVersion)` Called when a user adds me to their list.
| ``userRemovedMe`(self, userHandle, listVersion)` Called when a user removes us from their contact list (they are no longer on our reverseContacts list.
Inherited from MSNEventBase
| ``_createIDMapping`(self, data)` return a unique transaction ID that is mapped internally to a deferred ..
| ``_fireCallback`(self, id, *args)` Fire the callback for the given id if one exists and return 1, else return false
| ``_nextTransactionID`(self)` return a usable transaction ID
| ``gotBadLine`(self, line, why)` called when a handler notifies me that this line is broken
| ``gotError`(self, errorCode)` called when the server sends an error which is not in response to a sent command (ie.
| ``gotMessage`(self, message)` called when we receive a message - override in notification and switchboard clients
| ``handle_MSG`(self, params)`
| ``handle_UNKNOWN`(self, cmd, params)` implement me in subclasses if you want to handle unknown events
| ``lineReceived`(self, line)` Override this for when each line is received.
| ``rawDataReceived`(self, data)` Override this for when raw data is received.
Inherited from LineReceiver
| ``clearLineBuffer`(self)` Clear buffered data.
| ``dataReceived`(self, data)` Protocol.dataReceived.
| ``lineLengthExceeded`(self, line)` Called when the maximum line length has been reached.
| ``sendLine`(self, line)` Sends a line to the other end of the connection.
| ``setLineMode`(self, extra)` Sets the line-mode of this receiver.
| ``setRawMode`(self)` Sets the raw mode of this receiver.
Inherited from Protocol
| ``connectionFailed`(self)` (Deprecated)
Inherited from BaseProtocol
| ``makeConnection`(self, transport)` Make a connection to a transport and a server.

Class Variable Summary
`NoneType` | `factory` = None
Inherited from LineReceiver
`str` | `_LineReceiver__buffer` = `''`
`str` | `delimiter`: The line-ending delimiter to use.
`int` | `line_mode` = 1
`int` | `MAX_LENGTH`: The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped).
Inherited from Protocol
`tuple` | `__implements__` = `(<class twisted.internet.interfaces.IPr...`
Inherited from BaseProtocol
`int` | `connected` = 0
`NoneType` | `transport` = None

Method Details

### addContact(self, listType, userHandle, groupID=0)

Used to add a contact to the desired list. A default callback is added to the returned Deferred which updates the contacts attribute of the factory with the new contact information. If you are adding a contact to the forward list and you want to associate this contact with multiple groups then you will need to call this method for each group you would like to add them to, changing the groupID parameter. The default callback will take care of updating the group information on the factory's contact list.

  Parameters:
    `listType` - (as defined by the *_LIST constants)
    `userHandle` - the user handle (passport) of the contact that is being added
    `groupID` - the group ID for which to associate this contact with. (default 0 - default group). Groups are only valid for FORWARD_LIST.
  Returns:
    A Deferred, the callback for which will be called when the server has clarified that the user has been added. The callback argument will be a tuple with 4 elements: the list type, the contact's user handle, the new list version, and the group id (if relevant, otherwise it will be None)

### addListGroup(self, name)

Used to create a new list group. A default callback is added to the returned Deferred which updates the contacts attribute of the factory.

  Parameters:
    `name` - The desired name of the new group.
  Returns:
    A Deferred, the callbacck for which will be called when the server clarifies that the new group has been created. The callback argument will be a tuple with 3 elements: the new list version (int), the new group name (str) and the new group ID (int).

### changeScreenName(self, newName)

Used to change your current screen name. A default callback is added to the returned Deferred which updates the screenName attribute of the factory and also updates the contact list version.

  Parameters:
    `newName` - the new screen name
  Returns:
    A Deferred, the callback for which will be called when the server sends an adequate reply. The callback argument will be a tuple of 2 elements: the new list version and the new screen name.

### changeStatus(self, status)

Change my current status. This method will add a default callback to the returned Deferred which will update the status attribute of the factory.

  Parameters:
    `status` - 3-letter status code (as defined by the STATUS_* constants)
  Returns:
    A Deferred, the callback of which will be fired when the server confirms the change of status. The callback argument will be a tuple with the new status code as the only element.

### checkMessage(self, message)

hook used for detecting specific notification messages

  Overrides:
    `twisted.protocols.msn.MSNEventBase.checkMessage`

### connectionMade(self)

Called when a connection is made.

This may be considered the initializer of the protocol, because it is called when the connection is completed. For clients, this is called once the connection to the server has been established; for servers, this is called after an accept() call stops blocking and a socket has been received. If you need to send any greeting or initial message, do it here.

  Overrides:
    `twisted.protocols.msn.MSNEventBase.connectionMade` (inherited documentation)

### contactOffline(self, userHandle)

Called when a contact goes offline. By default this method will update the status attribute of the contact stored on the factory.

  Parameters:
    `userHandle` - the contact's user handle

### contactStatusChanged(self, statusCode, userHandle, screenName)

Called when we're notified that a contact's status has changed. By default we will update the status attribute of the contact stored on the factory.

  Parameters:
    `statusCode` - 3-letter status code
    `userHandle` - the contact's user handle (passport)
    `screenName` - the contact's screen name

### gotContactStatus(self, statusCode, userHandle, screenName)

Called after loggin in when the server sends status of online contacts. By default we will update the status attribute of the contact stored on the factory.

  Parameters:
    `statusCode` - 3-letter status code
    `userHandle` - the contact's user handle (passport)
    `screenName` - the contact's screen name

### gotPhoneNumber(self, listVersion, userHandle, phoneType, number)

Called when the server sends us phone details about a specific user (for example after a user is added the server will send their status, phone details etc. By default we will update the list version for the factory's contact list and update the phone details for the specific user.

  Parameters:
    `listVersion` - the new list version
    `userHandle` - the contact's user handle (passport)
    `phoneType` - the specific phoneType (*_PHONE constants or HAS_PAGER)
    `number` - the value/phone number.

### gotProfile(self, message)

Called after logging in when the server sends an initial message with MSN/passport specific profile information such as country, number of kids, etc. Check the message headers for the specific values.

  Parameters:
    `message` - The profile message

### gotSwitchboardInvitation(self, sessionID, host, port, key, userHandle, screenName)

Called when we get an invitation to a switchboard server. This happens when a user requests a chat session with us.

  Parameters:
    `sessionID` - session ID number, must be remembered for logging in
    `host` - the hostname of the switchboard server
    `port` - the port to connect to
    `key` - used for authorization when connecting
    `userHandle` - the user handle of the person who invited us
    `screenName` - the screen name of the person who invited us

### listSynchronized(self, *args)

Lists are now synchronized by default upon logging in, this method is called after the synchronization has finished and the factory now has the up-to-date contacts.

### loggedIn(self, userHandle, screenName, verified)

Called when the client has logged in. The default behaviour of this method is to update the factory with our screenName and to sync the contact list (factory.contacts). When this is complete self.listSynchronized will be called.

  Parameters:
    `userHandle` - our userHandle
    `screenName` - our screenName
    `verified` - 1 if our passport has been (verified), 0 if not. (i'm not sure of the significace of this)
    (type=int)

### loginFailure(self, message)

Called when the client fails to login.

  Parameters:
    `message` - a message indicating the problem that was encountered

### logOut(self)

Used to log out of the notification server. After running the method the server is expected to close the connection.

### multipleLogin(self)

Called when the server says there has been another login under our account, the server should disconnect us right away.

### remContact(self, listType, userHandle, groupID=0)

Used to remove a contact from the desired list. A default callback is added to the returned deferred which updates the contacts attribute of the factory to reflect the new contact information. If you are removing from the forward list then you will need to supply a groupID, if the contact is in more than one group then they will only be removed from this group and not the entire forward list, but if this is their only group they will be removed from the whole list.

  Parameters:
    `listType` - (as defined by the *_LIST constants)
    `userHandle` - the user handle (passport) of the contact being removed
    `groupID` - the ID of the group to which this contact belongs (only relevant for FORWARD_LIST, default is 0)
  Returns:
    A Deferred, the callback for which will be called when the server has clarified that the user has been removed. The callback argument will be a tuple of 4 elements: the list type, the contact's user handle, the new list version, and the group id (if relevant, otherwise it will be None)

### remListGroup(self, groupID)

Used to remove a list group. A default callback is added to the returned Deferred which updates the contacts attribute of the factory.

  Parameters:
    `groupID` - the ID of the desired group to be removed.
  Returns:
    A Deferred, the callback for which will be called when the server clarifies the deletion of the group. The callback argument will be a tuple with 2 elements: the new list version (int) and the group ID (int) of the removed group.

### renameListGroup(self, groupID, newName)

Used to rename an existing list group. A default callback is added to the returned Deferred which updates the contacts attribute of the factory.

  Parameters:
    `groupID` - the ID of the desired group to rename.
    `newName` - the desired new name for the group.
  Returns:
    A Deferred, the callback for which will be called when the server clarifies the renaming. The callback argument will be a tuple of 3 elements, the new list version (int), the group id (int) and the new group name (str).

### requestSwitchboardServer(self)

Used to request a switchboard server to use for conversations.

  Returns:
    A Deferred, the callback for which will be called when the server responds with the switchboard information. The callback argument will be a tuple with 3 elements: the host of the switchboard server, the port and a key used for logging in.

### serverGoingDown(self)

Called when the server has notified us that it is going down for maintenance.

### setPhoneDetails(self, phoneType, value)

Set/change my phone numbers stored on the server.

  Parameters:
    `phoneType` - phoneType can be one of the following constants - HOME_PHONE, WORK_PHONE, MOBILE_PHONE, HAS_PAGER. These are pretty self-explanatory, except maybe HAS_PAGER which refers to whether or not you have a pager.
    `value` - for all of the *_PHONE constants the value is a phone number (str), for HAS_PAGER accepted values are 'Y' (for yes) and 'N' (for no).
  Returns:
    A Deferred, the callback for which will be fired when the server confirms the change has been made. The callback argument will be a tuple with 2 elements, the first being the new list version (int) and the second being the new phone number value (str).

### setPrivacyMode(self, privLevel)

Set my privacy mode on the server.

Note: This only keeps the current privacy setting on the server for later retrieval, it does not effect the way the server works at all.

  Parameters:
    `privLevel` - This parameter can be true, in which case the server will keep the state as 'al' which the official client interprets as -> allow messages from only users on the allow list. Alternatively it can be false, in which case the server will keep the state as 'bl' which the official client interprets as -> allow messages from all users except those on the block list.
  Returns:
    A Deferred, the callback of which will be fired when the server replies with the new privacy setting. The callback argument will be a tuple, the 2 elements of which being the list version and either 'al' or 'bl' (the new privacy setting).

### statusChanged(self, statusCode)

Called when our status changes and it isn't in response to a client command. By default we will update the status attribute of the factory.

  Parameters:
    `statusCode` - 3-letter status code

### syncList(self, version)

Used for keeping an up-to-date contact list. A callback is added to the returned Deferred that updates the contact list on the factory and also sets my state to STATUS_ONLINE.

Note: This is called automatically upon signing in using the version attribute of factory.contacts, so you may want to persist this object accordingly. Because of this there is no real need to ever call this method directly.

  Parameters:
    `version` - The current known list version
  Returns:
    A Deferred, the callback of which will be fired when the server sends an adequate reply. The callback argument will be a tuple with two elements, the new list (MSNContactList) and your current state (a dictionary). If the version you sent _was_ the latest list version, both elements will be None. To just request the list send a version of 0.

### userAddedMe(self, userHandle, screenName, listVersion)

Called when a user adds me to their list. (ie. they have been added to the reverse list. By default this method will update the version of the factory's contact list -- that is, if the contact already exists it will update the associated lists attribute, otherwise it will create a new MSNContact object and store it.

  Parameters:
    `userHandle` - the userHandle of the user
    `screenName` - the screen name of the user
    `listVersion` - the new list version
    (type=int)

### userRemovedMe(self, userHandle, listVersion)

Called when a user removes us from their contact list (they are no longer on our reverseContacts list. By default this method will update the version of the factory's contact list -- that is, the user will be removed from the reverse list and if they are no longer part of any lists they will be removed from the contact list entirely.

  Parameters:
    `userHandle` - the contact's user handle (passport)
    `listVersion` - the new list version

Class Variable Details

### factory

  Type:
    `NoneType`
  Value:

        None

Generated by Epydoc 2.0 on Sat May 15 20:07:54 2004 | http://epydoc.sf.net