summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2010-03-16 01:12:28 +0000
committerLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2010-06-03 16:42:31 -0400
commitfa2214d7baa9665d54e961a6a0b4e95881d8a64e (patch)
treef2546f9dd5e0fade34654b1c37caa4d442e72381
parentfbe356d90b46e00cc9b4706c0f058b50d39523e7 (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.py20
-rw-r--r--butterfly/channel_manager.py13
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)