Added get_link() and removed file['k'] from process_file()

Added get_link() for generating public file download link, changes by
jlejeune
This commit is contained in:
richardasaurus 2013-02-08 12:21:32 +00:00
parent e3fa3aba72
commit d8ab4d1d37
2 changed files with 32 additions and 10 deletions

29
mega.py
View file

@ -100,10 +100,31 @@ class Mega(object):
file = file['f'][0]
public_handle = self.api_request({'a': 'l', 'n': file['h']})
file_key = file['k'][file['k'].index(':') + 1:]
decrypted_key = a32_to_base64(decrypt_key(base64_to_a32(file_key), self.master_key))
return '{0}://{1}/#!{2}!{3}'.format(self.schema, self.domain, public_handle, decrypted_key)
decrypted_key = a32_to_base64(decrypt_key(base64_to_a32(file_key),
self.master_key))
return '{0}://{1}/#!{2}!{3}'.format(self.schema,
self.domain,
public_handle,
decrypted_key)
else:
raise ValueError('This function requires upload() file object')
raise ValueError('Upload() response required as input, use get_link() for regular file input')
def get_link(self, file):
'''
Get a file public link from given file object
'''
file = file[1]
if 'h' in file and 'k' in file:
public_handle = self.api_request({'a': 'l', 'n': file['h']})
file_key = file['k'][file['k'].index(':') + 1:]
decrypted_key = a32_to_base64(decrypt_key(base64_to_a32(file_key),
self.master_key))
return '{0}://{1}/#!{2}!{3}'.format(self.schema,
self.domain,
public_handle,
decrypted_key)
else:
raise errors.ValidationError('File id and key must be present')
def download_url(self, url):
path = self.parse_url(url).split('!')
@ -316,7 +337,7 @@ class Mega(object):
key = file['k'][file['k'].index(':') + 1:]
key = decrypt_key(base64_to_a32(key), self.master_key)
if file['t'] == 0:
k = file['k'] = (key[0] ^ key[4], key[1] ^ key[5], key[2] ^ key[6], key[3] ^ key[7])
k = (key[0] ^ key[4], key[1] ^ key[5], key[2] ^ key[6], key[3] ^ key[7])
file['iv'] = key[4:6] + (0, 0)
file['meta_mac'] = key[6:8]
else:

View file

@ -2,8 +2,8 @@ from mega import Mega
def test():
#user details
email = 'your@email.com'
password = 'password'
email = 'richard@richard.do'
password = 'g3tmein1988'
mega = Mega()
@ -25,16 +25,17 @@ def test():
print(m.upload('test.py'))
##get file's public link
#NOTE: currently this only works with upload() file obj, as below
file = m.upload('test.py')
print(m.get_upload_link(file))
#NOTE: if passing upload() function response use get_upload_link()
file = m.find('test.py')
#print(m.get_upload_link(file))
print(m.get_link(file))
##trash a file, by id or url
#print(m.delete('f14U0JhD'))
#print(m.delete_url('https://mega.co.nz/#!f14U0JhD!S_2k-EvB5U1N3s0vm3I5C0JN2toHSGkVf0UxQsiKZ8A'))
##search for a file in account
file = m.find('test.py')
file = m.find('somefile.doc')
if file:
#trash a file by it's id
print(m.delete(file[1]['k']))