535
535
request = Unlink(self, message)
538
def handle_LIST_PUBLIC_FILES(self, message):
539
"""Handle LIST_PUBLIC_FILES message."""
540
request = ListPublicFiles(self, message)
543
def handle_CHANGE_PUBLIC_ACCESS(self, message):
544
"""Handle UNLINK message."""
545
request = ChangePublicAccess(self, message)
538
548
def handle_CREATE_UDF(self, message):
539
549
"""Handle CREATE_UDF message."""
540
550
request = CreateUDF(self, message)
1299
1309
share_id, node_id, kind, mime, extension)
1312
class ListPublicFiles(SimpleRequestResponse):
1313
"""LIST_PUBLIC_FILES Request Response."""
1319
"""List public files for the client."""
1320
user = self.protocol.user
1321
public_files = yield user.list_public_files()
1324
for node in public_files:
1325
message = protocol_pb2.Message()
1326
message.type = protocol_pb2.Message.PUBLIC_FILE_INFO
1327
message.public_file_info.share = node.volume_id or ''
1328
message.public_file_info.node = str(node.id)
1329
message.public_file_info.is_public = node.is_public
1330
message.public_file_info.public_url = str(node.public_url)
1331
self.sendMessage(message)
1335
self.length = counter
1336
response = protocol_pb2.Message()
1337
response.type = protocol_pb2.Message.PUBLIC_FILE_INFO_END
1338
self.sendMessage(response)
1340
# save data to be logged on operation end
1341
self.operation_data = 'public_files=%d' % len(public_files)
1344
class ChangePublicAccess(SimpleRequestResponse):
1345
"""CHANGE_PUBLIC_ACCESS Request Response."""
1349
expected_foreign_errors = [dataerror.NoPermission]
1351
user_activity = 'sync_activity'
1353
def _get_node_info(self):
1354
"""Return node info from the message."""
1355
node_id = self.source_message.change_public_access.node
1356
return 'node: %r' % (node_id,)
1360
"""Change the public access to a node."""
1361
share_id = self.convert_share_id(
1362
self.source_message.change_public_access.share)
1363
node_id = self.source_message.change_public_access.node
1364
is_public = self.source_message.change_public_access.is_public
1365
public_url = yield self.protocol.user.change_public_access(
1366
share_id, node_id, is_public, session_id=self.protocol.session_id)
1368
# answer the ok to original user
1369
response = protocol_pb2.Message()
1370
response.public_url = bytes(public_url)
1371
response.type = protocol_pb2.Message.OK
1372
self.sendMessage(response)
1374
# save data to be logged on operation end
1375
self.operation_data = (
1376
'vol_id=%s node_id=%s is_public=%s public_url=%r' % (
1377
share_id, node_id, is_public, public_url))
1302
1380
class BytesMessageProducer(object):
1303
1381
"""Adapt a bytes producer to produce BYTES messages."""