diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2010-03-16 01:12:28 +0000 |
---|---|---|
committer | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2010-06-03 16:42:31 -0400 |
commit | fa2214d7baa9665d54e961a6a0b4e95881d8a64e (patch) | |
tree | f2546f9dd5e0fade34654b1c37caa4d442e72381 | |
parent | fbe356d90b46e00cc9b4706c0f058b50d39523e7 (diff) |
file transfer: move mandatory property checking to FT channel
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r-- | butterfly/channel/filetransfer.py | 20 | ||||
-rw-r--r-- | butterfly/channel_manager.py | 13 |
2 files changed, 17 insertions, 16 deletions
diff --git a/butterfly/channel/filetransfer.py b/butterfly/channel/filetransfer.py index 4f5f3b8..e9f94d9 100644 --- a/butterfly/channel/filetransfer.py +++ b/butterfly/channel/filetransfer.py @@ -40,18 +40,32 @@ logger = logging.getLogger('Butterfly.FileTransferChannel') class ButterflyFileTransferChannel(telepathy.server.ChannelTypeFileTransfer): def __init__(self, conn, manager, session, handle, props): - self._session = session self._handle = handle self._conn_ref = weakref.ref(conn) self._state = 0 - self._filename = session.filename - self._size = session.size self._transferred = 0 self._receiving = not props[telepathy.CHANNEL + '.Requested'] telepathy.server.ChannelTypeFileTransfer.__init__(self, conn, manager, props) + # Incoming. + if session is None: + type = telepathy.CHANNEL_TYPE_FILE_TRANSFER + filename = props.get(type + ".Filename", None) + size = props.get(type + ".Size", None) + + if filename is None or size is None: + raise telepathy.InvalidArgument( + "New file transfer channel requires Filename and Size properties") + + client = conn.msn_client + session = client.ft_manager.send(handle.contact, filename, size) + + self._session = session + self._filename = session.filename + self._size = session.size + session.connect("accepted", self.on_transfer_accepted) session.connect("progressed", self.on_transfer_progressed) session.connect("completed", self.on_transfer_completed) diff --git a/butterfly/channel_manager.py b/butterfly/channel_manager.py index f443b3d..372b335 100644 --- a/butterfly/channel_manager.py +++ b/butterfly/channel_manager.py @@ -217,17 +217,4 @@ class ButterflyChannelManager(telepathy.server.ChannelManager): logger.debug('New file transfer channel') - if session is None: - type = telepathy.CHANNEL_TYPE_FILE_TRANSFER - - if type + ".Filename" not in props or \ - type + ".Size" not in props: - raise telepathy.InvalidArgument( - "New file transfer channel requires Filename and Size properties") - - filename = props[type + ".Filename"] - size = props[type + ".Size"] - client = self._conn.msn_client - session = client.ft_manager.send(contact, filename, size) - return ButterflyFileTransferChannel(self._conn, self, session, handle, props) |