Skip to content

Commit

Permalink
Add "name" attribute for public links
Browse files Browse the repository at this point in the history
Ability to create links with a name and also retrieve and read the name.
  • Loading branch information
Vincent Petry committed Jan 31, 2020
1 parent 7a5c9f0 commit 5aa5b93
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
16 changes: 15 additions & 1 deletion owncloud/owncloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,15 @@ def get_displayname_owner(self):
return self.share_info['displayname_owner']
return None

def get_name(self):
"""Returns the name of a link share
:returns: name of link share
"""
if 'name' in self.share_info:
return self.share_info['name']
return None

def __str__(self):
info = ''
for k, v in self.share_info.items():
Expand Down Expand Up @@ -806,13 +815,15 @@ def share_file_with_link(self, path, **kwargs):
:param public_upload (optional): allows users to upload files or folders
:param password (optional): sets a password
http://doc.owncloud.org/server/6.0/admin_manual/sharing_api/index.html
:param name (optional): display name for the link
:returns: instance of :class:`ShareInfo` with the share info
or False if the operation failed
:raises: HTTPResponseError in case an HTTP error status was returned
"""
perms = kwargs.get('perms', None)
public_upload = kwargs.get('public_upload', 'false')
password = kwargs.get('password', None)
name = kwargs.get('name', None)

path = self._normalize_path(path)
post_data = {
Expand All @@ -823,6 +834,8 @@ def share_file_with_link(self, path, **kwargs):
post_data['publicUpload'] = str(public_upload).lower()
if isinstance(password, six.string_types):
post_data['password'] = password
if name is not None:
post_data['name'] = self._encode_string(name)
if perms:
post_data['permissions'] = perms

Expand All @@ -841,7 +854,8 @@ def share_file_with_link(self, path, **kwargs):
'id': data_el.find('id').text,
'path': path,
'url': data_el.find('url').text,
'token': data_el.find('token').text
'token': data_el.find('token').text,
'name': data_el.find('name').text
}
)
raise HTTPResponseError(res)
Expand Down
3 changes: 2 additions & 1 deletion owncloud/test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -627,12 +627,13 @@ def test_share_with_link(self, file_name):
path = self.test_root + file_name
self.assertTrue(self.client.put_file_contents(path, 'hello world!'))

share_info = self.client.share_file_with_link(path, public_upload=False, password='AnvvsP1234')
share_info = self.client.share_file_with_link(path, public_upload=False, password='AnvvsP1234', name='Test Link')

self.assertTrue(self.client.is_shared(path))
self.assertTrue(isinstance(share_info, owncloud.ShareInfo))
self.assertTrue(type(share_info.get_id()) is int)
self.assertEquals(share_info.get_path(), path)
self.assertEquals(share_info.get_name(), 'Test Link')
self.assertTrue(type(share_info.get_link()) is str)
self.assertTrue(type(share_info.get_token()) is str)

Expand Down

0 comments on commit 5aa5b93

Please sign in to comment.